8

この質問をしなければならないなんて信じられませんが、一生 Oracle 11g データベースに接続することはできません。

以下は使用中に機能しますSystem.Data.OracleClientが、明らかにこれは減価償却されています。まったく同じコードを使用するOracle.DataAccess.OracleClientと、次のエラーが発生します

{"ORA-12545: Connect failed because target host or object does not exist"}

これが私のコードです

using (OracleConnection con = new OracleConnection("Data Source=orac;User Id=SYSTEM; Password=Pass;"))
        {
            con.Open();
            Console.WriteLine("Connection opened");

            OracleCommand cmd2 = new OracleCommand("SELECT * FROM SYSTEM.TABLE", con);
            OracleDataReader oracleDataReader = cmd2.ExecuteReader();

            while (oracleDataReader.Read())
            {
                Console.WriteLine(oracleDataReader[0]);
            }
        }

誰かが私が間違っていることを手伝ってくれますか?

Oracle.DataAccess.dllをロードするには、プログラムを 32 ビットに変更する必要がありました。

これは、使用する正しいライブラリでもありますか???

ありがとう

編集

tnsnames.ora ファイルを次のように変更します。

# tnsnames.ora Network Configuration File: 
C:\app\UserName\product\11.2.0\dbhome_3\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

ORAC =
 (DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1522))
(CONNECT_DATA =
  (SERVER = DEDICATED)
  (SERVICE_NAME = orac.example.com)
)
 )

LISTENER_ORAC =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1522))

アップデート

Oracle Sql developer を使用して接続を試みました。これは、TNS 接続タイプを使用している限り機能しますが、基本接続タイプを使用すると機能しません。

また、私のサービスには2つの呼び出しがあることに気付きました

OracleOraDb11g_home1TNSListener OracleOraDb11g_home2TNSListener

orac dbhome は home3 だと思いますが、これが問題なのでしょうか?? もしそうなら、誰かが私がそれを修正する方法を知っていますか?

ありがとう

UPDATE HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ には、2 つのプロパティ (デフォルト) と inst_loc があります。「KEY_OraDb11g_home1」および「KEY_OraDb11g_home2」と呼ばれるいくつかのフォルダがあります。これらの両方には、ORACLE_HOME というプロパティが含まれています。

KEY_OraDb11g_home1 - ORACLE_HOME = C:\app\UserName\product\11.2.0\dbhome_2 KEY_OraDb11g_home2 - ORACLE_HOME = C:\app\UserName\product\11.2.0\dbhome_3

home1 の Db の SID は OracleDev と呼ばれるものです。これはかなり前にインストールした可能性がありますが、問題が発生している場合は、今は必要ありません。

ありがとう

4

4 に答える 4

2

編集

他のことを試してみましょう。

Oracle ホームがPATH 環境変数で定義されていないか、レジストリに設定されていないため、ODP.NET が Oracle ホームの場所を認識していない可能性があります。

PATH を調べて、Oracle ホーム ディレクトリと「Oracle Home\bin」が含まれていることを確認します。レジストリについては、 を探しますHKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0その中に、文字列値 で呼び出されるキーがあるはずですORACLE_HOME。Oracleホームを指していることを確認してください。

于 2013-08-15T12:34:05.390 に答える
0

C:\windows\system32\drivers\etc の下にあるホスト ファイルを確認します。特に、マシンが VM であり、ローカル ホストの IP アドレスが変更される可能性がある場合は、VM の IP アドレスが静的でない場合に確認します。必要に応じて、そのファイルのローカル ホストの IP を変更します

于 2014-08-25T13:08:37.237 に答える