Oracle Resource Manager

一、资源管理器(DRM)由三个要素组成:
资源消费群(resource consumer group)
资源计划(resource plan)
资源计划指令(resource plan directive)
执行与DRM有关的操作,必须具有 administer_resource_manager 系统权限。

二、资源消费群
一个用户可以隶属于多个消费群,但一个会话同一时间只能隶属于一个消费群。
ORACLE 已经预定义了4个消费群:
 
default_consumer_group :未分配消费群的用户和会话。
other_groups :当前的资源计划中没有明确指定资源分配所有消费群。任何一个资源计划中都必须包含此群。
sys_group 和 low_group :用于执行系统计划的消费群。
 
1、创建、更新、删除消费群()
 
创建:exec dbms_resource_manager.create_cosumer_group('群名','注释');
 
更新:exec dbms_resource_manager.update_consumer_group('群名','注释');
 
删除:exec dbms_resource_manager.delete_consumer_group('群名');
执行此命令后,隶属于此群的用户和会话将自动转到 default_consumer_group.
 
 
2、将用户会话分配给消费群(消费群映射)
可以基于会话的属性将会话动态分配给消费群,成为消费群映射。
 
(1)设定映射:


dbms_resource_manager.set_consumer_group_mapping(
attribute => oracle_user,
value => 'user1',
consumer_group => 'low_group');
 
如上,当会话的oracle用户属性值为user1时,就将之分配给消费群low_group。
 
(2)设定映射优先权:
由于可能会出现某会话的两个属性分别满足两个不同的映射规则,那么该服从哪个规则呢?——可以设定各个属性的优先权,服从优先级高的属性。
dbms_resource_manager.set_mapping_priority(
oracle_user => 1,
client_os_user => 2);
 
(3)动态转换会话的消费群
 基于会话的唯一标识转换消费群:(会话唯一标识由 session_id 和 session_serial 共同组成,这两个参数的值在 v$session 视图中)。
BEGIN
  DBMS_RESOURCE_MANAGER.SWITCH_CONSUMER_GROUP_FOR_SESS ('17', '12345',
   'HIGH_PRIORITY');
END;
/
 
基于会话所属的用户转换消费群:(将用户下的所有会话转换消费群)

BEGIN
  DBMS_RESOURCE_MANAGER.SWITCH_CONSUMER_GROUP_FOR_USER ('HR',
    'LOW_GROUP'); 
END;
/

用户转换自己当前会话的消费群:(使用 dbms_session 包)

SET serveroutput on
DECLARE
    old_group varchar2(30);
BEGIN
  DBMS_SESSION.SWITCH_CURRENT_CONSUMER_GROUP('BATCH_GROUP', old_group, FALSE);
END;
/
转换自己当前会话的消费群需要特定权限:
dbms_resource_manager_privs.grant_switch_consumer_group(
grantee_name => 'user1',
consumer_group => 'low_group',
grant_option => 'false');
撤销此权限:
dbms_resource_manager_privs.revoke_switch_consumer_group(
grantee_name => 'user1',
consumer_group => 'low_group');

 

三、资源计划
分为简单资源计划和复杂资源计划。
 
1、简单资源计划
有如下特点:
(1)三要素在一个过程中定义。
(2)只能分配cpu资源。
(3)只能使用emphasis方式分配cpu资源(即百分比)。
(4)分配的消费群最大数为8个。
 
创建:
dbms_resource_manager.create_simple_plan(
simple_plan => '计划名',
consumer_group1 => '消费群1',
group1_cpu => 50,
consumer_group2 => '消费群2',
group2_cpu => 50);
 
 
2、复杂资源计划
特点:
(1)三要素必须单独创建。
(2)可以嵌套子计划。
 
创建:
dbms_resource_manager.create_plan(
plan => '计划名',
comment => '注释');

如:创建一个名为DAYTIME的资源计划

BEGIN
  DBMS_RESOURCE_MANAGER.CREATE_PLAN(
   PLAN    => 'DAYTIME',
   COMMENT => 'More resources for OLTP applications');
END;
/

3、修改资源计划:
dbms_resource_manager.update_plan(
plan => '计划名',
new_属性 => '新值');

如:

BEGIN
  DBMS_RESOURCE_MANAGER.UPDATE_PLAN(
   PLAN => 'DAYTIME',
   NEW_COMMENT => '50% more resources for OLTP applications');
END;
/

4、删除资源计划:
dbms_resource_manager.delete_plan('计划名');

dbms_resource_manager.delete_plan_cascade('计划名');
加上cascade参数,删除计划内的要素。

如:

BEGIN
  DBMS_RESOURCE_MANAGER.DELETE_PLAN(PLAN => 'great_bread');
END;
/

 

四、计划指令 
创建:
dbms_resource_manager.create_plan_directive(
plan => '计划名',
group_or_subplan => '消费群或子计划',
资源限制参数);

如:创建一个用于OLTP群,如果超过10000的I / O请求或超过2500字节的数据转移资源计划到LOW_GROUP。会话调用完成后返回到其原始组

BEGIN
  DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE (
   PLAN                => 'DAYTIME',
   GROUP_OR_SUBPLAN    => 'OLTP',
   COMMENT             => 'OLTP group',
   MGMT_P1             => 75,
   SWITCH_GROUP        => 'LOW_GROUP',
   SWITCH_IO_REQS      => 10000,
   SWITCH_IO_MEGABYTES => 2500,
   SWITCH_FOR_CALL     => TRUE);
END;
/

注:可以为子计划创建指令,但只能分配cpu资源。
 
更新:
dbms_resource_manager.update_plan_directive(
两个必需参数,
new_属性 => '新值');

如:

BEGIN
  DBMS_RESOURCE_MANAGER.CLEAR_PENDING_AREA();
  DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
  DBMS_RESOURCE_MANAGER.UPDATE_PLAN_DIRECTIVE(
         PLAN             => 'SIMPLE_PLAN1',
         GROUP_OR_SUBPLAN => 'MYGROUP1',
         NEW_COMMENT      => 'Higher priority'
        );
  DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
END;
/


删除:
dbms_resource_manager.delete_plan_directive(
两个必需参数);
 

参考官网:http://docs.oracle.com/cd/E11882_01/server.112/e25494/dbrm.htm#ADMIN11842

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值