设为首页 收藏本站
查看: 1657|回复: 0

[经验分享] oracle resource manager的使用

[复制链接]

尚未签到

发表于 2018-9-10 13:39:30 | 显示全部楼层 |阅读模式
  本人发的第一篇博客,实在不高兴慢慢写了,就转载了,这篇转载的写得还是很清楚的,基本把官方文档都准确地翻译出来了,反正自己也是用了很久了。
  转载自:http://blog.chinaunix.net/uid-26190993-id-3586933.html
  Oracle Database Resource Manager,以下简称DBRM
  Resource Manager 提供了一种优化数据库资源分配的有效办法,相对于在OS层面进行资源分配,Resource Manager 拥有更精细的控制粒度,以及更小的资源消耗,并且解决了一些OS层面无法解决的资源分配问题。
  一,基本概念
  . Simple View Of Resource Plan
  http://blog.chinaunix.net/attachment/201304/14/26190993_1365935993m70J.bmp
  . Resource consumer group (资源用户组)
  A group of sessions that are grouped together based on resource requirements. The Resource Manager allocates resources to resource consumer groups, not to individual sessions.
  资源管理器将资源统一分配给资源用户组,而不是某一个具体的会话,当会话建立时会根据自身属性映射到不同的用户组,并从中申请系统资源
  . Resource plan (资源计划)
  A container for directives that specify how resources are allocated to resource consumer groups. You specify how the database allocates resources by activating a specific resource plan.
  一个数据库可以有多个Resource Plan,但是同一时刻只能有一个Plan状态为Active(由初始化参数 resource_manager_plan 决定),关联多个 Resource Plan directive
  . Resource plan directive (资源计划指令)
  Associates a resource consumer group with a particular plan and specifies how resources are to be allocated to that resource consumer group.
  创建一个计划指令后就决定了系统资源如何分配给一个资源用户组
  二,如何创建一个资源计划
  1. Create Pending Area
  All changes to the plan schema must be done within a pending area. The pending area can be thought of as a "scratch" area for plan schema changes.
  所有关于 Resource Manager 组件创建和更改都必须在 Pending Area 中完成,文档说可以理解为一个“草稿区”

  •   SQL>exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA

  •   PL/SQL procedure successfully completed.
  2. Create A Resource Planing
  创建资源计划时需要注意的一点是如果 sub_plan 参数指定为 TRUE,那么这个计划只能作为子计划使用,并且不需要为 OTHER_GROUPS 创建 Plan Directive

  •   SQL>BEGIN
  •   2 DBMS_RESOURCE_MANAGER.CREATE_PLAN(
  •   3 plan => 'PLAN1',
  •   4 comment => 'Test Plan...',
  •   5 sub_plan =>FALSE);                   --默认值即为 FALSE
  •   6 END;
  •   7 /

  •   PL/SQL procedure successfully completed.
  3. Create Consumer Groups
  根据实际需求创建所需要的用户组,需要注意的是虽然这一步并没有创建 OTHER_GROUPS 用户组,但是后面必须为 OTHER_GROUPS 用户组创建相对应的
  Plan Directive

  •   SQL>BEGIN
  •   2 DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
  •   3 consumer_group => 'GROUP_OLTP',
  •   4 comment => 'Group of OLTP USERS...',
  •   5 mgmt_mth => 'ROUND-ROBIN');--该用户组内各会话的CPU资源采取轮询的分配方法
  •   6 END;
  •   7 /

  •   PL/SQL procedure successfully completed.

  •   SQL>BEGIN
  •   2 DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
  •   3 consumer_group => 'GROUP_OLAP',
  •   4 comment => 'Group of OLAP USERS...',
  •   5 mgmt_mth => 'ROUND-ROBIN');
  •   6 END;
  •   7 /

  •   PL/SQL procedure successfully completed.
  4. Map
