CPU资源隔离

数据库中,不同的PDB对主机CPU资源使用要求不同,那么我们就可以使用CDB resourceplans来管理不同pdb对CPU资源的使用。

CDB Resource Plans

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

例:

创建PDB性能配置的CDB资源计划

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

1)创建pending area

CDB$ROOT

exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
 
 
 
 
 
1
1
 
 
 
1
exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
 
 
此过程会对资源管理器对象进行更改。
对计划模式的所有更改都必须在待处理区域内完成。 待处理区域可以作为计划架构更改的“临时”区域。 
管理员创建此挂起区域,根据需要进行更改,可能验证这些更改,并且只有在提交完成后,这些更改才会生效。
 
2)创建CDB资源计划
计划的名字是woqucdb_plan
BEGIN
DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN(
plan => 'woqucdb_plan',
comment => 'CDB resource plan for woqucdb');
END;
/
 
 
 
 
 
6
6
 
 
 
1
BEGIN
2
DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN(
3
plan => 'woqucdb_plan',
4
comment => 'CDB resource plan for woqucdb');
5
END;
6
/
 
 
3)创建PDB Performance profile
创建PDBprofile, gold
BEGIN
DBMS_RESOURCE_MANAGER.CREATE_CDB_PROFILE_DIRECTIVE(
plan => 'woqucdb_plan,
profile => 'gold',
shares => 3,
utilization_limit => 100,
parallel_server_limit => 100);
END;
/
 
 
 
 
 
9
9
 
 
 
1
BEGIN
2
DBMS_RESOURCE_MANAGER.CREATE_CDB_PROFILE_DIRECTIVE(
3
plan => 'woqucdb_plan,
4
profile => 'gold',
5
shares => 3,
6
utilization_limit => 100,
7
parallel_server_limit => 100);
8
END;
9
/
 
 
创建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;
/
 
 
 
 
 
9
9
 
 
 
1
BEGIN
2
DBMS_RESOURCE_MANAGER.CREATE_CDB_PROFILE_DIRECTIVE(
3
plan => 'newcdb_plan',
4
profile => 'silver',
5
shares => 2,
6
utilization_limit => 40,
7
parallel_server_limit => 40);
8
END;
9
/
 
 
DBProfile, bronze
BEGIN
DBMS_RESOURCE_MANAGER.CREATE_CDB_PROFILE_DIRECTIVE(
plan => 'newcdb_plan',
profile => 'bronze',
shares => 1,
utilization_limit => 20,
parallel_server_limit => 20);
END;
/
 
 
 
 
 
9
9
 
 
 
1
BEGIN
2
DBMS_RESOURCE_MANAGER.CREATE_CDB_PROFILE_DIRECTIVE(
3
plan => 'newcdb_plan',
4
profile => 'bronze',
5
shares => 1,
6
utilization_limit => 20,
7
parallel_server_limit => 20);
8
END;
9
/
 
 
 
4)更新默认的PDBdirective
BEGIN
DBMS_RESOURCE_MANAGER.UPDATE_CDB_PROFILE_DIRECTIVE(
plan=> 'woqucdb_plan',
profile=> 'gold',
new_shares=> 1,
new_utilization_limit=> 10,
new_parallel_server_limit=> 20);
END;
/
 
 
 
 
 
9
9
 
 
 
1
BEGIN
2
DBMS_RESOURCE_MANAGER.UPDATE_CDB_PROFILE_DIRECTIVE(
3
plan=> 'woqucdb_plan',
4
profile=> 'gold',
5
new_shares=> 1,
6
new_utilization_limit=> 10,
7
new_parallel_server_limit=> 20);
8
END;
9
/
 
 
5)更新自动PDB directive
      使用UPDATE_CDB_AUTOTASK_DIRECTIVE
 
6)校验pending area
execDBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
 
 
 
 
 
1
1
 
 
 
1
execDBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
 
 
 
7)提交pending area
execDBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
 
 
 
 
 
1
1
 
 
 
1
execDBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
 
 
8)启用CDB资源管理
 
在CDB$ROOT中
ALTERSYSTEM SET RESOURCE_MANAGER_PLAN = 'woqucdb_plan' scope=both;
 
 
 
 
 
1
1
 
 
 
