10

そのため、C# を介して外部サーバーに接続しています。ここから自分のマシンにOracle 11gクライアントをインストールしました: http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html (255MB 1 つ)。

多くのブログ/質問を読んだ後、この記事が役立つことがわかりました。

http://dbaspot.com/oracle-faq/444787-ora-12541-tns-no-listener.html

それで、これは正しいですか?私は何もできません。DBA はLISTENER.ORAファイルを編集する必要がありますか?

私のtnsnames.oraは次のようになります。

  TestingConnect=
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = TestHostName.us.local)(PORT = 1523))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = TEST)
    )
  )

それは私にエラーを投げています:

Oracle.DataAccess.Client.OracleConnection connection = new Oracle.DataAccess.Client.OracleConnection();

connection.ConnectionString = "Data Source=TestHostName.us.local;Persist Security Info=True;" + "User ID=tesName;Password=test";

connection.Open() //Throwing ERR!!!

私は何をすべきか?コメントをお待ちしております。ありがとう!

4

3 に答える 3

9

TNSNames ファイルを使用して、データ ソースは、ホスト名ではなく、TNSHosts エントリ名 (tnsnames.ora の最初の「=」の前のビット) を指定する必要があります。

connection.ConnectionString = "Data Source=TestingConnect;Persist Security Info=True;" + "User ID=tesName;Password=test"; 

または、TNS エントリ全体を次のように接続文字列に入れることもできます。

connection.ConnectionString = "Data Source=(DESCRIPTION = " +
    "(ADDRESS = (PROTOCOL = TCP)(HOST = TestHostName.us.local)(PORT = 1523))" +
    "(CONNECT_DATA =" + 
    "(SERVER = DEDICATED)" + 
    "(SERVICE_NAME = TEST))" + 
    ");Persist Security Info=True;User ID=tesName;Password=test"; 
于 2012-09-24T19:22:25.547 に答える
7

ご意見ありがとうございます。接続文字列を変更したところ、うまくいきました。これは次のようになります。

 private static string GetConnectionString()
    {
        return "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=TestHostName.us.local)(PORT=1523) ) )" +
               "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=CCDB)));User id=UserName; Password=Password; enlist=false; pooling=false;";
    }
于 2012-09-25T00:33:27.877 に答える
0

私の場合、ドライブCがいっぱいになったときにこのエラーが発生し、その影響はOracle Serviceの実行が不安定です..

Oracle.ManagedDataAccess.Client.OracleException (0x80004005): 
ORA-12541: TNS: No listener 
---> OracleInternal.Network.NetworkException (0x80004005): 
ORA-12541: TNS: No listener 
---> System.Net.Sockets.SocketException (0x80004005): 
No connection could be made because the target machine actively refused it {ServerIP}:1521 
at System.Net.Sockets.Socket.InternalEndConnect(IAsyncResult asyncResult) 
at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult) 
at System.Net.Sockets.TcpClient.EndConnect(IAsyncResult asyncResult) 
at OracleInternal.Network.TcpTransportAdapter.Connect(ConnectionOption conOption) 
at OracleInternal.Network.OracleCommunication.DoConnect(String tnsDescriptor) 
at OracleInternal.ServiceObjects.OracleConnectionImpl.Connect(ConnectionString cs, Boolean bOpenEndUserSession, String instanceName) 
at OracleInternal.ConnectionPool.PoolManager`3.CreateNewPR(Int32 reqCount, Boolean bForPoolPopulation, ConnectionString csWithDiffOrNewPwd, String instanceName) 
at OracleInternal.ConnectionPool.PoolManager`3.Get(ConnectionString csWithDiffOrNewPwd, Boolean bGetForApp, String affinityInstanceName, Boolean bForceMatch) 
at OracleInternal.ConnectionPool.OraclePoolManager.Get(ConnectionString csWithNewPassword, Boolean bGetForApp, String affinityInstanceName, Boolean bForceMatch) 
at OracleInternal.ConnectionPool.OracleConnectionDispenser`3.Get(ConnectionString cs, PM conPM, ConnectionString pmCS, SecureString securedPassword, SecureString securedProxyPassword) 
at Oracle.ManagedDataAccess.Client.OracleConnection.Open() 

確認してみてください。C ドライブもいっぱいになっている可能性があります。

その後、タスク マネージャーを使用して一部の oracle サービスを再起動します。Mikael Holmgren の回答を確認してください。

于 2021-10-05T14:13:59.787 に答える