日期:2014-05-16  浏览次数:20462 次

Oracle:资源管理器的使用

1.

BEGIN
dbms_resource_manager.clear_pending_area();
DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
DBMS_RESOURCE_MANAGER.CREATE_PLAN(PLAN=>'CUSTOMER',COMMENT=>'');? ?
? ?? ? --资源计划CUSTOMER
DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(CONSUMER_GROUP=>'PROC_GROUP',COMMENT=>'');
? ?? ? -- 资源用户组PROC_GROUP
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(plan=>'CUSTOMER',Group_or_subplan=>'proc_group',comment=>'',cpu_p1=>0,cpu_p2=>10);
? ?? ?--用户组PROC_GROUP的资源指令? ?

DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(plan =>'CUSTOMER',group_or_subplan=> 'DEFAULT_CONSUMER_GROUP',comment => ' ',cpu_p1 => 0,cpu_p2 =>0,
??cpu_p3 =>50,CPU_P4=>0,cpu_p5 => 0, cpu_p6 => 0, cpu_p7 => 0,cpu_p8 => 0,
? ? ? ? ? ? ? ? parallel_degree_limit_p1 => 2);
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(plan=>'CUSTOMER',group_or_subplan=>'other_groups',comment=>'',cpu_p1=>0,cpu_p2=>0,cpu_p3=>0,CPU_P4=>50);

dbms_resource_manager.create_plan_directive(
? ? ? ? ? ? ? ? plan => 'CUSTOMER',
? ? ? ? ? ? ? ? group_or_subplan => 'SYS_GROUP',
? ? ? ? ? ? ? ? comment => ' ',
? ? ? ? ? ? ? ? cpu_p1 => 30, cpu_p2 => 0, cpu_p3 => 0, cpu_p4 => 0,
? ? ? ? ? ? ? ? cpu_p5 => 0, cpu_p6 => 0, cpu_p7 => 0, cpu_p8 => 0,
? ? ? ? ? ? ? ? parallel_degree_limit_p1 => 0
? ? ? ? );

DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();

DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SWITCH_CONSUMER_GROUP ('proc', 'proc_group', TRUE);
DBMS_RESOURCE_MANAGER.SET_INITIAL_CONSUMER_GROUP('PROC', 'PROC_GROUP');
? ?? ???--为PROC用户指定资源用户组

END;

?

2、将用户会话分配给消费群(消费群映射)
可以基于会话的属性将会话动态分配给消费群,成为消费群映射。
?
(1)设定映射:
dbms_resource_manager.set_consumer_group_mapping(
attribute => oracle_user,
value => 'user1,
consumer_group => 'low_group');
?
如上,当会话的oracle用户属性值为user1时,就将之分配给消费群low_group。