1. 程式人生 > 其它 >【Oracle】Library Cache的基本結構

【Oracle】Library Cache的基本結構

圖解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的主要屬性:

  1. Name
    庫快取物件控制代碼對應的庫快取物件名稱
  2. Namespace
    庫快取物件控制代碼對應的庫快取物件的分組名
Namespace值 含義
CRSR SQL語句和匿名PL/SQL語句
TABL/PRCD/TYPE 表、檢視、序列、同義詞、儲存過程、函式、Type和Package
BODY/TYBD Type和Package的Body
TRGR Trigger
INDEX 索引
CLST Cluster
  1. Heap 0 Pointer
    指向子結構Heap 0的指標

Library Cache Object

Handle對應可執行物件Library Cache Object,通常以堆(Heap)的形式組成。Handle中指向第一個堆的指標為Heap 0,Heap 0中包含指向其他堆的指標資訊。

  1. dependency table
    該物件依賴的物件資訊
  2. child table
    物件的子物件;比如同一個父遊標對應的不同子游標
  3. authorization table
    物件的授權資訊
  4. type
    shared cursor,index,table,cluster,view,synonym,sequence,procedure,function,package,table body,package body,trigger等等。
  5. 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