1
ALTERSYSTEM SET RESOURCE_MANAGER_PLAN = 'woqucdb_plan' scope=both;
 
 
9)在PDB中设置performanceprofile
altersession set container=PDB1;
altersystem set db_performance_profile='gold' scope=spfile;
altersession set container=PDB2;
altersystem set db_performance_profile='silver' scope=spfile;
altersession set container=PDB3;
altersystem set db_performance_profile='bronze' scope=spfile;
 
 
 
 
 
6
6
 
 
 
1
altersession set container=PDB1;
2
altersystem set db_performance_profile='gold' scope=spfile;
3
altersession set container=PDB2;
4
altersystem set db_performance_profile='silver' scope=spfile;
5
altersession set container=PDB3;
6
altersystem set db_performance_profile='bronze' scope=spfile;
 
 
 
重启PDB
conn/as sysdba
alterpluggable database all close immediate;
alterpluggable database all open;
 
 
 
 
 
3
3
 
 
 
1
conn/as sysdba
2
alterpluggable database all close immediate;
3
alterpluggable database all open;
 
 
 
也可以在PDB中一个个单独设置并重启
altersession set container=PDB4;
altersystem set db_performance_profile=gold scope=spfile;
alterpluggable database close immediate;
alterpluggable database open;
 
 
 
 
 
4
4
 
 
 
1
altersession set container=PDB4;
2
altersystem set db_performance_profile=gold scope=spfile;
3
alterpluggable database close immediate;
4
alterpluggable database open;
 
 
 
10)检查PDB的参数
altersession set container=CDB$ROOT;
selectinst_id, name, con_id, value, ispdb_modifiable from gv$system_parameter2 wherename = 'db_performance_profile' order by 1,2,3,4;
 
 
 
 
 
2
2
 
 
 
1
altersession set container=CDB$ROOT;
2
selectinst_id, name, con_id, value, ispdb_modifiable from gv$system_parameter2 wherename = 'db_performance_profile' order by 1,2,3,4;
 
 
11)检查PDB的资源管理设置
我们只需要在相应的pdb中设置db_performance_profile初始化参数即可让当前的PDB使用哪个profile了。
 
PDB的资源限制,我们既可以设置CDB resource plan同样也可以设置pdb的初始化参数控制,两者皆可。
当PDB数据很多时,更建议使用CDB resource plan结合pdb performance profile使用。
 

指令中的share参数意义

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

CPU  : utilization_limit标识一个pdb可以使用系统百分比,取值0-100. 你可以在pdb中设置cpu_count参数限制使用。

例:cpu_count=4  那么当前pdb任何情况下都不会超过4,如果utilization_limit和 cpu_count同时设置,默认取最小值

Paralle:如果初始化PARALLEL_SERVERS_TARGET 设置为200 并具,parallel_server_limit 在当前PDB设置为10%,对于PDB利用极限是20并行度(200乖以0.1)

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

31)更改默认performance profile

我们可以用下面的过程来更改默认的指令。

 
BEGIN
DBMS_RESOURCE_MANAGER. UPDATE_CDB_DEFAULT_DIRECTIVE (
PLAN =>'newcdb_plan',
NEW_COMMENT => 'CDB resourceplan for newcdb1',
NEW_SHARES => 3,
NEW_UTILIZATION_LIMIT => 100,
NEW_PARALLEL_SERVER_LIMIT => 100);
END;
/
 
 
 
 
 
9
 
 
 
 
 
1
BEGIN
2
DBMS_RESOURCE_MANAGER. UPDATE_CDB_DEFAULT_DIRECTIVE (
3
PLAN =>'newcdb_plan',
4
NEW_COMMENT => 'CDB resourceplan for newcdb1',
5
NEW_SHARES => 3,
6
NEW_UTILIZATION_LIMIT => 100,
7
NEW_PARALLEL_SERVER_LIMIT => 100);
8
END;
9
/
 
 

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

一个指令可以给多个PDB使用,但是一个PDB不能用多个指令。

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

 
 
 
 

