oracle12c中控制pdb中sga与pga内存怎么用

78次阅读
没有评论

共计 2509 个字符,预计需要花费 7 分钟才能阅读完成。

丸趣 TV 小编给大家分享一下 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

看完了这篇文章,相信你对“oracle12c 中控制 pdb 中 sga 与 pga 内存怎么用”有了一定的了解,如果想了解更多相关知识,欢迎关注丸趣 TV 行业资讯频道,感谢各位的阅读!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-24发表,共计2509字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)