dbms_resource_manager 包:
用于维护资源计划,资源使用组,资源计划指令
dbms_resource_manager_privs包:
用于维护与资源组相关的权限;
– 1.creeate_plan
/*
用于建立资源计划
plan => 资源计划名称
comment => 用户注释信息
cpu_mth => cpu分配方法
active_sess_pool_mth => 最大活动会话分配方式
parallel_degree_limit_mth => 并行调度的分配方式
queueing_mth =>会话队列的策略
*/
dbms_resource_manager.create_plan(
plan => ,
comment => ,
cpu_mth => ,
active_sess_pool_mth => ,
parallel_degree_limit_mth => ,
queueing_mth =>
);
– 2,create_simple_plan
/*
建立简单的资源计划,并且该资源计划最多包含8个资源使用组。
*/
dbms_resource_manager.create_simple_plan(
simple_plan => ,
consumer_group1 =>,group1_cpu => ,
…
consumer_group8 =>,group8_cpu =>
);
– 3,update_plan
/*
改过程用于更新资源计划
*/
dbms_resource_manager.update_plan(
plan => ,
new_comment => ,
new_cpu_mth => ,
new_active_sess_pool_mth => ,
new_parallel_degree_limit_mth => ,
new_queueing_mth =>
);
– 4,delete_plan
/*
改过程用于删除资源计划
*/
dbms_resource_manager.delete_plan(plan => );
– 5, delete_plan_cascade
/*
级联删除,删除资源计划及其后代(资源计划指令,子计划和资源使用组)
*/
dbms_resource_manager.delete_plan_cascade(plan => );
–6,create_consumer_group(consumer顾客)
/*
建立资源使用组
*/
dbms_resource_manager.create_consumer_group(consumer_group => ,comment => ,cpu_mth => );
–7,update_consumer_group(consumer顾客)
/*
更新资源使用组
*/
dbms_resource_manager.update_consumer_group(consumer_group => ,new_comment => ,new_cpu_mth => );
–8,delete_consumer_group(consumer顾客)
/*
删除资源使用组
*/
dbms_resource_manager.delete_consumer_group(consumer_group => );
–9 ,create_plan_directive(指令)
/*
该过程用于建立资源计划指令
*/
dbms_resource_manager.create_plan_directive(
plan =>,group_or_subplan =>,comment => ,
cpu_p1 => ,cpu_p2 =>,…..cpu_p8 =>,
active_sess_pool_p1 => ,queueing_p1 => ,parallel_degree_limit_p1 => ,
switch_group => ,switch_time => ,switch_estimate => ,undo_pool =>
);
–10,update_plan_directive(指令)
/*
该过程用于修改资源计划指令
*/
dbms_resource_manager.update_plan_directive(
plan =>,group_or_subplan =>,comment => ,
cpu_p1 => ,cpu_p2 =>,…..cpu_p8 =>,
active_sess_pool_p1 => ,queueing_p1 => ,parallel_degree_limit_p1 => ,
switch_group => ,switch_time => ,switch_estimate => ,undo_pool =>
);
–11,delete_plan_directive(指令)
/*
该过程用于删除资源计划指令
*/
dbms_resource_manager.delete_plan_directive(plan => ,group_or_subplan => );
– 12,create_pending_area(pending 待定)
/*
建立pending内存分区;该部分内存用于资源管理器对象;
*/
dbms_resource_manager.create_pending_area;
–13,validate_pending_area(validate-验证)
/*
改过成用于检验资源管理器的改变;
*/
dbms_resource_manager.validate_pending_area;
–14,clear_pending_area
/*
改过成用于清除资源管理器的改变;
*/
dbms_resource_manager.clear_pending_area;
–15,submit_pending_area
/*
该过程用于提交资源管理器的改变;
*/
dbms_resource_manager.submit_pending_area;
–16,set_initial_consumer_group
/*
该过程指定用户初始资源使用组
*/
dbms_resource_manager.set_initial_consumer_group(
user => ,consumer_group =>
);
–17,switch_consumer_group_for_sess
/*
改变特定会话的资源使用组
*/
dbms_resource_manager.switch_consumer_group_for_sess(
session_id => ,
session_serial => ,
consumer_group =>
);
–18,switch_consumer_group_for_user
/*
该过程改变特定用户的所有会话的资源使用组
*/
dbms_resource_manager.switch_consumer_group_for_user
(user => ,consumer_group => );
dbms_resource_manager_privs
–1,grant_system_privilege
/*
将资源管理权授于特定用户或角色
grantee_name –被授权用户、
privilege_name —授予资源管理的权限
admin_option –是否可以转授;
*/
dbms_resource_manager_privs.grant_system_privilege(
grantee_name => ,
privilege_name => ,
admin_option =>
);
–2,grant_system_privilege
/*
将特定用户或角的资源管理权回收;
*/
dbms_resource_manager_privs.revoke_system_privilege(
revokee_name => ,
privilege_name =>
);
–3,grant_switch_consumer_group
/*
将特定的资源使用组分配给特定的用户或角色;
*/
dbms_resource_manager_privs.grant_switch_consumer_group(
grantee_name => ,
consumer_group => ,
grant_option =>
);
–4,revoke_switch_consumer_group
/*
将某用户或角色的特定的资源使用组权限收回;
*/
dbms_resource_manager_privs.revoke_switch_consumer_group(
revokee_name => ,consumer_group =>
);
———————————————————————— /*资源管理的案例
默认情况下只有特权用户sys,dba用户system可以对资源进行管理
*/
–1, 为用户授予资源管理权限
begin
dbms_resource_manager_privs.grant_system_privilege(
‘SYSTEM’,’ADMINISTER_RESOURCE_MANAGER’,false
);
end;
–2,建立各种资源对象
–2.1 建立pending内存区,为了存放各种资源对象;
begin
dbms_resource_manager.create_pending_area;
end;
--2.2 建立资源使用组
begin
dbms_resource_manager.create_consumer_group('OLTP','联机事务处理组');
dbms_resource_manager.create_consumer_group('DSS','决策支持组');
end;
--2.3建立资源计划
begin
dbms_resource_manager.create_plan('DAY' ,'该资源计划用于联机事务处理');
dbms_resource_manager.create_plan('NIGHT' ,'该资源计划用于决策支持');
end;
--2.4建立资源指令(把资源计划和资源组关联)
/*必须在资源组计划和OTHER_GROUPS组之间建立关联关系*/
begin
dbms_resource_manager.create_plan_directive(
plan => 'DAY',group_or_subplan => 'SYS_GROUP',
comment => '最高级别组',cpu_p1 => 100,parallel_degree_limit_p1 => 3
);
dbms_resource_manager.create_plan_directive(
plan => 'DAY',group_or_subplan => 'OLTP',
comment => '中级级别组',cpu_p2 => 80,parallel_degree_limit_p1 => 1
);
dbms_resource_manager.create_plan_directive(
plan => 'DAY',group_or_subplan => 'OTHER_GROUPS',
comment => '最低级别组',cpu_p3 => 80,parallel_degree_limit_p1 => 1
);
end;
begin
dbms_resource_manager.create_plan_directive(
plan => 'NIGHT',group_or_subplan => 'SYS_GROUP',
comment => '最高级别组',cpu_p1 => 100,parallel_degree_limit_p1 => 20
);
dbms_resource_manager.create_plan_directive(
plan => 'NIGHT',group_or_subplan => 'DSS',
comment => '中级级别组',cpu_p2 => 80,parallel_degree_limit_p1 => 20
);
dbms_resource_manager.create_plan_directive(
plan => 'NIGHT',group_or_subplan => 'OTHER_GROUPS',
comment => '最低级别组',cpu_p3 => 80,parallel_degree_limit_p1 => 20
);
end;
--3,验证资源管理器
begin
dbms_resource_manager.validate_pending_area();
end;
–4,提交pending区
begin
dbms_resource_manager.submit_pending_area;
end;
–5 ,分配用户到资源使用组
begin
dbms_resource_manager_privs.grant_switch_consumer_group(
‘SYSTEM’,’OLTP’,false);
dbms_resource_manager_privs.grant_switch_consumer_group(
‘SYSTEM’,’DSS’,false);
end;
–6,设置用户的默认资源使用组
begin
dbms_resource_manager.set_initial_consumer_group(‘SYSTEM’,’DSS’);
end;
–7,清除资源管理器
begin
dbms_resource_manager.clear_pending_area;
end;