Oracle Study 案例--数据库资源管理器(Oracle Database Resource Manager)

简介:

Resource Manager 提供了一种优化数据库资源分配的有效办法,相对于在OS层面进行资源分配,Resource Manager 拥有更精细的控制粒度,以及更小的资源消耗,并且解决了一些OS层面无法解决的资源分配问题。

一,基本概念
. Simple View Of Resource Plan 



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 中完成,文档说可以理解为一个“草稿区” 

  1. SQL> exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA


  2. PL/SQL procedure successfully completed.

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

1
2
3
4
5
6
7
8
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
  1. 1
    2
    3
    4
    5
    6
    7
    8
    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.
1
2
3
4
5
6
7
8
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
  1. 1
    2
    3
    4
    5
    6
    7
    8
    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.
  2. 1
    2
    3
    4
    5
    6
    7
    8
    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 使用大小等
  1. SQL> BEGIN

  2.   2 DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(

  3.   3 plan => 'PLAN1',                                        --将该Plan Directive 关联到 PLAN "Plan1"

  4.   4 group_or_subplan => 'GROUP_OLAP',                       --可以指定用户组,也可以指定Sub Plan,和上一个参数构成了 Plan Diretive 的唯一属性

  5.   5 comment => 'Directives for OLAP consumer group...',

  6.   6 active_sess_pool_p1 => 5,                               --最大活跃会话数,达到该限制后其他会话进入 Inactive session queue

  7.   7 queueing_p1 => 10,                                      --在 Inactive session queue 的等待超时时间

  8.   8 parallel_degree_limit_p1 => 2,                          --最大并行度

  9.   9 switch_group => 'KILL_SESSION',                         --在满足指定条件后,对会话所采取的操作

  10.  10 switch_time => 3,                                       --执行时间限制,会话操作执行时间超过该值后,即被采取上一步的相应操作(second)

  11.  11 switch_estimate => FALSE,                               --如果设置为 TRUE,在操作执行前Oracle先估算执行时间以决定是否对其切换用户组

  12.  12 max_est_exec_time => 5,                                 --最大估算执行时间,优化器对操作时间进行估算,如果超过该值则直接返回“ORA-07455”

  13.  13 undo_pool => NULL,                                      --uncommited undo segments 限制(KB)

  14.  14 max_idle_time => 300,                                   --会话最大空闲时间

  15.  15 max_idle_blocker_time => 3,                             --Blocker会话的最大空闲时间

  16.  16 mgmt_p1 => 30,                                          --CPU使用限制(Level 1)

  17.  17 mgmt_p2 => 0);                                          --CPU使用限制(Level 2)

  18.  18 END;

  19.  19 /

  20. PL/SQL procedure successfully completed.


  21. SQL> BEGIN

  22.   2 DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(

  23.   3 plan => 'PLAN1',

  24.   4 group_or_subplan => 'GROUP_OLTP',                       --为“GROUP_OLTP”用户组创建指令计划

  25.   5 comment => 'Directives for OLTP consumer group...',

  26.   6 active_sess_pool_p1 => 10,

  27.   7 switch_group => 'CANCEL_SQL',

  28.   8 switch_time => 3,max_idle_time => 3,

  29.   9 mgmt_p1 => 60,

  30.  10 mgmt_p2 => 0);

  31.  11 END;

  32.  12 /

  33. PL/SQL procedure successfully completed.

  34. SQL> BEGIN

  35.   2 DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(

  36.   3 plan => 'PLAN1',

  37.   4 group_or_subplan => 'OTHER_GROUPS',                     --为没有映射到以上用户组中的会话创建 Plan Directive

  38.   5 comment => 'Directives for the other users group...',

  39.   6 parallel_degree_limit_p1 => 1,

  40.   7 mgmt_p1 => 0,

  41.   8 mgmt_p2 => 100);                                        --CPU使用限制(Level 2 的100%,即 Level 1 分配剩下的10%)

  42.   9 END;

  43.  10 /

  44. PL/SQL procedure successfully completed.

6. Validate & Submit Resource Plan
在对资源管理元素的创建及更改完成后执行校验并提交,如果出现逻辑上的错误会导致报错,比如:
  . 没有定义 OTHER_GROUPS 用户组的 Plan Directive
  . 一个 Plan 中各个 Plan Directive 的 mgmt_p1 或者 mgmt_p2 之和大于 100%
等一些其他的错误
  1. 1
    2
    SQL> exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA()
    PL/SQL procedure successfully completed.
  2. 1
    2
    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”
附(动态性能视图及数据字典)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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










