0

最近、職場で Ruby の学習/使用を開始したばかりです。Oracle 10g データベースに接続し、select を実行し、結果を画面に表示するだけの非常に単純なテスト スクリプトを作成しました。これは、Solaris 10 サーバー上にあります。「アプリ」ユーザー (自動化されたスクリプトを実行するシステム ユーザー) としてスクリプトを実行すると、スクリプトは問題なく実行されます。自分で実行すると、エラーがスローされます。

oci8lib.c:98:in oci8lib.so: OCI Library Initialization Error (OCIError)
    from /usr/local/lib/ruby/site_ruby/1.8/oci8.rb:25
    from ./dbTest.rb:3:in `require'
    from ./dbTest.rb:3

私の環境変数は「アプリ」ユーザーのものと一致します。これは、ファイル/ディレクトリなどのアクセス許可の問題であると想定していますが、どこから調べればよいかわかりません。oci8.rb ファイルの 25 行目は、「require 'oci8lib_18'」ディレクティブです。oci8lib_18.so ファイルとそれにつながるディレクトリの読み取りと実行のアクセス許可を持っていますが、どのディレクトリにアクセスする必要があるかわかりませ

アクセス許可を確認する必要があるファイル/ディレクトリについて誰か提案がありますか? または、問題が何であるかについての他の考えはありますか?

更新OCI8 をサポートしている担当者にメールを送信したところ、いくつかの Oracle ディレクトリに、私のログインが必要な情報にアクセスできない権限があることがわかりました。簡単なテストとして sqlplus を実行しようとしましたが、これも失敗しました。

デイブ

4

2 に答える 2

2

アプリオリにはわかりません。他の Ruby アプリケーションは OCI を使用して実行されますか? 通常、ライブラリと補助ライブラリはすべて rwx-r-xr-x にインストールされています。正しくインストールされたライブラリでパーミッション エラーが表示されることはありません。したがって、おそらくLD_LIBRARY_PATHのエントリのように、環境に何かが欠けていると推測しています

ldd は、ランタイム イメージとほぼ同じ方法で共有ライブラリを開きます。

これが最初に機能するかどうかを確認します。

cd /path/to/library   # where oci8lib.so lives.  
ldd oci8lib.so

これにより、外部にリンクされたすべてのライブラリがエラーなしで表示されます。ldd が機能する場合は、LD_LIBRARY_PATH をチェックして、現在のパスがそこで宣言されていることを確認してください。うまくいかない場合は、ライブラリの欠落やライブラリへの非標準パスなど、何らかのインストールの問題があります。

こちらから結果をお知らせください。

于 2010-06-27T13:51:47.520 に答える
0

OCI8 をサポートしている担当者にメールで問い合わせたところ、いくつかの Oracle ディレクトリに、私のログインが必要な情報にアクセスできない権限が設定されていることがわかりました。簡単なテストとして sqlplus を実行しようとしましたが、これも失敗しました。

于 2010-10-29T17:43:53.623 に答える