[英]ORA-12541 TNS:no listener on Oracle.DataAccess connection open
[英]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.