12c oracle 修改内存_Oracle 12c系列(四)|资源隔离之IO、内存、CPU

沃趣科技数据库技术专家  姚崇

一、IO 资源隔离

12cR2中,引入了两个参数MAX_IOPS和MAX_MBPS来限制PDB的物理IO。这两个参数只作用于PDB,不对CDB和非多租户环境生效。另外,这两个参数不限制redo log的写入(LGWR进程)和buffercache脏块写入磁盘(DBWR进程)。

默认情况下,这两个参数都为0。如果在PDB中这两个参数为0,CDB$ROOT中也为0,那对于PDB来讲,没有IO限制。

可以使用DBA_HIST_RSRC_PDB_METRIC来计算一个PDB合理的IO限制。当计算IO限制值时,可以参考以下列:IOPS、IOMBPS、IOPS_THROTTLE_EXEMPT和IOMBPS_THROTTLE_EXEMPT。

set linesize 400 col PDB_NAME for a10 col BEGIN_TIME for a30 col END_TIME for a30

SELECTR.SNAP_ID,

R.CON_ID,

P.PDB_NAME,

TO_CHAR(R.BEGIN_TIME, 'YYYY-MM-DHH24:MI') AS BEGIN_TIME,

TO_CHAR(END_TIME, 'YYYY-MM-D HH24:MI')AS END_TIME,

R.IOPS,

R.IOMBPS,

R.IOPS_THROTTLE_EXEMPT,

R.IOMBPS_THROTTLE_EXEMPT,

R.AVG_IO_THROTTLE FROM DBA_HIST_RSRC_PDB_METRIC R, CDB_PDBS P WHERE R.CON_ID = P.CON_ID ORDER BY R.BEGIN_TIME;

下面在同一数据库中,设置不同的max_iops和max_mbps查询相同的语句所需要的时间,可以看出max_iops和max_mbps对IO的限制是起作用的。

当数据库中出现resmgr: I/O rate limit等待事件时,可以通过如下视图查询当前IO过载影响到的sql,p1值标示当前pdb_id,出现此等待事件就需要合理的调整max_iops 和max_mbps值,避免影响到关键性业务。

SELECT H.EVENT,

H.P1 AS PDB_ID,

C.PDB_NAME,

H.SQL_ID,

TO_CHAR(H.SAMPLE_TIME, 'YYYY-MM-D HH24:MI') AS SAMPLE_TIME,

H.INSTANCE_NUMBER

FROMDBA_HIST_ACTIVE_SESS_HISTORY H

JOINCDB_PDBS C

ONC.PDB_ID = H.P1

ANDH.EVENT = 'resmgr: I/O rate limit' ORDER BY 4;

二、内存资源隔离

在12cR2的多租户环境中,PDB的SGA使用情况可能会很不均衡,有些PDB占用了大量的SGA内存,导致某些PDB得不到足够的SGA,进而影响性能。在12cR2的多租户环境中,可以控制和监控每个PDB的主机的内存情况。

丨满足条件

CDB$ROOT中初始化参数NONCDB_COMPATIBLE保持为默认的FALSE。

CDB$ROOT中初始化参数MEMORY_TARGET没有设置或设置为0,关闭内存自动管理,这是我们期待的。

丨管理PDB的SGA

命令如下:

ALTER SESSION SET CONTAINER=PDB1; ALTER SYSTEM SET SGA_TARGET = 1500M SCOPE = BOTH; ALTER SYSTEM SET SGA_MIN_SIZE = 500M SCOPE = BOTH;

在PDB级别上设置PGA_AGGREGATE_TARGET和PGA_AGGREGATE_LIMIT可以控制某个PDB的PGA使用情况。

以下两个视图用于监控PDB的内存使用情况

下面说明内存组件在数据库中设置时需要满足的条件。

PDB数量很多的情况下,使用这种CDB级别的资源计划对每个PDB进行资源限制会很麻烦。在12cR2版本中,引入了PDB Performance profile特性,来使一组PDB使用相同的resource plan,而不是一个个PDB进行配置。一些资源需求相同的PDB,可以创建一个performance profile,这些PDB只要设置一下DB_PERFORMANCE_PROFILE初始化参数,就可以使用相同的性能配置。

创建CDB资源计划:woqucdb_plan。里面包括PDB performance profile,gold、silver、bronze。

1)创建pending area

This proceduremakes changes to resource manager objects.

计划的名字是woqucdb_plan

BEGIN DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN(

plan => 'woqucdb_plan', comment => 'CDB resource plan for woqucdb'); END;

/

3)创建PDB Performance profile

创建PDBProfile, silver

BEGIN

DBMS_RESOURCE_MANAGER.CREATE_CDB_PROFILE_DIRECTIVE(

plan => 'newcdb_plan',

profile => 'silver',

shares => 2,

utilization_limit => 40,

parallel_server_limit => 40);

END;

/

使用UPDATE_CDB_AUTOTASK_DIRECTIVE

6)校验pending area

execDBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();

7)提交pending area

execDBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();

8)启用CDB资源管理

重启PDB

conn/as sysdba alterpluggable database all close immediate; alterpluggable database all open;

DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN_DIRECTIVE中shares来明确给PDB的共享值。多个PDB可以共用这一个profile。

the total number of shares is seven (3 plus 3 plus 1).

PDB的资源限制,我们既可以设置CDB resource plan同样也可以设置pdb的初始化参数控制,两者皆可。当PDB数据很多时,更建议使用CDB resource plan结合pdb performance profile使用。

我们可以通过show parameter 命令查看当前pdb的performance profile,如果是空值的话,即为默认的performanceprofile。默认的performance profile中,shares值默认为1,utilization_limit和parallel_server_limit都为100,也就是说不对当前的pdb做任何的有关cpu资源的限制。

更改默认performance profile

当一个PDB从CDB中拔出时,相应的指令默认保留,当这个PDB迁移回来,它就会继续使用这个指令。除非手工删除。

上图说明默认的pdb指令share值为1,utilization_limit为50%,parallel_server_limit 是50%,当pdb没有指定指令时,例如marketingpdb和testingpdb就会使用默认的performance profile,因此marketingpdb和testingpdb每个都拿到1和cpu使用的50%。

四、

PDBLockdown Profiles

以下通过一个简单的测试来看看这个特性的基本功能。 首先在CDB root下创建一个profile,这个profile将对全局可用,并且需要:

丨创建PDB Lockdown Profile

SQL> connect / as sysdba Connected.  SQL> CREATE LOCKDOWN PROFILE woqutech; Lockdown Profile created.  SQL> ALTER LOCKDOWN PROFILE woqutechDISABLE STATEMENT  = ('ALTER SYSTEM'); Lockdown Profile altered.

测试一下,可以看到所有的ALTER SYSTEM的操作都被禁用了:

现在测试一下,可以看到在PDB上,限制精确的生效,CHECKPOINT操作不允许被执行:

SQL>alter session set container = wxh;

禁止当前PDB所有的alter system语句

ALTER LOCKDOWN PROFILE woqutech DISABLESTATEMENT  = ('ALTER SYSTEM');

禁止PDB中XDB protocols(FTP, HTTP, HTTPS)的使用

ALTER LOCKDOWN PROFILE woqutech DISABLEFEATURE = ('XDB_PROTOCOLS')

丨删除PDB Lockdown Profile

DROP LOCKDOWN_PROFILE woqutech;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值