第十七课
17、 数据库资源管理器
dbms_resource_manager_privs程序包
administer_resource_manager权限
快速创建一个资源计划:
BEGIN
dbms_resource_manager.create_simple_plan(simple_plan => 'simple_resplan1'
,consumer_group1 => 'consgroup1'
,group1_percent => 80
,consumer_group2 => 'consgroup2'
,group2_percent => 20);
END;
创建复杂资源计划:
步骤:
1.创建一个暂挂区域
2.创建消费组
3.映射会话到消费组
4.创建资源计划
5.创建资源计划指令
6.验证暂挂区域
7.提交暂挂区域
命令行操作:
BEGIN
dbms_resource_manager.clear_pending_area();
dbms_resource_manager.create_pending_area();
dbms_resource_manager.create_consumer_group(consumer_group => 'group1'
,cpu_mth => 'ROUND-ROBIN');
dbms_resource_manager.set_consumer_group_mapping(dbms_resource_manager.oracle_user
,'OUZY'
,'GROUP1');
dbms_resource_manager.create_plan(plan => 'plan1');
dbms_resource_manager.create_plan_directive(plan => 'plan1'
,group_or_subplan => 'GROUP1'
,mgmt_p1 => 70);
dbms_resource_manager.create_plan_directive(plan => 'plan1'
,group_or_subplan => 'OTHER_GROUPS'
,mgmt_p1 => 30);
dbms_resource_manager.validate_pending_area();
dbms_resource_manager.submit_pending_area();
END;
创建消费组:
调度策略:
轮循:round-robin
运行至完成:run-to-completion
消费者组映射:
定义向消费组分配会话的规则。允许切换到此消费组的用户和角色。
未分配的会话将分配至OTHER_GROUPS组。
每个计划都必须包含针对OTHER_GROUPS组的指令。
select t.username,t.initial_rsrc_consumer_group from dba_users t;
创建资源计划和资源计划指令:
指定如何将资源分配给消费组的指令。
启用计划:
alter system set resource_manager_plan = plan1 scope=both;
或者:
BEGIN
dbms_resource_manager.switch_plan('PLAN1');
END;
select * from v$rsrc_plan;查看当前资源计划
select username,status,resource_consumer_group from v$session;
活动会话是事务处理、查询或并行操作中当前涉及的会话。
update t set owner='xx' where object_id=1000;
select username,status,resource_consumer_group from v$session;
- 会话池
- 空闲时间
EMPHASIS这一CPU 分配方法确定在资源计划中对不同使用者组中的会话的重视程度。可以是单一级别也可以是多级别。
RATIO策略是一种单级别的CPU分配方法。
–ratio例子
BEGIN
dbms_resource_manager.clear_pending_area();
dbms_resource_manager.create_pending_area();
dbms_resource_manager.create_consumer_group(consumer_group => 'CG_OUZY2');
dbms_resource_manager.set_consumer_group_mapping(attribute => 'ORACLE_USER'
,VALUE => 'OUZY'
,consumer_group => 'CG_OUZY2');
dbms_resource_manager.create_plan(plan => 'plan2'
,mgmt_mth => 'RATIO');
dbms_resource_manager.create_plan_directive(plan => 'plan2'
,group_or_subplan => 'CG_OUZY'
,shares => '4');
dbms_resource_manager.create_plan_directive(plan => 'plan2'
,group_or_subplan => 'OTHER_GROUPS'
,shares => '3');
dbms_resource_manager.validate_pending_area();
dbms_resource_manager.submit_pending_area();
dbms_resource_manager.clear_pending_area();
END;
select * from dba_rsrc_plans;
超量配置方法:此方法适用于非关键性数据库和低负载、非关键性的生产系统。
分区方法:此方法适用于关键生产系统。它能够防止实例互相影响。
select * from v$rsrc_plan;
select * from v$rsrc_plan;
select * from v$rsrc_consumer_group;
select * from dba_rsrc_plans;
select * from dba_rsrc_plan_directives;
select * from dba_rsrc_consumer_groups;
select * from dba_rsrc_consumer_group_privs;
select * from dba_rsrc_group_mappings;
select * from dba_rsrc_mapping_priority;
select * from dba_rsrc_manager_system_privs;
使用Toad管理资源:
监视资源管理器:
一种CPU方法的计划按照如下方式在两个级别分配资源:
- 级别1:SYS_GROUP 50%,OLTP 50%
- 级别2:DSS 50%,BATCH 50%
如果唯一登录的用户来自BATCH组,那么他们能使用的CPU百分比是多少?
A.12.5%
B.25%
C.50%
D.100%
答案D