2011-11-10 73 views
0

如何限制連接到Oracle數據庫的超時?我在數據訪問層上使用devart dotConnect Express Edition。我嘗試將Connection timeout=30;添加到連接字符串中,但它沒有給出正確的結果(即使有點奇怪,第一次真正限制爲30秒,但不是所有連接嘗試)。然後我發現針對Oracle數據庫的限制ConnectionTimeout

連接超時在嘗試建立 連接之前,要等待嘗試終止嘗試並生成錯誤之前等待的時間(以秒爲單位)。 A 值爲0表示沒有限制。默認值是15秒。 僅在直接模式下可用。

from Devart site

,因爲我使用Express版本,我不能使用直接模式。然後我試着設置這個參數TNSNAMES.ORA

DB1 = 
    (DESCRIPTION = 
    (CONNECT_TIMEOUT=11) 
    (TRANSPORT_CONNECT_TIMEOUT=10) 
    (ADDRESS_LIST = 
     (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.100.8)(PORT = 1521) 
     ) 
    ) 
    (CONNECT_DATA = 
     (SERVICE_NAME = DB1) 
    ) 
) 

仍然有問題。 OK,下降並嘗試在SQLNET.ORA

SQLNET.INBOUND_CONNECT_TIMEOUT = 5 

另外一個失敗喲組連接超時!有誰知道我如何設置超時限制允許時間連接到DB1?它現在完成連接(連接失敗)大約20秒。

+0

這可能有助於http://dbaforums.org/oracle/index.php?showtopic=11745 – V4Vendetta

+0

我認爲它也是由[** Oracle **]推薦的(http://download.oracle.com/docs/ cd/B19306_01/network.102/b14213/sqlnet.htm),您還添加了'INBOUND_CONNECT_TIMEOUT_ * listener_name *'(值低於'INBOUND_CONNECT_TIMEOUT') – V4Vendetta

回答

0

我從來沒有使用過Devart的dotConnect庫,但是看看OracleConnection類,似乎應該可以在一段時間後通過調用OracleConnection.Close()來關閉連接。當您嘗試連接Open時,這應該會使您脫離阻止狀態。

這與設置超時並不完全相同,但可能起作用。此外,當您調試此代碼時,請檢查ConnectionTimeout屬性以確認超時設置是否正確。