Welcome 微信登录

首页 / 数据库 / MySQL / 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 resourceNAME TYPEVALUE------------------------------------ --------------------------------- ------------------------------resource_limit boolean FALSEresource_manager_cpu_allocationinteger 2resource_manager_planstring--设置resource_manager_plan为DEFAULT_PLANSQL> alter system set resource_manager_plan = "DEFAULT_PLAN";System altered.SQL> show parameter resourceNAME TYPEVALUE------------------------------------ --------------------------------- ------------------------------resource_limit boolean FALSEresource_manager_cpu_allocationinteger 2resource_manager_planstringDEFAULT_PLAN如果未设置resource_manager_plan参数的值,则不在实例中执行资源管理。

4.新建资源计划

可以使用PL/SQL包“DBMS_RESOURCE_MANAGER”的CREATE_PLAN、UPDATE_PLAN和DELETE_PLAN来创建、更新和删除资源计划。 --为资源管理器会话创建等待区(必须要创建)exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();--新建资源计划,名称DEVELOPERSexecute DBMS_RESOURCE_MANAGER.CREATE_PLAN -(Plan => "DEVELOPERS", -Comment => "Developers, in Development database");

5.创建使用者组

新建两个使用者组:ONLINE_DEVELOPERS和BATCH_DEVELOPERS--新建使用者组 ONLINE_DEVELOPERSexec DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP -(Consumer_Group => "ONLINE_DEVELOPERS", -Comment => "Online developers");--新建使用者组 BATCH_DEVELOPERSexec DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP -(Consumer_Group => "BATCH_DEVELOPERS", -Comment => "Batch developers");

6.了解资源分配方法

创建两个计划指导,以便将75%的CPU资源分配给ONLINE_DEVELOPERS组,25%的CPU资源分配给BATCH_DEVELOPERS组。
另外,将ONLINE_DEVELOPERS组并行性限制为12,将BATCH_DEVELOPERS组的并行性限制为6。--ONLINE_DEVELOPERSexec 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_DEVELOPERSexec 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();

7.分配使用者组

将用户合理分配到使用者组中,
将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权限begindbms_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");

8.激活资源计划

--激活资源计划 DEVELOPERSalter system set resource_manager_plan = "DEVELOPERS";

9.了解Resource Manager视图

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 120col plan for a30col status for a30select plan, status, num_plan_directives, mandatory from dba_rsrc_plans;status列值为PENDING说明计划尚未经过验证并成功提交;mandatory列值为YES说明无法删除计划。

10.监视Resource Manager

下面3个动态性能视图显示Resource Manager的统计信息:v$rsrc_consumer_group -> 按使用者组列出的CPU使用率v$sysstat -> 所有会话的CPU使用率v$sesstat -> 按会话列出的CPU使用率还可以通过EM的Resource Manager下statistics连接查询CPU、I/O、等待时间和排队会话的明细。更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址