oracle12c之三 控制PDB中CPU 资源使用的更多相关文章

  1. oracle12c之 控制pdb中sga 与 pga 内存使用

    Memory Management using Resource Manager Oracle数据库资源管理器(资源管理器)现在可以在多租户容器数据库(CDB)中管理可插入数据库(PDBs)之间的内存 ...

  2. oracle12c之二 控制PDB中SGA 与 PGA 内存使用

    oracle12c之 控制pdb中sga 与 pga 内存使用 Memory Management using Resource Manager Oracle数据库资源管理器(资源管理器)现在可以在多 ...

  3. 控制 Memory 和 CPU 资源的使用

    Resource Governor的出现,解决了在一台SQL Server实例上,管理多用户工作负载和资源隔离的需求,它允许管理员限制系统处理Requsts时所耗费的CPU 和 Memory资源的数量 ...

  4. oracle12c之一 控制-PDB的磁盘I/O(IOPS,MBPS)资源管理

    在以前的版本中,没有简单的方法来控制单个PDB使用的磁盘I / O量. 因此,某个PDB可能耗尽大量磁盘I / O,并影响同一实例中的其他PDB的性能. Oracle 12c R2可以控制PDB使用的 ...

  5. oracle12c之四 控制PDB操作 PDBLockdown Profiles

    除了IO.内存.CPU之外,还有一些限制,比如:限制在pdb中的操作命令,我们可以创建一个lockdown profile来限制对当前PDB的操作,增强某些操作的安全性.   关于PDB Lockdo ...

  6. 内存和CPU资源控制

    数据库系统的资源是指内存和CPU(处理器)资源,拥有资源的多寡,决定了数据查询的性能.当一个SQL Server实例上,拥有多个独立的工作负载(workload)时,使用资源管理器(Resource ...

  7. Java中怎么控制线程訪问资源的数量

    在API中是这样来描写叙述Semaphore 的 Semaphore 通经常使用于限制能够訪问某些资源(物理或逻辑的)的线程数目. 一个计数信号量.从概念上讲,信号量维护了一个许可集.如有必要,在许可 ...

  8. (转)WebSphere 中池资源调优 - 线程池、连接池和 ORB

    WebSphere 中池资源调优 - 线程池.连接池和 ORB 来自:https://www.ibm.com/developerworks/cn/websphere/library/techartic ...

  9. 【好书摘要】性能优化中CPU、内存、磁盘IO、网络性能的依赖

    系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长期和持续的过程,不 是说现在优化了,测试了,以后就可以一劳永逸了,也不是说书本上 ...

随机推荐

  1. Sublime Text 2 安装配置插件

    最近学习python,看网上推荐用sublime text2挺方便,就学习了一下对sublime text2 安装插件,先放在这里,以备以后查找 根据晚上资料修改,原文请看这里 Python的自动补全 ...

  2. ubuntu 16.04启用root和ssh登录

    1.设置用户密码 sudo passwd root 2.vim /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf 末尾添加:greeter-show-m ...

  3. 编写高质量代码改善C#程序的157个建议——建议112:将现实世界中的对象抽象为类,将可复用对象圈起来就是命名空间

    建议112:将现实世界中的对象抽象为类,将可复用对象圈起来就是命名空间 在我们身边的世界中,对象是什么?对象就是事物,俗称“东西”.那么,什么东西算得上是一个对象呢?对象有属性.有行为.以动物为例,比 ...

  4. Python3 MySQL 数据库连接 -PyMySQL

    Python 3  操作mysql http://www.runoob.com/python3/python3-mysql.html Python3 MySQL 数据库连接 本文我们为大家介绍 Pyt ...

  5. poj2480——Longge's problem(欧拉函数)

    Longge's problem Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9190   Accepted: 3073 ...

  6. vim command

    问题:对多行缩进 简述:向左缩是<,向右缩是> 详述:在命令状态,按v进入visual状态,选中多行,再按>,相当于一个TAB键:再选中多行,按<试试 ------------ ...

  7. Android-Style样式

    说到Style样式在,HTML+Javascript+CSS中,CSS就是样式,样式可以把很多通用到效果,统一为一个样式,达到通用的目的,也可以让代码更加简洁. 什么时候用Style样式 ? 例如:A ...

  8. shiro开启realm

    使用缓存,可以解决每次访问请求都查数据库的问题.第一次授权后存入缓存. 缓存流程 shiro中提供了对认证信息和授权信息的缓存.shiro默认是关闭认证信息缓存的,对于授权信息的缓存shiro默认开启 ...

  9. ArcGIS应用——使用Python为图斑连续编号及扩展应用

    为图斑连续编号 在GIS应用中,为图斑连续编号(编号递增)是一项常见的需求,利用ArcGIS,可以方便的实现. Python脚本如下: rec=0 def autoIncrement(): globa ...

  10. git command cheat sheet

    clone:克隆 --non-bare:(默认值)一般的克隆方式 --bare:只克隆.git目录 --mirror:只克隆.git目录,并且还保持与origin的关联,可以fetch commit: ...