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
来源: http://www.linuxidc.com/Linux/2018-08/153365.htm