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. python json.dumps输出中文问题

    json.dumps 输出的中文是"\u6211\u662f"格式的,输出中文需要指定ensure_ascii=False. json.dumps(actual,ensure_as ...

  2. SQL Server数据库大型应用解决方案总结(转)

    出处:http://tech.it168.com/a2012/0110/1300/000001300144.shtml [IT168 技术]随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计 ...

  3. ceph之osd

    一.删除osd ceph osd out 1ceph osd down 1systemctl stop ceph-osd@1ceph osd crush remove osd.1ceph osd rm ...

  4. SciTE编写lua的快捷键整理

    SciTE快捷键整理 常用键整理: Ctrl + Q: 多行注释 Ctrl + L:删除一行或多行 Ctrl+T :和上一行换位置 Ctrl+D :复制高亮选中字符. 如果没有高亮选择字符, 则复制光 ...

  5. 编写高质量代码改善C#程序的157个建议——建议140:使用默认的访问修饰符

    建议140:使用默认的访问修饰符(我不太赞成作者的这个观点,这样减少的代码基本可以忽略不计,但是,如果把访问修饰符补充完整,反而会使代码更加易读.我认为自己写代码时应该尽量加上访问修饰符,看别人写的代 ...

  6. Java中的Type

    Type是Java 编程语言中所有类型的公共高级接口(官方解释),也就是Java中所有类型的“爹”:其中,“所有类型”的描述尤为值得关注.它并不是我们平常工作中经常使用的 int.String.Lis ...

  7. DRBD 数据镜像软件

    1>DRBD介绍 1>数据镜像软件DRBD介绍  分布式块设备复制(Distributed Relicated Block Deivce,DRBD),是一种基于软件.基于网络的块复制存储解 ...

  8. 9、Semantic-UI之标题

    9.1 定义基础的标题样式   在Semantic-UI中定义了5种标题样式,h1~h5. 示例:基础样式定义 <h1 class="ui header">一级标题&l ...

  9. Linux daemon与service 学习笔记

    service 常驻在内存中的进程,且可以提供一些系统或网络功能,就是服务.   daemon service的提供需要进程的运行,所以实现service的程序我们称为daemon.   eg: 实现 ...

  10. redis 映射数据结构粗略

    [字符串] sds结构,simple dynamic string.是redis底层字符串实现,结构为: typedef char *sds; struct sdshdr { // buf 已占用长度 ...