【Oracle】Library Cache的基本結構
阿新 • • 發佈:2021-06-17
圖解Library Cache
結構說明
Hash Bucket
庫快取相當於一個Hash Table由一組Hash Bucket構成,每個Hash Bucket儲存相同雜湊值的所有庫快取物件控制代碼,不同庫快取物件控制代碼間用指標連線,構成庫快取物件控制代碼連結串列(Library Cache Object Handles)
Hash Bucket主要用於可執行物件的快速定位和存取
Library Cache Object Handle
庫快取物件控制代碼(Library Cache Object Handle)是儲存庫快取物件的一種結構,這些控制代碼包含了物件的相關屬性,例如:名稱、標記、指向物件記憶體地址的指標等。
Object Handle的主要屬性:
- Name
庫快取物件控制代碼對應的庫快取物件名稱 - Namespace
庫快取物件控制代碼對應的庫快取物件的分組名
Namespace值 | 含義 |
---|---|
CRSR | SQL語句和匿名PL/SQL語句 |
TABL/PRCD/TYPE | 表、檢視、序列、同義詞、儲存過程、函式、Type和Package |
BODY/TYBD | Type和Package的Body |
TRGR | Trigger |
INDEX | 索引 |
CLST | Cluster |
- Heap 0 Pointer
指向子結構Heap 0的指標
Library Cache Object
Handle對應可執行物件Library Cache Object,通常以堆(Heap)的形式組成。Handle中指向第一個堆的指標為Heap 0,Heap 0中包含指向其他堆的指標資訊。
- dependency table
該物件依賴的物件資訊 - child table
物件的子物件;比如同一個父遊標對應的不同子游標 - authorization table
物件的授權資訊 - type
shared cursor,index,table,cluster,view,synonym,sequence,procedure,function,package,table body,package body,trigger等等。 - data blocks
data block也是一個指標,指向了data heap
Data heap
Data heap即存放真實資料的地方,主要包含庫快取物件的SQL語句、執行計劃、執行文字等資訊。
Heap | Usage |
---|---|
0 | Object |
1 | Source |
2 | Diana |
3 | Pcode |
4 | Mcode |
5 | Errors |
6 | SQL Context |
7 | Free |
8 | Subordinate Heaps |