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

    1.了解Resource Manager术语

    Resource Manager的3个基本结构:资源使用者组、资源计划(和辅助计划)、资源计划向导。 > 使用数据库资源管理器可以帮助管理资源 (如 CPU 和还原空间) 在用户会话间的分配方式。继续执行以下步骤可以配置资源管理器: > - **使用者组** 定义根据资源处理需求将用户会话分组的使用者组。资源计划将资源分配给使用者组。指定一些用户和角色, 他们可以在每个使用者组中开始会话, 或者将他们的会话切换到每个使用者组。 > - **使用者组映射** 定义使用者组映射规则, 此规则基于会话属性 (例如用户名, 服务名, 模块名等) 将用户会话映射到使用者组。要解决映射冲突, 请按映射规则优先级的顺序应用映射规则。 > - **计划** 定义资源计划, 其中包含指定将资源分配给使用者组方式的指令。例如, 对于每个计划, 需要指定分配给每个使用者组的 CPU 资源百分比。可以选择指定其他限制, 如使用者组中的会话可以执行或保持空闲的最大时间, 或者会话在自动切换到低优先级的使用者组之前消耗的 CPU 或 I/O 资源的最大量。 > - **设置** 查看当前活动的资源计划。激活资源计划。 > - **性能统计信息** 监视当前启用的资源计划的统计信息。按使用者组监视 CPU 和 I/O 的使用情况, 并按使用者组监视资源管理器为 CPU 执行的约束数。

    2.了解Resource Manager分配方法

    Resource Manager可以根据以下一个或多个度量单位分配资源: - CPU使用率 - 并行程度 - 活动会话数量 - 撤销空间 - CPU时限 - 闲置时间限制

    3.了解DEFAULT_PLAN

    资源计划resource_manager_plan参数: ``` SQL> show parameter resource

    NAME TYPE VALUE


    resource_limit boolean FALSE
    resource_manager_cpu_allocation integer 2
    resource_manager_plan string
    --设置resource_manager_plan为DEFAULT_PLAN
    SQL> alter system set resource_manager_plan = 'DEFAULT_PLAN';

    System altered.

    SQL> show parameter resource

    NAME TYPE VALUE


    resource_limit boolean FALSE
    resource_manager_cpu_allocation integer 2
    resource_manager_plan string DEFAULT_PLAN

    如果未设置resource_manager_plan参数的值,则不在实例中执行资源管理。
    <h1 id="4">4.新建资源计划</h1>可以使用PL/SQL包“DBMS_RESOURCE_MANAGER”的CREATE_PLAN、UPDATE_PLAN和DELETE_PLAN来创建、更新和删除资源计划。
    

    --为资源管理器会话创建等待区(必须要创建)
    exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();

    --新建资源计划,名称DEVELOPERS
    execute DBMS_RESOURCE_MANAGER.CREATE_PLAN -
    (Plan => 'DEVELOPERS', -
    Comment => 'Developers, in Development database');

    <h1 id="5">5.创建使用者组</h1>
    新建两个使用者组:ONLINE_DEVELOPERS和BATCH_DEVELOPERS
    

    --新建使用者组 ONLINE_DEVELOPERS
    exec DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP -
    (Consumer_Group => 'ONLINE_DEVELOPERS', -
    Comment => 'Online developers');

    --新建使用者组 BATCH_DEVELOPERS
    exec DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP -
    (Consumer_Group => 'BATCH_DEVELOPERS', -
    Comment => 'Batch developers');

    <h1 id="6">6.了解资源分配方法</h1>
    创建两个计划指导,以便将75%的CPU资源分配给ONLINE_DEVELOPERS组,25%的CPU资源分配给BATCH_DEVELOPERS组。
    另外,将ONLINE_DEVELOPERS组并行性限制为12,将BATCH_DEVELOPERS组的并行性限制为6。
    

    --ONLINE_DEVELOPERS
    exec dbms_resource_manager.create_plan_directive -
    (Plan => 'DEVELOPERS', -
    Group_or_subplan => 'ONLINE_DEVELOPERS', -
    Comment => 'Online developers', -
    Cpu_p1 => 75, -
    Cpu_p2 => 0, -
    Parallel_degree_limit_p1 => 12);

    --BATCH_DEVELOPERS
    exec dbms_resource_manager.create_plan_directive -
    (Plan => 'DEVELOPERS', -
    Group_or_subplan => 'BATCH_DEVELOPERS', -
    Comment => 'Batch developers', -
    Cpu_p1 => 25, -
    Cpu_p2 => 0, -
    Parallel_degree_limit_p1 => 6);

    --OTHER_GROUPS(计划中必须包含此组)
    exec dbms_resource_manager.create_plan_directive -
    (Plan => 'DEVELOPERS', -
    Group_or_subplan => 'OTHER_GROUPS', -
    Comment => 'Everyone else', -
    Cpu_p1 => 0, -
    Cpu_p2 => 100, -
    Parallel_degree_limit_p1 => 6);

    --验证是否有效
    exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
    --提交更改
    exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
    --清除更改
    exec DBMS_RESOURCE_MANAGER.CLEAR_PENDING_AREA();

    <h1 id="7">7.分配使用者组</h1>
    将用户合理分配到使用者组中,
    将JINGYU分配到Online_developers使用者组:
    

    --赋予JINGYU切换到ONLINE_DEVELOPERS使用者组的权限
    exec dbms_resource_manager_privs.grant_switch_consumer_group -
    (grantee_name=>'jingyu', -
    consumer_group=>'ONLINE_DEVELOPERS', -
    grant_option=>true);

    --将JINGYU分配到Online_developers使用者组
    exec DBMS_RESOURCE_MANAGER.SET_INITIAL_CONSUMER_GROUP -
    ('JINGYU','ONLINE_DEVELOPERS');

    将ALFRED分配到Batch_developers使用者组:
    

    --赋予ALFRED切换到BATCH_DEVELOPERS使用者组的权限
    exec dbms_resource_manager_privs.grant_switch_consumer_group -
    (grantee_name=>'alfred', -
    consumer_group=>'BATCH_DEVELOPERS', -
    grant_option=>true);

    --赋予用户administer_resource_manager权限
    begin
    dbms_resource_manager_privs.grant_system_privilege(
    grantee_name=>'alfred',
    privilege_name=>'administer_resource_manager',
    admin_option=>true);
    end;
    /

    --将alfred分配到Batch_developers使用者组
    exec DBMS_RESOURCE_MANAGER.SET_INITIAL_CONSUMER_GROUP -
    ('alfred','BATCH_DEVELOPERS');

    <h1 id="8">8.激活资源计划</h1>
    

    --激活资源计划 DEVELOPERS
    alter system set resource_manager_plan = 'DEVELOPERS';

    <h1 id="9">9.了解Resource Manager视图</h1>
    

    DBA_RSRC_PLANS -> 资源计划和每个计划的状态
    DBA_RSRC_PLAN_DIRECTIVES -> 资源计划指导
    DBA_RSRC_CONSUMER_GROUPS -> 资源计划使用者组
    DBA_RSRC_CONSUMER_GROUP_PRIVS -> 使用者组用户和角色分配
    DBA_RSRC_GROUP_MAPPINGS -> 会话属性与使用者组之间的使用者组映射
    DBA_RSRC_MAPPING_PRIORITY -> 资源映射优先级
    DBA_USERS -> INITIAL_RSRC_CONSUMER_GROUP列包含用户的初始化使用者
    DBA_RSRC_MANAGER_SYSTEM_PRIVS -> 被授予DBMS_RESOURCE_MANAGER包上的权限的用户

    查看每个计划的状态和特点:
    

    set linesize 120
    col plan for a30
    col status for a30
    select plan, status, num_plan_directives, mandatory from dba_rsrc_plans;

    status列值为PENDING说明计划尚未经过验证并成功提交;
    mandatory列值为YES说明无法删除计划。

    <h1 id="10">10.监视Resource Manager</h1>
    下面3个动态性能视图显示Resource Manager的统计信息:
    

    v$rsrc_consumer_group -> 按使用者组列出的CPU使用率
    v$sysstat -> 所有会话的CPU使用率
    v$sesstat -> 按会话列出的CPU使用率

    还可以通过EM的Resource Manager下statistics连接查询CPU、I/O、等待时间和排队会话的明细。
    <h1 id="11">Reference</h1>
    - OCP 认证考试指南 (1Z0-053)[M]. 清华大学出版社, 2010.
  • 相关阅读:
    基于学习的方法决定在哪些分支节点上运行heuristic算法
    深度学习结合树搜索求解集装箱预翻箱问题
    elementui el-tree 树节点颜色修改
    循环更新swingui并想动态看到效果,请使用invokeAndWait
    SwingWorker.publish 方法注释写的很清楚, 尤其是标红处
    GridBagConstraintsHelper 源码
    WeKeyWord微信关键字自动回复工具(一)初版
    WeFilesReciver微信文件接收助手(二)新增搜索
    模仿Cheat Engine内存搜索——(Sunday算法)
    WCarer微信客服工具(一)初版
  • 原文地址:https://www.cnblogs.com/jyzhao/p/5151168.html
Copyright © 2011-2022 走看看