• 締切済み

PerlからOracleに接続

ご存知の方おられましたら、ご教示お願い致します。 昨日より、Perlのプログラムを始め、Oracleに接続するものを作成しておりまが以下のエラーがでてきて困っております。 接続部分ソース--------------------------- #!C:\パス use DBI; $dbh = DBI->connect("dbd:Oracle:データベース名", "ユーザ","パスワード"); エラー----------------------------------- install_driver(Oracle) failed: Can't locate loadable object for module DBD::Orac le in @INC (@INC contains: C:/Program Files/Perl/lib C:/Program Files/Perl/site/ lib .) at (eval 1) line 3 Compilation failed in require at (eval 1) line 3. Perhaps a module that DBD::Oracle requires hasn't been fully installed at database.pl line 5 環境--------------- OS WindowsXP pro perl ActivePerl-5.8.6.811 DBI,DBDはPPMでインストールしました。 接続先 OS Windows2003 DB oracle9 後、 use DBI; @ary = DBI->available_drivers; foreach (@ary){ print $_,"\n"; } でDBI使用できるDBDドライバを出した結果、Oracleが表示されておりました。 どうか、ご存知の方お願い致します。

  • Perl
  • 回答数1
  • ありがとう数1

みんなの回答

回答No.1

基本的な話として、接続元にOracleクライアントはインストールされているのでしょうか? 環境設定とかが見当たらなかったもので…。 入ってたらゴメンナサイ。

参考URL:
http://homepage3.nifty.com/hippo2000/perltips/perlora.htm
y_thiro
質問者

お礼

自己解決しました。perlを古いバージョンに落としてDBI,DBDをインストールしたら、Oracleに接続することができました。お騒がせしてすみませんでした。

y_thiro
質問者

補足

