【ASK_ORACLE】Row Cache Enqueue鎖之概念篇
一、何為 Row Cache Enqueue 鎖?
行快取(Row Cache)或資料字典快取(Data Dictionary Cache)是儲存資料字典資訊的共享池的記憶體區域。 row cache 儲存資料時並不是以資料塊的形式,而是以行的形式。row cache enqueue 鎖是在資料字典行的鎖。此 enqueue 是關於特定資料字典物件的。這就是所謂的 enqueue 型別,可以在檢視 V$rowcache 中找到。
官方給出的獲取該鎖資訊的指令碼:
set pages 1000 column cache# format 99999 column name format a33 column latch# format 999999 select distinct s.kqrstcln latch#,r.cache#,r.parameter name,r.type,r.subordinate# from v$rowcache r,x$kqrst s where r.cache#=s.kqrstcid order by 1,4,5;
二、"WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK!" 警告資訊是什麼意思?
當試圖去獲得 row cache 鎖時,這種等待事件將被使用。
當 row cache 衝突發生時,如果不能在一個預定的時間週期內得到 enqueue,將在user_dump_dest 或 background_dump_dest 目錄下生成一個跟蹤檔案(
這兩個目錄的選擇取決於是使用者還是後臺程式建立的跟蹤檔案。alert.log 通常會相應的更新警告訊息和跟蹤檔案的位置)。
資料庫檢測到核心資源被持有太久並通知DBA,從而讓這種情況可以得到解決。這也可能使資料庫掛起或變慢alert.log 的訊息和生成的跟蹤檔案包含以下資訊:
> WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK! <<<
如果不能立即獲取 rowcache entry 鎖,那麼進入一個迴圈,先釋放 row cache 物件閂鎖,等待上述等待事件,重新獲得閂鎖,然後再次嘗試獲取 rowcache 鎖。在單例項模式,會重複 1000次直到程式報錯“WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK”。在 RAC 環境會一直重複,直到不能獲得例項鎖或者被中斷。
Systemstate dump 可以提供一些有用的資訊診斷爭用的原因。
注:
The "WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK!" 當達到閾值會引發這個訊息,因此, 如果未達到閾值它不會被引發。由此可知,對於不太嚴重的問題,即使具有相同的原因,也可以不輸出該訊息。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69992972/viewspace-2952681/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【ASK_ORACLE】Library Cache概念篇(二)之Library Cache Pin的定義Oracle
- mutex,latch,lock,enqueue hash chains latch基礎概念MutexENQAI
- 【ASK_ORACLE】資料泵由於”Streams AQ: Enqueue Blocked On Low Memory" 問題變慢OracleENQBloC
- [20211026]關於18c row cache mutex.txtMutex
- [20211031]18c row cache mutext等待事件探究.txtMutex事件
- 精通MySQL之鎖篇MySql
- 【ASM_ORACLE】Library Cache最佳化篇(二)Library cache load lock的概念和解決辦法ASMOracle
- Flutter 之 Row、Column詳解Flutter
- 【ASK_ORACLE】Library cache pin 與 library load lock的關係和區別Oracle
- Oracle Enqueue WaitsOracleENQAI
- oracle enqueue(zt)OracleENQ
- oracle enqueue typeOracleENQ
- Flutter 佈局控制元件篇-->Row、ColumnFlutter控制元件
- Oracle RAC Cache Fusion 系列一:基礎概念Oracle
- InnoDB從內分析之Row(一)
- Flutter之Row/Column用法詳解Flutter
- sql 開發篇一 之 表鎖查詢及解鎖SQL
- 當刪除oracle資料庫user時發生row cache lock 等待事件Oracle資料庫事件
- What is the "WF - Contention'' Enqueue ?ENQ
- Library Cache最佳化篇(一)降低library cache lock和library cache pin的方法
- 【ASK_ORACLE】Oracle Data Guard(二)物理備庫的概念和優勢Oracle
- 【ASK_ORACLE】Oracle Data Guard(四)快照備庫的概念和優勢Oracle
- 【ASK_ORACLE】Oracle Data Guard(三)邏輯備庫的概念和優勢Oracle
- Java併發程式設計之鎖機制之引導篇Java程式設計
- MySQL/InnoDB中,樂觀鎖、悲觀鎖、共享鎖、排它鎖、行鎖、表鎖、死鎖概念的理解MySql
- Flutter 基礎佈局Widgets之Row詳解Flutter
- 分散式鎖概念及實現方式分散式
- IO之核心buffer----"buffer cache"
- 品味Spring Cache設計之美Spring
- 資料庫篇:mysql事務原理之MVCC檢視+鎖資料庫MySqlMVC
- MySQL裡的found_row()與row_count()MySql
- 推薦系統概念篇
- ORACLE ROW MOVEMENTOracle
- A. Arrow a Row
- 框架篇:分散式鎖框架分散式
- 模擬mode=4 and name='TX'的enqueueENQ
- 面經手冊 · 第16篇《碼農會鎖,ReentrantLock之公平鎖講解和實現》ReentrantLock
- Lock鎖之重入鎖與讀寫鎖