又是一個11g新特性導致的問題。 這個新特性很早之前就研究過,也在其他客戶處碰到過類似的問題。從11g開始,如果一個用戶使用不正確的密碼嘗試登錄數據庫,那么隨著登錄失敗次數的增加,每次登錄驗證前延遲等待的時間也會增加: SQL SET TIME ON:30:54 SQL :
又是一個11g新特性導致的問題。
這個新特性很早之前就研究過,也在其他客戶處碰到過類似的問題。從11g開始,如果一個用戶使用不正確的密碼嘗試登錄數據庫,那么隨著登錄失敗次數的增加,每次登錄驗證前延遲等待的時間也會增加:
SQL> SET TIME ON :30:54 SQL> :30:58 SQL> conn test/test Connected. :31:25 SQL> :31:25 SQL> conn test/a conn test/a conn test/a conn test/a conn test/a conn test/a conn test/a conn test/test conn test/a ERROR: ORA-01017: invalid username/password; logon denied Warning: You are no longer connected TO ORACLE. :31:26 SQL> ERROR: ORA-01017: invalid username/password; logon denied :31:26 SQL> ERROR: ORA-01017: invalid username/password; logon denied :31:26 SQL> ERROR: ORA-01017: invalid username/password; logon denied :31:27 SQL> ERROR: ORA-01017: invalid username/password; logon denied :31:29 SQL> ERROR: ORA-01017: invalid username/password; logon denied :31:32 SQL> ERROR: ORA-01017: invalid username/password; logon denied :31:36 SQL> Connected. :31:36 SQL> ERROR: ORA-01017: invalid username/password; logon denied Warning: You are no longer connected TO ORACLE. :31:36 SQL>
可以看到,從第三次密碼錯誤的登錄開始,每次延遲時間開始變成2秒、3秒并一次遞增。既是這時提供正確的密碼登錄,會話也會延遲N秒,然后進行驗證。不過一旦驗證成功,會將失敗計數清零,后續的錯誤登錄會重新計數。
不過這只是單一會話嘗試失敗登錄的情況,如果同時存在兩個會話,則很快延遲驗證時間就會達到10秒、20秒的級別。如果同時大量的連接采用錯誤的密碼,基本上這個用戶的登錄就會被完全HANG住。
客戶的數據庫就出現了類似的情況,數據庫版本為11.2.0.3 RAC,在數據庫中觀察,三個節點每個節點的會話數都接近SESSIONS參數設置的上線3000,而后臺高級日志已經出現了ORA-20錯誤。由于客戶系統的關鍵用戶只有一個,因此幾乎所有的會話都無法正常的登錄到數據庫中。而在數據庫上發現,大量的會話用戶名、EVENT以及PROGRAM都信息都是NULL,這說明這些會話還沒有完成驗證成功的登錄到數據庫中。而當前主機的CPU資源使用并不高,那些已經連接到數據庫中的進程也可以正常的工作。嘗試使用SYSTEM等其他用戶發現可以迅速的登錄數據庫。所有這一切都已經說明,當前有一個或多個中間件服務器在使用錯誤的密碼連接數據庫,由于密碼延遲驗證的策略,導致所有后續的連接都被HANG住。
任何一個新特性帶來性能或功能上的提高的同時,也會引入相關的bug,顯然這個安全性上的考慮,有時候也會帶來驗證的性能問題,甚至成為用來攻擊數據庫的一種手段。
之前幾次并沒有給出徹底屏蔽密碼延遲驗證的手段,而Oracle最強大之處就在于幾乎所有的功能和特性都有對應的開關,通過設置EVENTS 28401可以屏蔽密碼延遲驗證:
SQL> ALTER SYSTEM SET EVENT = ‘28401 TRACE NAME CONTEXT FOREVER, LEVEL 1’ SCOPE = SPFILE;
設置該事件后重啟數據庫即可。
原文地址:密碼延遲驗證導致的系統HANG住, 感謝原作者分享。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com