這兩個等待事件其實很少出現在top5列表中,一般都沒什么印象,在此整理記錄以便以后查閱。
常見的library cache lock產生的原因在《高級OWI與Oracle性能調查》這本書和下面這個文檔中有一般性的描述:
Troubleshooting Library Cache: Lock, Pin and Load Lock (Doc ID 444560.1)
一般可以理解的是alter table或者alter package/procedure會以X模式持有library cache lock,造成阻塞。
而row cache lock是在修改行高速緩沖區(dictionary cache)時產生,其中最典型的代表是Sequence(設置cache屬性)。
但是常見的問題還有以下幾種原因:
1)錯誤的用戶名密碼: 要注意查看AWR中的 “connection management call elapsed time”
2)Oracle Recyclebin 引起的 library cache lock 和 row cache lock 事件
3)BulkCopy觸發索引被禁用及liibray cache lock事件(異常情況下索引狀態無法自動恢復為啟用狀態)
4)正在執行搜集統計信息,這是大家往往會忽略的,一般會看last_ddl_time,卻忽略了last_analyzed
5)錯誤的語句解析(failed parse) 這是通常很難注意到的一個問題,因為被解析的語句往往在AWR中找不到(因為沒有通過parse),要注意查看AWR中的“failed parse elapsed time”
另外,可能就是觸發了Oracle的bug。。。