Oracleクライアントはインストールしております。 SQLPLUSからPerlで接続しようとしているDBに接続出来るのも確認しましたので、環境の設定に問題があるのでしょうか? あとすみません、『教えて』の("dbd:Oracle:~のdbdの部分を間違ってしまいました。("dbi:Oracle:~ということでお願いします。記載のエラーは、("dbi:Oracle:~で出たものです。 参考URLありがとうございます。もう少し調べてみます。

関連するQ&A

  • Oracleデータベースに接続

    いつもお世話になります。 DBD-Oracleモジュールを使用して接続を試みているのですが、以下のエラーになります。 「プロシージャエントリポイントPL_memory_wrapがperl58.dllからみつかりません」 とダイアログが表示され、 install_driver(Oracle) failed: Can't load 'C:/Perl/site/lib/auto/DBD/Oracle/Oracle.dll' for module DBD::Oracle: load_file:指定されたプロシージャが見つかりません。 at C:/Perl/lib/DynaLoader.pm line 230. at (eval 1) line 3 Compilation failed in require at (eval 1) line 3. Perhaps a required shared library or dll isn't installed where expected at test.pl line 16 とメッセージがでます。 スクリプトは以下です。 $hDB = DBI->connect("dbi:Oracle:host=$host;sid=$sid", $user, $passwd); $hSt = $hDB->prepare("SELECT * FROM emp"); $nRes = $hSt->execute; while(@aRes = $hSt->fetchrow) { print join("\t", @aRes), "\n"; } $hSt->finish; $hDB->disconnect; 環境: Windows2000Server ActivePerl 5.8.6 Oracle8i どなたかわかる方おりましたら、ご教示下さい。。宜しくお願い致します。

    • ベストアンサー
    • Perl
  • Perl+DBD::Oracleのエラーがわからず困っています

    jboss と申します。お世話になります。 Solaris 上で動作させていた cgi プログラムを Linux へ移行しています。 下記の動作環境にて、ブラウザより該当プログラムを実行すると、 下記のようなエラーが発生します。 ■ 動作環境 OS RedHatLinux EL4.0 Apache 1.3.37 Perl 5.8.5 DBI 1.52 DBD::Oracle 1.18 DB Oracle 8i (8.1.7) ■ Apache のエラーログ install_driver(Oracle) failed: Can't load '/usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/DBD/Oracle/Oracle .so' for module DBD::Oracle: libclntsh.so.8.0: cannot open shared object file: No such file or directory at /usr/lib/per l5/5.8.5/i386-linux-thread-multi/DynaLoader.pm line 230, <DATA> line 855. at (eval 7) line 3 Compilation failed in require at (eval 7) line 3, <DATA> line 855. Perhaps a required shared library or dll isn't installed where expected at /export/home/orasql.pl line 30 エラーログから解決方法を検索して、下記の方法は試したのですが解決しません。 ・LD_LIBRARY_PATH の追加 ・libclntsh.so.8.0 のパーミッション変更 ご存知であればご教授の程、お願い致します。

  • Oracle-Perlの接続

    Oracle と Perl の接続で悩んでいます。 申し訳ありませんが何方かご教授下さい。 OS:Red Hat Enterprise Linux ES release 4 Perl:perl v5.8.5 DB:oracle-xe-univ-10.2.0.1-1.0.i386 ドライバーは以下をインストールしてあります。 perl-DBD-Pg-1.31-6 perl-DBD-MySQL-2.9004-3.1 perl-DBI-1.40-8 以下もインストールしてみましたが駄目でした # rpm -ivh oracle-instantclient12.1-basic-12.1.0.1.0-1.i386.rpm # rpm -ivh oracle-instantclient12.1-devel-12.1.0.1.0-1.i386.rpm # rpm -ivh oracle-instantclient12.1-sqlplus-12.1.0.1.0-1.i386.rpm 環境変数の設定(.bash_profileに以下を設定) . /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh Perlでサンプルプログラムを作成して、他の同等のサーバでは正常に動作確認した プログラムを、このサーバで実行すると以下の様なエラーが出ます。 [oracle@IJYOU]$ perl test_db.pl install_driver(Oracle) failed: Can't locate DBD/Oracle.pm in @INC (@INC contains: /usr/lib/perl5/5.8.5/i386-linux-thread-multi /usr/lib/perl5/5.8.5 /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.4/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.3/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.2/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.1/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl/5.8.4 /usr/lib/perl5/site_perl/5.8.3 /usr/lib/perl5/site_perl/5.8.2 /usr/lib/perl5/site_perl/5.8.1 /usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.4/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.2/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.1/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl/5.8.4 /usr/lib/perl5/vendor_perl/5.8.3 /usr/lib/perl5/vendor_perl/5.8.2 /usr/lib/perl5/vendor_perl/5.8.1 /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl .) at (eval 1) line 3. Perhaps the DBD::Oracle perl module hasn't been fully installed, or perhaps the capitalisation of 'Oracle' isn't right. Available drivers: ExampleP, Pg, Proxy, mysql. at /home/oracle/test2_setting.pl line 18 どうか何方かお願いします。

  • Oracleのデータベースに接続できない。

    OS : WindowsXP SP2 Perl : ActivePerl 5.8.8 DBD : DBD-Oracle1.17 DB : Oracle9i PerlでOracleのDBサーバに接続ができません。 ソースは以下の通りです。 ================================================================================ #!perl -w use DBI; $dbh = DBI->connect('dbi:Oracle:test', 'scott/tiger') or die "An error occured : $@"; $dbh->disconnect; exit 0; ================================================================================ 上記コードを実行すると、connectの行でdieします。 ================================================================================ D:\test>perl ttoracle.pl DBI connect('test','scott/tiger',...) failed: ORA-12705: Cannot access NLS data files or invalid environment specified (DBD ERROR: OCISessionBegin) at ttoracle.pl line 5 An error occured : at ttoracle.pl line 5. ================================================================================ Oracleのサーバーはローカルにあり、ポートもデフォルトの設定です。 試しに、 $dbh = DBI->connect('dbi:Oracle:test@localhost:1521', 'scott/tiger') or die "An error occured : $@"; としましたが、結果は同じでした。 また、エラーの内容的に環境変数かと思いORACLE_HOMEを環境変数にセットしてみましたが、これもまた、結果は同じでした。 DBの接続については、sqlplusコマンドからであれば問題なく接続できます。 (コマンド:sqlplus scott/tiger@test) やはり、環境変数まわりの設定が問題でしょうか? よろしくお願いします。

  • PerlからDBの接続

    やまとです。こんにちは。 PerlからDBに接続しているのですが、うまく出来ません。 環境は OS : Windows2000、Perl : ActivePerl628、DB : Sybase11.0.3 DBI : DBI1.18、DBD : DBD_Sybase です。 DBDとDBIインストール後、DBに接続するとエラーが起こります。 エラーが起こる場所は(ソース抜粋記載) use DBI; (←ここは平気) $dbh=DBI->connect($database, $db_user, $db_password) or return 0;      (↑ここがエラー) 以上の箇所です。 もちろん、$database, $db_user, $db_passwordそれぞれの変数には 正しい値が入っています。 次にerror.logの内容ですが、 1つ目は、 Premature end of script headers: C:\・・・・・・・(←実行ファイル名) 2つ目は、 install_driver(Sybase) failed: DBD::Sybase initialize: cs_ctx_alloc() failed at C:/Perl/lib/DynaLoader.pm line 225. 3つ目は at ./test.cgi line 43 (←connectの場所) となっております。 色々調べてみましたが、分かりませんでした。 use DBI; は正常に動作していますので、DBDとDBIのインストールは正常に 出来ていると思うのですが・・・ 同じ経験、又は、このエラーに関して分かる方いらっしゃいましたら、 対処法、ご教授願いたいのですが。 宜しくお願いします。 #環境の情報など不足している部分がありましたら補足させて頂きます。

    • ベストアンサー
    • Perl
  • DBD::mysql インストールについて

    佐伯といいます。 windows XPでperl(v5.8.8)とmysql(DBI)の連携を 行おうと思ってインストールさせましたが 下記のようなエラーが出てきます。 なぜ出るのか原因を教えてください。 下記のURLを参考にしましたが、PPMの操作などもわかっていま せん。 http://perldoc.jp/docs/modules/DBD-mysql-2.1026/DBD/mysql/INSTALL.pod PPMがGUI化になり、コマンドがPPM起動後、コマンドが入力で きません。 ppm install DBI(入力ができない) install DBD-mysql(入力ができない) perl package managerのウィンドウが立ち上がります。 ---------------------------- C:\Program Files\Apache Group\Apache\cgi-bin>a.pl install_driver(mysql) failed: Can't locate loadable object for module DBD::mysq in @INC (@INC contains: C:/Perl/site/lib C:/Perl/lib .) at (eval 4) line 3 Compilation failed in require at (eval 4) line 3. Perhaps a module that DBD::mysql requires has

    • ベストアンサー
    • Perl
  • perlでmysqlに接続

    初歩的な質問で申し訳ありません。 perlでmysqlに接続できず困っています(OSはWindowsXPです)。 バージョンは下の通りです。 perl : ActivePerl-5.8.8.820-MSWin32-x86-274739 mysql : MySQL Server 5.0 DOSでppmを入力すると「perl package manager」というウィンドウが立ち上がり、「DBD-SQLite」と「DBI」をインストールすることができました。 サンプルコードは下の通りです。 #!C:/usr/local/Perl/bin/perl use DBI; $user = '*****'; $passwd = '*****'; $db = DBI->connect('DBI:mysql:bulletin_board:localhost', $user, $passwd); $sth = $db->prepare("SELECT * FROM data"); $sth->execute; $num_rows = $sth->rows; print "該当 $num_rows 件\n"; for ($i=0; $i<$num_rows; $i++) { @a = $sth->fetchrow_array; print "no=$a[0], title=$a[1] name=$a[2] \n"; } $sth->finish; $db->disconnect; DOSで実行すると C:\Program Files\War-ftpd\FTPRoot\usr\f-taka\cgi-bin>perl sqlTest.cgi install_driver(mysql) failed: Can't locate DBD/mysql.pm in @INC (@INC contains: C:/usr/local/Perl/site/lib C:/usr/local/Perl/lib .) at (eval 4) line 3. Perhaps the DBD::mysql perl module hasn't been fully installed, or perhaps the capitalisation of 'mysql' isn't right. Available drivers: DBM, ExampleP, File, Gofer, Proxy, SQLite, Sponge. at sqlTest.cgi line 8 というエラーが出ました。原因は何なのでしょうか。 MySQL側で設定することはあるのでしょうか。 アドバイスお願いします。

    • ベストアンサー
    • Perl
  • CGI でDBI->connectするとエラー発生

    お世話になります。 CGIでORACLEに接続しようとしたところ、Internal Server Errorが発生し 困っております。 環境: ORACLE:10.2.0 DBI:1.48 DBD:DBD-Oracle1.16 PERL:5.8.0 APACHE:2.2.0 OS:RED HAT LINUX ES 3.0 プログラム上落ちる場所: DBI->connectのところ エラーの発生する傾向: APACHEでCGIを実行した時だけ コマンドライン上で実行するとエラーは発生しない また、CGIでもDBI->connectを外すとエラーは起きない APACHEのエラーログ: install_driver(Oracle) failed: Can't load '/usr/lib/perl5/site_perl/5.8.0/i386-linux-thread- multi/auto/DBD/Oracle/Oracle.so' for module DBD:: Oracle: libnnz10.so: cannot open shared object file: No such file or directory at /usr/lib/perl5/5.8.0/i386-linux-thread- multi/DynaLoader.pm line 229 今までに試した事: ・環境変数の定義確認(LD_LIBRARY_PATH等、cgiに記述) ・環境変数の取得確認(cgi実行時に画面に表示) ・/etc/ld.so.confに$ORACLE_HOME/libを追記&ldconfig実行 ・httpd.confに環境変数のセットを記述(SetEnv) ・libclntsh.so.10.0が$ORACLE_HOME/lib以下にある事を確認 ・DBDをSTATICオプションをつけてインストール ・/usr/libや/libにOracle.soをコピー ・環境変数LD_RUN_PATH(Oracle.soのパス)を追加 一体どこが悪くて動かないのか、途方にくれております。 原因として何が考えられるか、その場合どう対処すれば良いか、 ご教示いただければ幸いです。 他にも必要な情報や、試すべき事がありましたら遠慮なくどうぞ。 よろしくお願い致します。

    • ベストアンサー
    • CGI
  • perl DBD::Pg インストールでエラー発生

    こんにちは。 以下の環境でPerl+postgreSQLのCGIを作成していますが、 DBI、DBD::PGのインストールでエラーが出てしまい大変困っています。 どうぞお力添えをお願いします。 環境---------------------- OS:CentOS VERSION = PostgreSQL 8.1.18 Perl:v5.8.8 -------------------------- ●手順 CPANより下記モジュールをダウンロードし、 ・DBI : DBI-1.609.tar.gz ・DBD::PG : DBD-Pg-2.16.1.tar.gz それぞれ ・perl Makefile.PL ・make ・make install を実行。 DBD::PGの perl Makefile.PL で pg_config のパスを聞かれるが存在しなかったため、ネットの情報から以下を実行。 yum install postgresql-devel 再度DBD::PGのperl Makefile.PL を実施しましたが、以下のようなワーニング(※1)が出力してしまい、 make,make installを実施後に動作確認のスクリプトを実行してもやはりエラーとなってしまいます。(※2) ※1 Warning: prerequisite version 0 not found. Could not eval ' package ExtUtils::MakeMaker::_version; no strict; local $VERSION; $VERSION=undef; do { use version; our $VERSION = qv('2.16.1'); }; $VERSION ' in Pg.pm: Can't locate version.pm in @INC (@INC contains: t/lib /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl/5.8.7 /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8 .) at (eval 10) line 7, <FH> line 20. BEGIN failed--compilation aborted at (eval 10) line 7, <FH> line 20. WARNING: Setting VERSION via file 'Pg.pm' failed at /usr/lib/perl5/5.8.8/ExtUtils/MakeMaker.pm line 515 Multiple copies of Driver.xst found in: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/DBI/ /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/auto/DBI/ at Makefile.PL line 263 Using DBI 1.609 (for perl 5.008008 on i386-linux-thread-multi) installed in /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/DBI/ Writing Makefile for DBD::Pg ※2 install_driver(Pg) failed: Can't locate version.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl/5.8.7 /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8 .) at /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/DBD/Pg.pm line 20. BEGIN failed--compilation aborted at /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/DBD/Pg.pm line 20. Compilation failed in require at (eval 3) line 3. Perhaps a module that DBD::Pg requires hasn't been fully installed at ./test02.pl line 5 どうぞよろしくお願いいたします。

    • ベストアンサー
    • Perl
  • Net::SSH::Perlについて

    WindowsXPにActivePerlを導入し、Net::SSH::Perlを使用してLinuxサーバにssh接続をしたいのですが、どうもうまく動いてくれません。 ■ソース #!perl use Net::SSH::Perl; use strict; my $host = "192.168.1.250"; my $user = "test"; my $pass = "testtest"; my $cmd = "id"; my $ssh = Net::SSH::Perl->new($host); $ssh->login($user, $pass); my($stdout, $stderr, $exit) = $ssh->cmd($cmd); ■Windowsのコマンドプロンプトから実行すると Can't locate Math/Pari.pm in @INC (@INC contains: D:/add_program_files/perl/site/lib D:/add_program_files/perl/lib .) at D:/add_program_files/perl/lib/Net/SSH/Perl/Util/SSH2MP.pm line 6, <GEN0> line 1. BEGIN failed--compilation aborted at D:/add_program_files/perl/lib/Net/SSH/Perl/Util/SSH2MP.pm line 6, <GEN0> line 1. Compilation failed in require at D:/add_program_files/perl/lib/Net/SSH/Perl/Util.pm line 56, <GEN0> line 1. BEGIN failed--compilation aborted at D:/add_program_files/perl/lib/Net/SSH/Perl/Kex/DH1.pm line 10, <GEN0> line 1. Compilation failed in require at D:/add_program_files/perl/lib/Net/SSH/Perl/Kex.pm line 6, <GEN0> line 1. BEGIN failed--compilation aborted at D:/add_program_files/perl/lib/Net/SSH/Perl/Kex.pm line 6, <GEN0> line 1. Compilation failed in require at D:/add_program_files/perl/lib/Net/SSH/Perl/SSH2.pm line 6, <GEN0> line 1. BEGIN failed--compilation aborted at D:/add_program_files/perl/lib/Net/SSH/Perl/SSH2.pm line 6, <GEN0> line 1. Compilation failed in require at D:/add_program_files/perl/lib/Net/SSH/Perl.pm line 52, <GEN0> line 1. 上記を解決しようにも検索にHitせず、対処に困っています。 どなたか同じ境遇の人がいらっしゃったら教えてください。