我从.net c#console应用程序对oracle 11g数据库执行查询时遇到一些错误。连接似乎已正确建立(conn.State
属性为Open
后面的行之后)
OracleConnection conn = new OracleConnection(connString);
conn.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
我可以通过 Oracle SQL Developer 连接到此数据库,使用相同的用户,并成功插入/删除行。
当尝试通过命令行连接 sqlplus 时,我得到 ORA-12560:TNS:协议适配器错误,因此我无法进行任何测试。
所有oracle服务都在运行。
命令Lsnrctl status
说:
Instance "xxx", status READY, has 1 handler(s) for this service...
任何与这两个错误相关的帮助都将受到赞赏。
答案 0 :(得分:1)
您应该尝试检查您的ODP库。这对我有用,我的内部例外是关于Oracle.DataAccess和Oracle 11g数据库之间的不兼容性。
选中link和this answer。