簡體   English   中英

OracleConnection.Open 拋出 ORA-12541 TNS 沒有監聽器

[英]OracleConnection.Open is throwing ORA-12541 TNS no listener

所以我通過 C# 連接到外部服務器。我剛從這里在我的機器上安裝了Oracle 11g客戶端: http://www.oracle.com/tec.network/database/windows/downloads/index-090165.88410646755788 (one) .

在閱讀了許多博客/問題后,我發現這篇文章很有用:

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!!!

我應該怎么辦? 我感謝任何意見。 謝謝!

您可以通過以下幾種方式執行此操作:使用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"; 

感謝您的輸入。 我改變了我的連接字符串,它工作正常。 這是它的樣子:

 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;";
    }

在我的例子中,這個錯誤發生在 Drive C 已滿時,影響是 Oracle Service run unstable..

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 的回答

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM