2017-08-09 39 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選項對於高可用性和性能調優也可能有用。