本文转自 客居天涯 51CTO博客,原文链接:http://blog.51cto.com/tiany/1605841,如需转载请自行联系原作者
目录
相关文章
|
12月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】Oracle数据库配置助手:DBCA
Oracle数据库配置助手(DBCA)是用于创建和配置Oracle数据库的工具,支持图形界面和静默执行模式。本文介绍了使用DBCA在Linux环境下创建数据库的完整步骤,包括选择数据库操作类型、配置存储与网络选项、设置管理密码等,并提供了界面截图与视频讲解,帮助用户快速掌握数据库创建流程。
943 93
|
11月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】使用NetManager创建Oracle数据库的监听器
Oracle NetManager是数据库网络配置工具,用于创建监听器、配置服务命名与网络连接,支持多数据库共享监听,确保客户端与服务器通信顺畅。
502 0
|
存储 Oracle 关系型数据库
服务器数据恢复—光纤存储上oracle数据库数据恢复案例
一台光纤服务器存储上有16块FC硬盘,上层部署了Oracle数据库。服务器存储前面板2个硬盘指示灯显示异常,存储映射到linux操作系统上的卷挂载不上,业务中断。 通过storage manager查看存储状态,发现逻辑卷状态失败。再查看物理磁盘状态,发现其中一块盘报告“警告”,硬盘指示灯显示异常的2块盘报告“失败”。 将当前存储的完整日志状态备份下来,解析备份出来的存储日志并获得了关于逻辑卷结构的部分信息。
|
SQL Oracle 关系型数据库
Oracle数据库创建表空间和索引的SQL语法示例
以上SQL语法提供了一种标准方式去组织Oracle数据库内部结构,并且通过合理使用可以显著改善查询速度及整体性能。需要注意,在实际应用过程当中应该根据具体业务需求、系统资源状况以及预期目标去合理规划并调整参数设置以达到最佳效果。
723 8
|
SQL Oracle 关系型数据库
比较MySQL和Oracle数据库系统,特别是在进行分页查询的方法上的不同
两者的性能差异将取决于数据量大小、索引优化、查询设计以及具体版本的数据库服务器。考虑硬件资源、数据库设计和具体需求对于实现优化的分页查询至关重要。开发者和数据库管理员需要根据自身使用的具体数据库系统版本和环境,选择最合适的分页机制,并进行必要的性能调优来满足应用需求。
628 11
|
Oracle 安全 关系型数据库
【Oracle】使用Navicat Premium连接Oracle数据库两种方法
以上就是两种使用Navicat Premium连接Oracle数据库的方法介绍,希望对你有所帮助!
2821 28
|
Oracle 关系型数据库 数据库
数据库数据恢复—服务器异常断电导致Oracle数据库报错的数据恢复案例
Oracle数据库故障: 某公司一台服务器上部署Oracle数据库。服务器意外断电导致数据库报错,报错内容为“system01.dbf需要更多的恢复来保持一致性”。该Oracle数据库没有备份,仅有一些断断续续的归档日志。 Oracle数据库恢复流程: 1、检测数据库故障情况; 2、尝试挂起并修复数据库; 3、解析数据库文件; 4、导出并验证恢复的数据库文件。
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle RMAN的目录数据库
Oracle RMAN默认将备份元信息存储在控制文件中,但控制文件损坏或丢失会导致恢复失败,且备份增多会使控制文件无限增长。为解决这些问题,Oracle引入了RMAN目录数据库(Catalog Database),专门用于存储RMAN备份的元信息。使用目录数据库可提升备份管理效率,支持多数据库共享、长期备份历史记录存储,并可保存RMAN脚本。本文详细介绍了如何创建目录数据库、注册目标数据库及其操作步骤。
407 0
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle数据库的闪回表
本文介绍了Oracle数据库中的闪回表(Flashback Table)功能,它能够将表的数据快速恢复到特定时间点或系统改变号(SCN),无需备份。文章通过实战示例详细演示了如何使用闪回表恢复数据,包括授权、创建测试表、记录时间与SCN号、删除数据、启用行移动功能、执行闪回操作以及验证恢复结果等步骤。同时,还展示了如何通过触发器禁止插入操作,并在闪回过程中处理触发器的启用问题。文末附有视频讲解,帮助读者更好地理解闪回表的使用方法。
733 10
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的闪回数据库
Oracle闪回数据库功能类似于“倒带按钮”,可快速将数据库恢复至 earlier 状态,无需还原备份。本文介绍了闪回数据库的使用方法及实战案例:包括设置归档模式、开启闪回功能、记录SCN号、执行误操作后的恢复步骤等。通过具体 SQL 操作演示了如何利用闪回数据库恢复被误删的用户数据。注意,使用此功能前需确保数据库为归档模式。
609 9

热门文章

最新文章

推荐镜像

更多