0

Linux(unixODBC)でOracleODBCドライバーによって奇妙な動作が発生します。

データベースに接続しているプログラムがあります。このプログラムは、権限のないユーザーによって呼び出された場合、期待どおりに機能しますが、root権限で呼び出された場合(sudoとsuの両方でテスト)、SQLDriverConnect呼び出しでハングし、数分後に停止します(コード1を返します)。エラーメッセージか何か。

私はシステムDSNと同じ正確な構成を使用しています(違いはroot権限のみです)。さらに面白くするために、同じコードを使用してpostgreSQLデータベースに接続し、非特権ユーザーとrootユーザーの両方でまったく問題はありません(したがって、unixODBCの問題ではないようです)。

それが本当にOracleドライバの問題の原因になるのか、それともその解決策のヒントになるのか、何か考えはありますか?

Oracleドライバのバージョン:oracle-instantclient11.2-odbc-11.2.0.1.0-1.x86_64

4

1 に答える 1

0

さて、私自身の質問に答えるために、

答えは「いいえ」です。ルート権限は問題の原因ではありません。環境変数が原因です。

ユーザーrootに切り替えても、ORACLE_HOME環境変数は保持されません。これを設定すると、ドライバーが正しく動作できるようになります。

結論として、odbc構成へのドライバー自体へのフルパスがあるにもかかわらず、Oracleドライバーは、適切に機能するためにその環境変数を必要としているように見えます。さらに、それは失敗の原因についてのヒントを与えません。

要点:Oracleで何かが機能していない場合(サーバー自体からそのコンポーネントの最もリモートにあるものまで)、最初に行うことは環境を再確認することです。

于 2012-07-31T08:21:53.760 に答える