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. MicroRNA 详解

    MicroRNA研究历史和方法   Views 88 1Report

  2. [GO]设备文件的使用

    package main import ( "os" "fmt" ) func main() { os.Stdout.WriteString("are ...

  3. Matlab图像处理教程

    虽然典型算法的开发是基于理论支持的,但这些算法的实现几乎总是要求参数估计,并常常进行算法修正与候选求解方案的比较. MATLAB由LINPACK和EISPACK项目开发,最初用于矩阵处理.今天,MAT ...

  4. WCF服务编程 读书笔记——第1章 WCF基础(1)

    第1章 WCF基础 本章主要介绍WCF的基本概念.构建模块以及WCF体系架构,以指导读者构建一个简单的WCF服务.从本章的内容中,我们可以了解到WCF的基本术语,包括地址(Address).绑定(Bi ...

  5. elasticsearch CriteriaQuery查询例子

    elasticsearch CriteriaQuery java API实例应用 CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteri ...

  6. memcached整理の分布式集群算法

    memcached如何实现分布式? memcached是一个“分布式内存对象缓存系统”,然而memcached并不像mongodb那样,允许配置多个节点,且节点之间“自动分配数据”,就是说memcac ...

  7. XE5安卓手机要求

    1 ARMv7 的 CPU v6 的肯定不支持.2 黑屏是因为你的手机 CPU 不支持 NEON 特性.或者是 T2 CPU.3 系统版本  2.3.3 到 2.3.9 或者 4.0 以上.4. SD ...

  8. docker+selenium Grid搭建自动化分布式测试环境

    自动化测试需要考虑到兼容性的时候,之前的做法是每个执行机上安装不同版本的浏览器,实际上这样做会很浪费硬件资源,现在有了docker容器化技术,让一切变得简单. 工具清单: 语言:python 2.7 ...

  9. [javascript]模块化&命名污染—from 编程精解

    最近看了编程精解里面的模块化一章,很受启发. /****************/ 在开发的实际过程中,根据页面或者逻辑布局,js代码可以按照功能划分为若干个区块:数据交互.表单验证.页面布局等等模块 ...

  10. 一个简单的C#+arcgis的非数据库版例子

    1.首先新建一个winform的项目. 2.确保C#工具箱包含ESRI的相关控件,如果没有就需要安装SDK. 如果VS中依旧不存在esri控件解决方案如下,以VS2013为例: (1)打开注册表,定位 ...