2017-08-09 36 views
1

我正在使用cx_Oracle模块连接到Oracle数据库。 cx_Oracle.connect(usr,pwd,host:port/service)有没有超时?如果数据库由于某种原因而关闭,或者主机无法访问,则代码将在connect()connect()处挂起,方法需要很长时间才能返回。有什么办法来解决超时问题吗?任何方式来更改cx_Oracle默认超时?函数cx_Oracle.connect(usr,pwd,host:port/service)是否有超时?

import cx_Oracle 
try: 
    conn=cx_Oracle.connect('usr/[email protected]:port/service') 
    print "Success" 
    conn.close() 
except Exception,e: 
    print "Error:" 
    print str(e) 

回答

0

超时由Oracle Net层和OS网络处理。看看配置你的sqlnet.ora文件。要从节点OracleDB的文档引用自己(所有这些驱动程序使用了Oracle Net):

对于Oracle Net配置,环境变量TNS_ADMIN 设置为你的应用程序配置目录和创建文件 $ TNS_ADMIN/SQLNET。 ORA。在此文件中,您可以配置如下设置:SQLNET.OUTBOUND_CONNECT_TIMEOUT,SQLNET.RECV_TIMEOUT和 SQLNET.SEND_TIMEOUT。您可能还想使用一个tnsnames.ora文件来 配置数据库服务设置'ENABLE = BROKEN'。

其他Oracle Net选项对于高可用性和性能调优也可能有用。