oracle12c之 控制pdb中sga 與 pga 記憶體使用
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle Exadata與SGA快取記憶體CQOracle快取記憶體
- 【CDB】怎樣修改PDB的記憶體引數記憶體
- Oracle記憶體結構(一)----SGA的區域資訊(轉)Oracle記憶體
- JVM 之 記憶體分配與回收策略JVM記憶體
- Swift 記憶體管理之 weak 與 unownedSwift記憶體
- Go:記憶體管理與記憶體清理Go記憶體
- 聊聊 記憶體模型與記憶體序記憶體模型
- 剖析記憶體中的程式之祕記憶體
- 【JVM之記憶體與垃圾回收篇】堆JVM記憶體
- iOS開發之記憶體與快取iOS記憶體快取
- Oracle12c 針對單個pdb的全備與恢復Oracle
- 記憶體洩漏定位工具之 valgrind 使用記憶體
- vue使用中的記憶體洩漏Vue記憶體
- 【JVM之記憶體與垃圾回收篇】物件例項化記憶體佈局與訪問定位JVM記憶體物件
- JS中的棧記憶體、堆記憶體JS記憶體
- 記憶體管理兩部曲之實體記憶體管理記憶體
- [轉載] Java直接記憶體與堆記憶體Java記憶體
- JVM——記憶體洩漏與記憶體溢位JVM記憶體溢位
- JVM讀書筆記之垃圾收集與記憶體分配JVM筆記記憶體
- JavaScript之記憶體溢位和記憶體洩漏JavaScript記憶體溢位
- QT之共享記憶體QT記憶體
- 記憶體的分配與釋放,記憶體洩漏記憶體
- 【JVM之記憶體與垃圾回收篇】JVM與Java體系結構JVM記憶體Java
- Swoole 原始碼分析——記憶體模組之記憶體池原始碼記憶體
- 記憶體管理兩部曲之虛擬記憶體管理記憶體
- 【記憶體洩漏和記憶體溢位】JavaScript之深入淺出理解記憶體洩漏和記憶體溢位記憶體溢位JavaScript
- JAVA記憶體區域與記憶體溢位異常Java記憶體溢位
- ArkTS 的記憶體快照與記憶體洩露除錯記憶體洩露除錯
- 如何檢視linux系統中空閒記憶體/實體記憶體使用/剩餘記憶體Linux記憶體
- 什麼是Java記憶體模型(JMM)中的主記憶體和本地記憶體?Java記憶體模型
- AntDB記憶體管理之記憶體上下文之記憶體上下文機制是怎麼實現的記憶體
- JavaScript之記憶體空間JavaScript記憶體
- MongoDB 如何使用記憶體?為什麼記憶體滿了?MongoDB記憶體
- MongoDB如何使用記憶體?為什麼記憶體滿了?MongoDB記憶體
- 堆外記憶體及其在 RxCache 中的使用記憶體
- JavaScript中記憶體使用規則--堆和棧JavaScript記憶體
- Go Ballast 讓記憶體控制更加絲滑GoAST記憶體
- docker的資源控制(CPU、記憶體、IO)Docker記憶體