zoukankan      html  css  js  c++  java
  • Oracle数据库资源管理器

     一、资源管理器(DRM)由三个要素组成:
    资源消费群(resource_consumer_group)
    资源计划(resource_plan)
    资源计划指令(resource_plan_directive)
     
    执行与DRM有关的操作,必须具有 administer_resource_manager 系统权限。
     
    二、未决域(pending area)
    DRM的三个要素都必须创建在未决域中,然后提交。
     
    1、创建未决域
    exec dbms_resource_manager.create_pending_area;
     
    2、验证未决域
    exec dbms_resource_manager.validate_pending_area;
    验证域中的内容是否合法。
     
    3、清除未决域
    exec dbms_resource_manager.clear_pending_area;
    执行此命令后,未决域以及未决域中的内容一起被删除。
     
    4、提交未决域
    exec dbms_resource_manager.submit_pending_area;
    执行此命令后,相当于执行了验证、提交、清除三个命令。未决域中的内容会被存储在数据字典中,等待启用。
     
    三、资源消费群
    一个用户可以隶属于多个消费群,但一个会话同一时间只能隶属于一个消费群。
    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 视图中)。
    dbms_resource_manager.switch_consumer_group_for_sess(
    session_id => '56',
    session_serial => '106',
    consumer_group => 'low_group');
     
    基于会话所属的用户转换消费群:(将用户下的所有会话转换消费群)
    dbms_resource_manager.switch_consumer_group_for_user(
    user => 'user1',
    consumer_group => 'low_group');
     
    用户转换自己当前会话的消费群:(使用 dbms_session 包)
    dbms_session.switch_current_consumer_group(
    new_consumer_group => 'low_group');
     
    转换自己当前会话的消费群需要特定权限:
    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 => '注释');
     
    3、修改资源计划:
    dbms_resource_manager.update_plan(
    plan => '计划名',
    new_属性 => '新值');
     
    4、删除资源计划:
    dbms_resource_manager.delete_plan('计划名');
    dbms_resource_manager.delete_plan_cascade('计划名');
    加上cascade参数,删除计划内的要素。
     
    五、计划指令
     
    创建:
    dbms_resource_manager.create_plan_directive(
    plan => '计划名',
    group_or_subplan => '消费群或子计划',
    资源限制参数);
     
    注:可以为子计划创建指令,但只能分配cpu资源。
     
    更新:
    dbms_resource_manager.update_plan_directive(
    两个必需参数,
    new_属性 => '新值');
     
    删除:
    dbms_resource_manager.delete_plan_directive(
    两个必需参数);
     

       

  • 相关阅读:
    git 初始化与使用
    java解析webservice服务返回的xml
    计算时间天数
    XML和Java bean转换
    微信公众号-企业
    docker安装openldap
    webservice使用
    idea解决冲突插件
    Java--JSON嵌套JSON中带''字符的解决方式
    微信公众号开发
  • 原文地址:https://www.cnblogs.com/weixun/p/3022954.html
Copyright © 2011-2022 走看看