oracle数据库pdb管理-控制并监控PDB的内存使用(包括SGA和PGA) (Doc ID 2493524.1)

Copyright (c) 2020, Oracle. All rights reserved. Oracle Confidential.
使用Resource Manager进行内存管理
管理PDB的SGA
管理PDB的PGA
监控PDB的内存使用

适用于:
Oracle Database Cloud Exadata Service - 版本 N/A 和更高版本
Oracle Database Cloud Service - 版本 N/A 和更高版本
Oracle Database - Enterprise Edition - 版本 12.2 BETA1 和更高版本
Oracle Database Cloud Schema Service - 版本 N/A 和更高版本
Oracle Database Exadata Express Cloud Service - 版本 N/A 和更高版本
本文档所含信息适用于所有平台

section 1使用Resource Manager进行内存管理
Oracle Database Resource Manager 能够管理在multitenant容器数据库(CDB)中的不同可插拔数据库(PDB)的内存使用。这个
特性可以帮助维持CDB中所有PDB的性能,以避免某个PDB获取太多资源导致其他PDB资源紧张。
多个初始化参数可以控制PDB的内存使用。Oracle Database Resource Manager能够让多个PDB之间更灵活的共享内存。
在12.2,Resource Manager可以:
1. 限制某一个PDB的内存使用
2. 指定某一个PDB,确保其得到一定数量的内存
3. 指定某一个PDB最大可用内存
还有其他选项:
指定不同的PDB可以获得不同的系统资源,这样重要的PDB可以获得更多的资源。限制某一个PDB的CPU使用
限制某一个PDB可用的并行进程的数量
对不同的PDB,使用PDB性能profile(详细请参考2171135.1)
限制不同的session连接到单个PDB时的资源使用
限制指定PDB的IO
监控PDB的资源使用
只有当以下条件被满足时,PDB的内存使用才能被控制:
1. 初始化参数NONCDB_COMPATIBLE在CDB中被设成false.
2. 初始化参数MEMORY_TARGET在CDB中没有设置或者被设成0.
section 2管理PDB的SGA
在一个CDB中,不同PDB的SGA需求是不同的。如果没有SGA的控制机制,一个活动PDB可能会消耗主要的SGA空间导致其他
PDB资源紧张,从而产生性能问题。
从12cR2开始,我们能够控制一个PDB的最大SGA使用量,同时也能指定一个PDB最小需要的SGA。
1. SGA_TARGET 参数可以用来限制一个PDB的最大SGA使用量.
PDB的SGA_TARGET 参数必须小于等于CDB的SGA_TARGET设置。


2. SGA_MIN_SIZE参数可以用来指定一个PDB最小需要的SGA。
SGA_MIN_SIZE参数用来保证PDB的SGA永远不会小于该设定值。
SGA_MIN_SIZE(最小保证SGA)参数的设置指导如下;
必须小于等于CDB的SGA_TARGET参数的50%
必须小于等于PDB的SGA_TARGET参数的50%
所有PDB的SGA_MIN_SIZE值的总和必须小于等于CDB的SGA_TARGET参数的50%
最佳实践是设置所有PDB的SGA_MIN_SIZE值的总和小于等于CDB的SGA的大小。


只有当CDB的SGA_TARGET被设成非0值时,PDB的SGA_TARGET和SGA_MIN_SIZE才会起作用。
SGA_TARGET和SGA_MIN_SIZE参数都可以在PDB级别设置。
alter session set container=PDB1;
ALTER SYSTEM SET SGA_TARGET = 1500M SCOPE = BOTH;
ALTER SYSTEM SET SGA_MIN_SIZE = 500M SCOPE = BOTH;
为了更多精细控制,你也可以设置其他,像DB_CACHE_SIZE (保证PDB的Buffer Cache大小)和SHARED_POOL_SIZE (保证
PDB的Shared Pool大小)。
所有这些参数只有当PDB的SGA需要控制时才被使用。没有必要一定要设置它们。
管理PDB的PGA
为了控制PDB的PGA使用,参数PGA_AGGREGATE_TARGET和PGA_AGGREGATE_LIMIT可以在PDB级别被设置。
PGA_AGGREGATE_TARGET设定是一个目标。所以Oracle数据库会尽量控制PGA使用不超过这个值,但有时仍然会超过。
为了指定一个强制限制,你可以使用PGA_AGGREGATE_LIMIT初始化参数。Oracle数据库会确保PGA的使用不超过这个值,
一旦超过,数据库会终止有最大untunable PGA内存分配的session。


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设定PDB任何时候最大可使用的PGA的大小。
PGA_AGGREGATE_LIMIT 参数的设置指导如下;
必须小于等于CDB的PGA_AGGREGATE_LIMIT值。
必须大于等于PDB的PGA_AGGREGATE_TARGET值。
如之前提到的,所有参数都可以在PDB级别设置。
alter session set container=PDB1;
ALTER SYSTEM SET PGA_AGGREGATE_LIMIT = 500M SCOPE = BOTH;
ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 300M SCOPE = BOTH;
section 3监控PDB的内存使用
以下视图可以帮助你监控PDB的内存使用:
V$RSRCPDBMETRIC
V$RSRCPDBMETRIC_HISTORY
V$RSRCPDBMETRIC视图提供PDB当前资源消耗的统计信息,包括 CPU使用,并行执行,I/O,内存使用等。历史数据可以通
过DBA_HIST_RSRC_PDB_METRIC 视图访问, 其中包含Automatic Workload Repository (AWR) 快照.
COLUMN PDB_NAME FORMAT A10
SELECT r.CON_ID, p.PDB_NAME, r.SGA_BYTES, r.PGA_BYTES, r.BUFFER_CACHE_BYTES,
r.SHARED_POOL_BYTES FROM V$RSRCPDBMETRIC r, CDB_PDBS p WHERE r.CON_ID = p.CON_ID;
SGA_BYTES - PDB当前SGA使用量
BUFFER_CACHE_BYTES - PDB当前buffer cache使用量
SHARED_POOL_BYTES - PDB当前shared pool使用量
PGA_BYTES - PDB当前PGA使用量
参考
Didn't find what you are looking for?

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值