Sessions To Consumer Groups  根据会话的登录和运行属性建立该会话和资源用户组的映射关系,可以使用过程 SET_INITIAL_CONSUMER_GROUP 通过“Username”设置用户的初始用户资源组,该过程在11gR1被弃用后,改为使用过程 SET_CONSUMER_GROUP_MAPPING 通过“Session Attribute”来映射用户组,这里所说的会话属性包括: oracle_user,client_os_user,client_program,client_machine,module_name ...
  当会话的多个属性映射发生冲突时,会根据每个属性的优先级来决定最终映射关系,使用这个过程来调整属性的优先级:SET_CONSUMER_GROUP_MAPPING_PRI

  •   SQL>BEGIN
  •   2 DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(
  •   3 attribute => 'CLIENT_MACHINE',
  •   4 value => 'ASM',--将从“ASM”客户机发起的会话映射到“GROUP_OLAP”用户组
  •   5 consumer_group => 'GROUP_OLAP');
  •   6 END;
  •   7 /

  •   PL/SQL procedure successfully completed.

  •   SQL>BEGIN
  •   2 DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(
  •   3 attribute => 'CLIENT_MACHINE',
  •   4 value => 'WORKGROUP\XIAO',--将从“WORKGROUP\XIAO”客户机发起的会话映射到“GROUP_OLTP”用户组
  •   5 consumer_group => 'GROUP_OLTP');
  •   6 END;
  •   7 /

  •   PL/SQL procedure successfully completed.
  5. Create Resource Plan Directives
  针对会话映射到的每一个用户组创建资源计划指令,可以看做是数据库资源管理的控制核心,这里可以控制的资源种类比较多:CPU使用、最大活跃会话数、会话并行度、会话最大空闲时间,Undo使用大小等

  •   SQL>BEGIN
  •   2 DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
  •   3 plan => 'PLAN1',                                        --将该Plan Directive 关联到 PLAN "Plan1"
  •   4 group_or_subplan => 'GROUP_OLAP',                       --可以指定用户组,也可以指定Sub Plan,和上一个参数构成了 Plan Diretive 的唯一属性
  •   5 comment => 'Directives for OLAP consumer group...',
  •   6 active_sess_pool_p1 =>5,                               --最大活跃会话数,达到该限制后其他会话进入 Inactive session queue
  •   7 queueing_p1 =>10,                                      --在 Inactive session queue 的等待超时时间
  •   8 parallel_degree_limit_p1 =>2,                          --最大并行度
  •   9 switch_group => 'KILL_SESSION',                         --在满足指定条件后,对会话所采取的操作
  •   10 switch_time =>3,                                       --执行时间限制,会话操作执行时间超过该值后,即被采取上一步的相应操作(second)
  •   11 switch_estimate =>FALSE,                               --如果设置为 TRUE,在操作执行前Oracle先估算执行时间以决定是否对其切换用户组
  •   12 max_est_exec_time =>5,                                 --最大估算执行时间,优化器对操作时间进行估算,如果超过该值则直接返回“ORA-07455”
  •   13 undo_pool =>NULL,                                      --uncommited undo segments 限制(KB)
  •   14 max_idle_time =>300,                                   --会话最大空闲时间
  •   15 max_idle_blocker_time =>3,                             --Blocker会话的最大空闲时间
  •   16 mgmt_p1 =>30,                                          --CPU使用限制(Level 1)
  •   17 mgmt_p2 =>0);                                          --CPU使用限制(Level 2)
  •   18 END;
  •   19 /

  •   PL/SQL procedure successfully completed.

  •   SQL>BEGIN
  •   2 DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
  •   3 plan => 'PLAN1',
  •   4 group_or_subplan => 'GROUP_OLTP',                       --为“GROUP_OLTP”用户组创建指令计划
  •   5 comment => 'Directives for OLTP consumer group...',
  •   6 active_sess_pool_p1 =>10,
  •   7 switch_group => 'CANCEL_SQL',
  •   8 switch_time =>3,max_idle_time =>3,
  •   9 mgmt_p1 =>60,
  •   10 mgmt_p2 =>0);
  •   11 END;
  •   12 /

  •   PL/SQL procedure successfully completed.

  •   SQL>BEGIN
  •   2 DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
  •   3 plan => 'PLAN1',
  •   4 group_or_subplan => 'OTHER_GROUPS',                     --为没有映射到以上用户组中的会话创建 Plan Directive
  •   5 comment => 'Directives for the other users group...',
  •   6 parallel_degree_limit_p1 =>1,
  •   7 mgmt_p1 =>0,
  •   8 mgmt_p2 =>100);                                        --CPU使用限制(Level 2 的100%,即 Level 1 分配剩下的10%)
  •   9 END;
  •   10 /

  •   PL/SQL procedure successfully completed.
  6. Validate & Submit Resource Plan
在对资源管理元素的创建及更改完成后执行校验并提交,如果出现逻辑上的错误会导致报错,比如:  . 没有定义 OTHER_GROUPS 用户组的 Plan Directive
  . 一个 Plan 中各个 Plan Directive 的 mgmt_p1 或者 mgmt_p2 之和大于 100%
  等一些其他的错误

  •   SQL>exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA()

  •   PL/SQL procedure successfully completed.

  •   SQL>exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA()

  •   PL/SQL procedure successfully completed.
  7. View The Database Resource Manager Elements
  可以通过动态性能视图和数据字典查看,也可以通过EM的图形界面来查看
  Consumer Groups:

  Consumer Groups Mapping:

  Resource Plan Directives:

  至此,资源管理计划已经创建完成,修改初始化参数 resource_manager_plan 以启用新的资源管理计划,或者直接在EM控制台中将该计划的状态改为“Active”
  附(动态性能视图及数据字典
  DBA_RSRC_CATEGORIES
  DBA_RSRC_CONSUMER_GROUP_PRIVS
  DBA_RSRC_CONSUMER_GROUPS
  DBA_RSRC_GROUP_MAPPINGS
  DBA_RSRC_IO_CALIBRATE
  DBA_RSRC_MANAGER_SYSTEM_PRIVS
  DBA_RSRC_MAPPING_PRIORITY
  DBA_RSRC_PLAN_DIRECTIVES
  DBA_RSRC_PLANS
  V$RSRC_CONS_GROUP_HISTORY
  V$RSRC_CONSUMER_GROUP
  V$RSRC_CONSUMER_GROUP_CPU_MTH
  V$RSRC_PLAN
  V$RSRC_PLAN_CPU_MTH
  V$RSRC_PLAN_HISTORY
  V$RSRC_SESSION_INFO
  V$RSRCMGRMETRIC
  V$RSRCMGRMETRIC_HISTORY


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-571053-1-1.html 上篇帖子: Oracle常用的日期函数 下篇帖子: Oracle几种迁移方式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表