こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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 のパーミッション変更


ご存知であればご教授の程、お願い致します。

投稿日時 - 2006-10-12 00:14:24

QNo.2466680

困ってます

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

(1)情報収集
ldd /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/DBD/Oracle/Oracle
.so
を実行すると、どんなメッセージが表示されますか?

(2)「LD_LIBRARY_PATHの追加」の詳細
・「LD_LIBRARY_PATHの追加」で行った作業
・LD_LIBRARY_PATHに追加した値
を教えてください。

投稿日時 - 2006-10-14 01:06:16

お礼

onosuke さん。
情報を提供頂き、ありがとうございます。


お蔭様で昨日、無事に自己解決いたしました。

解決方法は、Apache起動時に環境変数をセットする為
httpd.confへ以下の記述を追加して動作を確認しました。

LoadFile /oracle/app/oracle/product/8.1.7/lib/libclntsh.so.8.0
SetEnv LD_LIBRARY_PATH /oracle/app/oracle/product/8.1.7/lib
SetEnv ORACLE_HOME /oracle/app/oracle/product/8.1.7



ちなにみ onosuke さんから頂いた確認方法を試したところ、
以下の通りになりました。

(1)情報収集
[root@ ~]# ldd /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/DBD/Oracle/Oracle.so
libclntsh.so.8.0 => /oracle/app/oracle/product/8.1.7/lib/libclntsh.so.8.0 (0x00296000)
libwtc8.so => /oracle/app/oracle/product/8.1.7/lib/libwtc8.so (0x00111000)
libdl.so.2 => /lib/libdl.so.2 (0x00113000)
libm.so.6 => /lib/tls/libm.so.6 (0x00117000)
libpthread.so.0 => /lib/tls/libpthread.so.0 (0x00a32000)
libc.so.6 => /lib/tls/libc.so.6 (0x00dbf000)
/lib/ld-linux.so.2 (0x0027f000)

(2)「LD_LIBRARY_PATHの追加」の詳細
⇒.bashrcへ下記の情報を追加しています。
export ORACLE_HOME=/oracle/app/oracle/product/8.1.7
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export 他Oracle環境変数・・・


ldd コマンドは存じておりませんでしたので、大変参考になりました。
ご意見ありがとうございました。

投稿日時 - 2006-10-14 14:33:08

あなたにオススメの質問