沃趣科技数据库技术专家 姚崇
一、IO 资源隔离
默认情况下,这两个参数都为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;
二、内存资源隔离
CDB$ROOT中初始化参数NONCDB_COMPATIBLE保持为默认的FALSE。
CDB$ROOT中初始化参数MEMORY_TARGET没有设置或设置为0,关闭内存自动管理,这是我们期待的。
ALTER SESSION SET CONTAINER=PDB1; ALTER SYSTEM SET SGA_TARGET = 1500M SCOPE = BOTH; ALTER SYSTEM SET SGA_MIN_SIZE = 500M SCOPE = BOTH;
下面说明内存组件在数据库中设置时需要满足的条件。
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;
the total number of shares is seven (3 plus 3 plus 1).
PDB的资源限制,我们既可以设置CDB resource plan同样也可以设置pdb的初始化参数控制,两者皆可。当PDB数据很多时,更建议使用CDB resource plan结合pdb performance profile使用。
更改默认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
SQL> connect / as sysdba Connected. SQL> CREATE LOCKDOWN PROFILE woqutech; Lockdown Profile created. SQL> ALTER LOCKDOWN PROFILE woqutechDISABLE STATEMENT = ('ALTER SYSTEM'); Lockdown Profile altered.
现在测试一下,可以看到在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;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29990276/viewspace-2153530/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29990276/viewspace-2153530/