2012-01-05 3 views
2

.net C# 콘솔 응용 프로그램에서 Oracle 11g 데이터베이스에 대한 쿼리를 실행하는 중 오류가 발생했습니다. 연결이 제대로 확립 될 것으로 보인다ORA-12170 : 쿼리 실행시 TNS : 연결 시간 초과가 발생했습니다.

OracleConnection conn = new OracleConnection(connString); 
conn.Open(); 

합니다 (conn.State 속성은 다음 행 후 Open이다) 그러나 어떤 쿼리를 실행할 때 나는 (타임 아웃을 연결 발생했습니다)를 ORA-12170 오류가 발생합니다. 다른 데이터베이스에 대한 동일한 테스트가 제대로 작동하므로 문제가 코드에 있다고 생각하지 않습니다.

Connection.State is Open 

Error: ORA-12170: TNS:Connect timeout occurred 
    at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure, Boolean bCheck) 
    at Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, Object src) 
    at Oracle.DataAccess.Client.OracleConnection.Open() 
    at Proj1.DB.OracleProj1.GetOpenConn(String connString) in C:\WorkTV\src\projects\OracleProj1\source\Core\Proj1Core\DB\OracleProj1.cs:line 560 
    at Proj1.DB.OracleProj1.AddLog(DateTime start, DateTime end, Int32 userID, String ip, Int32 assetID, Int32 segmentID, Int32 flowID, Int32 permissionID, Int32 permissionSubtype, Int32 resultCode, String resultDescription, String resultLog) in C:\WorkTV\src\projects\OracleProj1\source\Core\Proj1Core\DB\OracleProj1.cs:line 3513 
    at Proj1.Util.Tool.AddLog(Int32 resultCode, String resultDescription, String resultLog) in C:\WorkTV\src\projects\OracleProj1\source\Core\Proj1Core\Util\Tool.cs:line 177 
    at Proj1.DB.OracleProj1.ExecuteNonQuery(OracleConnection conn, String query, String& log, Proj1Object Proj1Object) in C:\WorkTV\src\projects\OracleProj1\source\Core\Proj1Core\DB\OracleProj1.cs:line 638 
    at Proj1.DB.OracleProj1.TestConnection(String connString) in C:\WorkTV\src\projects\OracleProj1\source\Core\Proj1Core\DB\OracleProj1.cs:line 315 

Connection.State is Closed 

나도 같은 사용자와, 오라클 SQL 개발자을 통해이 데이터베이스에 연결하고 삽입 할 수 있습니다/성공적으로 행을 삭제합니다.

내가 ORA-12560 얻을 SQLPLUS 축복하는 명령 줄과 연결을 시도 : TNS : 프로토콜 어댑터 오류를, 그래서 어떤 테스트를 할 수 없습니다.

모든 Oracle 서비스가 실행 중입니다.

명령 Lsnrctl status는 말한다 :

Instance "xxx", status READY, has 1 handler(s) for this service... 

모두 오류의 관련 어떤 도움을 이해할 수있을 것이다.

+0

나는 CLIENT_HOME \ network \ admin 폴더에 tnsnames.ora를 복사하고 서비스 별명을 지정하는 sqlplus에 연결하여 ORA-12560을 해결했습니다. sqlplus user/password @ alias – klautern

+0

여기에 게시 할 때 내부 예외를보십시오. . –

+0

질문에 대한 예외 전체를 추가했습니다. – klautern

답변

1

ODP 라이브러리를 확인해보십시오. 이것은 저에게 효과적이었습니다. 내면에서 Oracle.DataAccess와 Oracle 11g Database 간의 비 호환성에 대한 예외였습니다.

체크 아웃 linkthis answer

관련 문제