問題背景,客戶反饋DB服務器cpu異常高
1> 查看AWR報告
大量library cache lock等待
大量library cache lock導致登陸hang住,時間全部消耗在了 connection management call elapsed
先查殺等待會話
1 select 'alter system kill session ''' || a.sid || ',' || serial# || ''';' 2 from v$session a 3 where a.username='ECOLOGY' 4 AND a.STATUS='ACTIVE' 5 and event in('library cache lock','library cache: mutex X')
3>
對於正常的系統,由於密碼的更改,可能存在某些被遺漏的客戶端,不斷重復嘗試使用錯誤密碼登錄數據庫,
從而引起數據庫內部長時間的”library cache lock”或”row cache lock”的等待,這種情形非常常見。
這種現象在Oracle 10.2和11.1中體現的等待事件為:”row cache lock”,而在Oracle 11.2中體現的等待事件為:”library cache lock”。
在 Oracle 11g 中,為了提升安全性,Oracle 引入了『密碼延遲驗證』的新特性。這個特性的作用是,如果用戶輸入了錯誤的密碼嘗試登錄,
那么隨着登錄錯誤次數的增加,每次登錄前驗證的時間也會增加,以此減緩可能對於數據庫重復的口令嘗試攻擊。
(確實有錯誤的數據庫連接)
但是對於正常的系統,由於口令的更改,可能存在某些被遺漏的客戶端,不斷重復嘗試,從而引起數據庫內部長時間的 Library Cache Lock的等待,這種情形非常常見。
如果遇到這一類問題,可以通過Event 28401關閉這個特性,從而消除此類影響,以下命令將修改設置在參數文件中:
1 ALTER SYSTEM SET EVENT = '28401 TRACE NAME CONTEXT FOREVER, LEVEL 1' SCOPE = SPFILE;