今天客戶核心系統資料庫,早上九點左右,出現卡慢的現象,伴随有登入逾時的現象,趕緊登入到資料庫, 收集了AWR報告,發現有大量library cache lock等待事件,通過AWR分析和現場項目經理溝通,發現是有一個業務系統在用錯誤的密碼在頻繁登入資料庫導緻, 具體的分析如下:
資料庫AWR報告
TOP 10等待事件,有大量 library cache lock
wait分類裡,排名第一的是并發
事件模型統計,顯示大量連接配接管理耗時
PLSQL登入資料庫,通過審計資訊可以發現有大量失敗的登入資訊,如登入ip, 機器名,使用者名等。
問題分析
在 Oracle 11g 中,為了提升安全性,Oracle 引入了『密碼延遲驗證』的新特性。這個特性的作用是,如果使用者輸入了錯誤的密碼嘗試登入,那麼随着登入錯誤次數的增加,每次登入前驗證的時間也會增加,以此減緩可能對于資料庫重複的密碼嘗試攻擊。但是對于正常的系統,由于密碼的更改,可能存在某些被遺漏的用戶端,不斷重複嘗試,進而引起資料庫内部長時間的 Library Cache Lock的等待。出現這種問題,時間模型Time Model 中會顯示 connection management call elapsed time 占據了主要的DB Time,這個等待直接表明是在建立資料庫連接配接時産生的。
解決方案
這一類問題,可以通過以下指令關閉『密碼延遲驗證』這個特性,進而消除此類影響,以下指令将修改設定在參數檔案中:
ALTER SYSTEM SET EVENT ='28401 TRACE NAME CONTEXT FOREVER, LEVEL 1' SCOPE = SPFILE; 并重新開機資料庫。
在 Oracle 11g 中,為了提升安全性,Oracle 引入了『密碼延遲驗證』的新特性。這個特性的作用是,如果使用者輸入了錯誤的密碼嘗試登入,那麼随着登入錯誤次數的增加,每次登入前驗證的時間也會增加,以此減緩可能對于資料庫重複的密碼嘗試攻擊。