【ASM_ORACLE】Library Cache最佳化篇(二)Library cache load lock的概念和解決辦法

Attack_on_Jager發表於2023-04-10

一、Library cache load lock的概念

Session 嘗試去查詢資料物件上的 load lock,以便能載入這個物件。

Load lock 一定是以排它模式獲得,以便沒有其它程式可以載入同一個物件。如果無法獲得 load lock,那麼 session 將等待這個事件,直到其變為可用狀態。

等待時間:3秒(PMON 會等待1秒)

 

引數:

1. object address:物件的地址

2. lock address:鎖的地址

 

二、減少Library cac he load lock的辦法

如果一個物件不在記憶體中,那麼我們不能對其申請 library cache lock。因此,需要將這個物件載入到記憶體中。然後,session 嘗試找到資料庫物件的 load lock,以便它能載入這個物件。

為了阻止多程式同時請求載入同一個物件,其它同樣請求的 session 將等待 library cache load lock 因為這個物件正在被載入到記憶體中。

 

等待 library cache load lock 是由於物件在記憶體中是不存在的。

Library cache 中的物件不存在,是由於 shared pool 過小引起的頻繁重新裝載,或太多的硬解析緣於不共享的 SQL。

 

避免這種等待的通常 建議:

1.增加 shared pool(避免 reload).

2.增加 session cached cursors(避免 cursor 被刷出 shared pool)

3.設定 cursor_sharing 為 force(減少硬解析)  --可能改變執行計劃與查詢的效能,所以要做充分的測試


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69992972/viewspace-2944753/,如需轉載,請註明出處,否則將追究法律責任。

相關文章