创建资源管理计划

第一步 创建Pending Area
所有关于 Resource Manager 组件创建和更改都必须在 Pending Area 中完成,可以理解为一个“草稿区".
SQL> exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA
第二步 创建Resource Planing
创建资源计划时需要注意的一点是如果 sub_plan 参数指定为 TRUE,那么这个计划只能作为子计划使用,并且不需要为 OTHER_GROUPS 创建 Plan Directive,否则必须给OTHER_GROUPS 创建 Plan Directive

BEGIN
DBMS_RESOURCE_MANAGER.CREATE_PLAN(
plan => ‘PLAN1’,
comment => ‘Test Plan…’,
sub_plan => FALSE); --默认值即为 FALSE
END;
/

第三步 创建CONSUMER_GROUP
根据实际需求创建所需要的用户组,需要注意的是虽然这一步并没有创建 OTHER_GROUPS 用户组,但是后面必须为 OTHER_GROUPS 用户组创建相对应的Plan Directive

BEGIN
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
consumer_group => ‘GROUP_OLTP’,
comment => ‘Group of OLTP USERS…’,
mgmt_mth => ‘ROUND-ROBIN’); --该用户组内各会话的CPU资源采取轮询的分配方法
END;
/

BEGIN
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
consumer_group => ‘GROUP_OLAP’,
comment => ‘Group of OLAP USERS…’,
mgmt_mth => ‘ROUND-ROBIN’);
END;
/

第四步 创建资源组和客户机的映射关系

BEGIN
DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(
attribute => ‘CLIENT_MACHINE’,
value => ‘ASM’, --将从“ASM”客户机发起的会话映射到“GROUP_OLAP”用户组
consumer_group => ‘GROUP_OLAP’);
END;
/

SQL> BEGIN
DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(
attribute => ‘CLIENT_MACHINE’,
value => ‘WORKGROUP\XIAO’, --将从“WORKGROUP\XIAO”客户机发起的会话映射到“GROUP_OLTP”用户组
consumer_group => ‘GROUP_OLTP’);
END;
/

第五步 配置资源组

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

BEGIN
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
plan => ‘PLAN1’,
group_or_subplan => ‘GROUP_OLTP’, --为“GROUP_OLTP”用户组创建指令计划
comment => ‘Directives for OLTP consumer group…’,
active_sess_pool_p1 => 10,
switch_group => ‘CANCEL_SQL’,
switch_time => 3,max_idle_time => 3,
mgmt_p1 => 60,
mgmt_p2 => 0);
END;
/

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

第六步 验证和提交资源计划
在对资源管理元素的创建及更改完成后执行校验并提交,如果出现逻辑上的错误会导致报错,比如:
. 没有定义 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.

第七步 查看资源计划
可以通过动态性能视图和数据字典查看

至此,资源管理计划已经创建完成,修改初始化参数 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 R S R C C O N S G R O U P H I S T O R Y V RSRC_CONS_GROUP_HISTORY V RSRCCONSGROUPHISTORYVRSRC_CONSUMER_GROUP
V R S R C C O N S U M E R G R O U P C P U M T H V RSRC_CONSUMER_GROUP_CPU_MTH V RSRCCONSUMERGROUPCPUMTHVRSRC_PLAN
V R S R C P L A N C P U M T H V RSRC_PLAN_CPU_MTH V RSRCPLANCPUMTHVRSRC_PLAN_HISTORY
V R S R C S E S S I O N I N F O V RSRC_SESSION_INFO V RSRCSESSIONINFOVRSRCMGRMETRIC
V$RSRCMGRMETRIC_HISTORY

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值