寫這隻程式的時候,有點擔心會不會碰到網路瞬斷後 |
程式就直接拋error |
因為error 一拋, OP Center就叫修 |
值班DBA就被接到緊急叫修的電話 |
上系統一看又沒問題,徒然浪費人力而已 |
所以當時我就找了資料庫的參數設定 |
是否有相應的參數設定能控制DBLINK的連線 TIMEOUT |
結果是沒有 |
後來念頭轉到oracle net相關參數是否有相應的設定 |
就找到了SQLNET.OUTBOUND_CONNECT_TIMEOUT及 |
SQLNET.SEND_TIMEOUT,當時設了7200 |
也不確定是否work |
直到去年底, 客戶DR機房維修斷電沒接到通知 |
AP Leader剛好在用DR資料庫查詢資料連不上去 |
就撥了電話問我,有沒有接到OP Center叫修 |
當下是沒接到任何電話叫修,因為我就是當時的值班DBA |
所以我很肯定沒接到緊急叫修 |
我上了系統透過dgmgrl 指令做檢測 |
還真的是有問題,我就剛好利用這個機會測試監控程式在網路斷線時會不會有問題 |
我就把兩個參數值都調成10 |
SQLNET.OUTBOUND_CONNECT_TIMEOUT=10 |
SQLNET.SEND_TIMEOUT=10 |
再去執行Perl的監控程式 |
就拋出error了 |
今天查了metalink資料 |
Oracle Net (SQL*Net) Timeout Parameters (Doc ID 1560775.1) |
這一篇就寫得很清楚了 |
SQLNET.OUTBOUND_CONNECT_TIMEOUT |
這個參數的設定才是我所要的 |