itsource

Oracle Connection.ORA-12541 TNS 수신기가 없습니다.

mycopycode 2023. 8. 20. 10:46
반응형

Oracle Connection.ORA-12541 TNS 수신기가 없습니다.

그래서 저는 C#을 통해 외부 서버에 연결하고 있습니다.는 방금 Oracle 11g 클라이언트를 http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html (255MB)에서 컴퓨터에 설치했습니다.

많은 블로그/질문을 읽은 후 이 기사가 유용하다는 것을 알게 되었습니다.

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

이 오류는 드라이브 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 드라이브도 가득 찼을 것입니다.

그런 다음 작업 관리자를 사용하여 일부 오라클 서비스에 대해 다시 시작합니다. Mikael Holmgren의 응답 확인

언급URL : https://stackoverflow.com/questions/12571379/oracleconnection-open-is-throwing-ora-12541-tns-no-listener

반응형