web-dev-qa-db-ja.com

ORA-12557 TNS:プロトコルアダプタをロードできません

.net 4フレームワークをターゲットにしたC#Windowsフォームアプリケーションを開発しようとしています。プログラムがOracleデータベースに対してストアドプロシージャを実行し、データベースへの接続を開こうとすると、次のエラーが発生します。

ORA-12557 TNS:プロトコルアダプタをロードできません

私はこれをVisual Studio 2012で開発しており、サーバーエクスプローラーをデータベースに正常に接続させることができましたが、アプリケーションでこのエラーが発生し続けます。

私のマシンには2つのOracle 11gクライアントがあります。 1つは32ビットで、もう1つは64ビットです。異なるアプリケーションには両方が必要なので、一方を削除することはできません。また、PATH変数のOracleホームディレクトリの順序を変更してみました。現在私が接続したいのは、最初に64ビットのものです。

ODP.NETを使用してアプリケーションをデータベースに接続しており、64ビットアプリケーションからdllを参照しています。

私の知る限りでは、提案されていることを実行し、それを機能させることができませんでした。誰かがそれを助けることができればそれはいただければ幸いです。

9
James Randles

Oracle_HOME\bin内でsqlplusコマンドを実行するとスムーズに機能するため、ORA-12577エラーはWindows環境またはOracleホームPATHに関連しています。そのマシンの別々のOracle_HOMEに2つ以上のOracleインストール(データベースとコンパニオンなど)がインストールされているため、ウィンドウでOracle_HOME値を設定解除します。詳細については、次の手順に従ってください。 http://www.dba-Oracle.com/t_ora_12577.htm

13
Talha Hanjra

基本的な問題は、アプリケーションが必要とするRDBMSサーバーのインストールに存在するDLLがOracleインスタントクライアントのインストールに欠落していることです。これが、純粋にPATHの問題ではなく、Oracleホームをclient_1からdb_1に切り替えることができる理由です。

sqlplusは、両方のOracleインストールに存在する最小限のDLLセットを使用するため、どちらの状況でも機能します。

2
Tony Dare

確認することがいくつかあります。必要に応じて#3を試すことを忘れないでください。問題が解決します!

  1. すべてのOracleサービスが開始されていることを確認してください
  2. 環境変数が設定されていることを確認します(PATH、Oracle_SID = ORALOCAL、TNS_ADMIN = C:\ Dev\Oracle\product\11.2.0\dbhome\NETWORK\ADMIN)
  3. 次のようにPath環境変数の値をシフトしてみてください。「D:\ Dev\Oracle\product\11.2.0\dbhome\bin」が「D:\ dev\Oracle\product\11.2.0\client_32\bin」の前になるようにしてください順序で

フィッシュ

1
gadildafissh

私はIIS .netプロバイダーを使用しています。パスにOracle32の前にOracle64を置くことでsqlplusの問題を修正できました。これは.netの問題を修正しませんでした。この問題を解決するには、レジストリキーHKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Oracleが\ Oracle32ホームを指し、HKEY_LOCAL_MACHINE\SOFTWARE\Oracleが\ Oracle(64)ホームを指している必要があります。

0
Mark Staples