zt_oracle shared pool分配機制_4031

wisdomone1發表於2013-03-28

/*****shared pool 分配機制chunk_bucket********/


/*******檢視共享池各種狀態chunk的分配資訊*********/
SQL> select  ksmchcls,sum(ksmchsiz) from x$ksmsp group by ksmchcls;
 
KSMCHCLS SUM(KSMCHSIZ)
-------- -------------
recr          28187472
freeabl       38621808
R-freea           3840
perm          63683040
R-free        11866000
R-perm        20537992
free            891296
R-recr         3977192
 
8 rows selected

/****oracle在啟動時並未把全部的共享池大小分配給共享,而是留了一部分,待以後再分配,防止出現過多的碎片和後來大的共享請求*****/
SQL> select * from v$sgastat where name like '%free%' and name='free memory';
 
POOL         NAME                            BYTES
------------ -------------------------- ----------
shared pool  free memory                 218738520

/*******超過5000byte大小的共享池請求才會使用/
一般,最大的Chunks也不會超過5000bytes的.假如有請求更大的Chunks的話,Oracle用的是另外一種方式,即下面說的Reserved Shared Pool,
而不會到Shared Pool Free Lists和LRU Lists中尋找適應的或者更大SIZE的Chunks來給它使用.
SQL> show parameter reser
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
shared_pool_reserved_size            big integer 8M

小結:1,先在free list找可用的chunk
     2,其次在lru list找可用的chunk
     3,最後在reserved list找可用的chunk

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

相關文章