oracle12c之 控制pdb中sga 與 pga 記憶體使用

張衝andy發表於2018-03-02

Memory Management using Resource Manager

Oracle資料庫資源管理器(資源管理器)現在可以在多租戶容器資料庫(CDB)中管理可插入資料庫(PDBs)之間的記憶體使用。這一特性有助於在CDB中維護所有PDBs的效能,確保所有的PDBs都不會佔用更多資源,從而導致其他PDBs上的資源緊縮。


前提只有滿足以下條件,才能控制PDBs的記憶體使用:
1、在CDB根中,noncdb_compatible初始化引數設定為false。
2、MEMORY_TARGET初始化引數沒有設定,或者在CDB根中設定為0(0)。

In 12.2, Resource Manager allows to:

1、限制特定PDB的記憶體使用。
2、指定為特定PDB保證的記憶體數量。
3、指定一個特定的PDB可以使用的最大記憶體數量。


along with other options such as:

指定不同的PDBs應該接收系統資源的不同份額,以便將更多的資源分配給更重要的PDBs。
限制特定PDB的CPU使用。
限制特定PDB可以使用的並行執行伺服器的數量。
為不同的PDB使用PDB效能配置檔案(詳細資訊請參閱2171135.1)
限制連線到單個PDB的不同會話的資源使用。
限制特定PDBs生成的I/O。
監控PDBs的資源使用情況。


一、 Managing SGA for PDBs:

容器資料庫中各種PDBs的SGA需求將是不同的。如果沒有控制SGA使用的機制,活躍的PDB可以消耗SGA空間的大多數,從而導致資源限制給其他PDBs,從而影響它們的效能。

1.從12cR2中,我們可以控制在容器資料庫中PDB可以使用的最大SGA,以及需要為PDB分配的最小SGA。
SGA_TARGET引數可用於限制PDB的最大SGA大小。PDB中的SGA_TARGET設定必須小於或等於CDB根中的SGA_TARGET設定。
只有當SGA_TARGET初始化引數設定為CDB根中的非零值時,PDB中的SGA_TARGET和SGA_MIN_SIZE設定才會被強制執行。

alter session set container=PDB1;
ALTER SYSTEM SET SGA_TARGET = 1500M SCOPE = BOTH;
ALTER SYSTEM SET SGA_MIN_SIZE = 500M SCOPE = BOTH;


2.可以使用SGA_MIN_SIZE引數指定PDB的最小SGA大小。
SGA_MIN_SIZE引數確保了PDB的SGA永遠不會低於指定的值。

設定SGA_MIN_SIZE(最小保證SGA)引數的指導原則是:
它必須小於或等於CDB根中SGA_TARGET設定的50%。
它必須小於或等於PDB中SGA_TARGET設定的50%。
所有PDBs的SGA_MIN_SIZE設定的總和必須小於或等於CDB根中SGA_TARGET設定的50%。

說明:最佳實踐是將所有PDBs的SGA_MIN_SIZE值的總和限制為CDB的SGA大小的50%或更少。

二、 Managing PGA for PDBs

為了控制PDB的PGA使用,可以在PDB級別設定引數PGA_AGGREGATE_TARGET和PGA_AGGREGATE_LIMIT。
PGA_AGGREGATE_TARGET設定是一個目標。因此,Oracle資料庫嘗試將PGA記憶體使用限制在目標上,但是使用可以超過設定的次數。要指定對PGA記憶體使用的硬限制,可以使用PGA_AGGREGATE_LIMIT初始化引數。Oracle資料庫確保PGA大小不超過這個限制。如果資料庫超過了限制,那麼資料庫就會中止具有最高可調PGA記憶體分配的會話的呼叫。


PGA_AGGREGATE_TARGET引數設定PDB的目標聚合PGA大小。

設定PGA_AGGREGATE_TARGET的指導原則是:
它必須小於或等於在CDB級別上設定的PGA_AGGREGATE_TARGET值。
它必須小於或等於CDB級別上的PGA_AGGREGATE_LIMIT初始化引數值的50%。
它必須小於或等於PDB中的PGA_AGGREGATE_LIMIT值的50%。

設定PGA_AGGREGATE_LIMIT的指導原則是:
它必須小於或等於CDB根中PGA_AGGREGATE_LIMIT的設定。
它必須大於或等於兩倍於PDB中PGA_AGGREGATE_TARGET的設定。

alter session set container=PDB1;
ALTER SYSTEM SET PGA_AGGREGATE_LIMIT = 700M SCOPE = BOTH;
ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 300M SCOPE = BOTH;


-- 檢視 PDB 的 current SGA 與 PGA 的使用情況
COLUMN PDB_NAME FORMAT A10;
SELECT r.CON_ID, p.PDB_NAME, r.SGA_BYTES/1024/1024 SGA_M, r.PGA_BYTES/1024/1024 PGA_M, 
r.BUFFER_CACHE_BYTES/1024/1024 BUFFER_CACHE_M, r.SHARED_POOL_BYTES/1024/1024 SHARED_POOL_M 
FROM V$RSRCPDBMETRIC r, CDB_PDBS p WHERE r.CON_ID = p.CON_ID;

CON_ID PDB_NAME SGA_M PGA_M BUFFER_CACHE_M SHARED_POOL_M
---------- ---------- ---------- ---------- -------------- -------------
3 PDB01 34.3150578 7.44008255 28.828125 5.48693275

 

參考:

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

相關文章