Oracle基础包之DBMS_RESOURCE_MANAGER(十九)

1、概述
作用:

用于维护资源计划,资源使用组和资源计划指令;包dbms_resource_manager_privs用于维护与资源管理相关的权限.

2、包的组成
1)、dbms_resource_manager.create_plan
作用:

建立资源计划

语法:
dbms_resource_manager.create_plan(plan in varchar2,comment in varchar2,cpu_mth in varchar2 default 'EMPHASIS',
active_sess_pool_mth in varchar2 default 'ACTIVE_SESS_POOL_ABSOLUTE',
parallele_degree_limit_mth in varchar2 default 'PARALLEL_DEGREE_LIMIT_ABSOLUTE',
queueing_mth in varchar2 default 'FIFO_TIMEOUT');
--其中plan指定资源计划名,comment指定用户注释信息,cpu_mth指定cpu资源的分配方法,active_sess_pool_mth指定最大活动会话的分配方法,
--parallele_degree_limit_mth指定并行度的分配方法,queueing_mth指定活动会话池的队列策略类型。
2)、dbms_resource_manager.create_simple_plan
作用:

用于建立简单资源计划,该资源计划最多包含8个资源使用组。

语法:
dbms_resource_manager.create_simple_plan(simple_plan in varchar2 default,
consumer_group1 in varchar2 default,group1_cpu in number default,
consumer_group2 in varchar2 default,group2_cpu in number default,
consumer_group3 in varchar2 default,group3_cpu in number default,
consumer_group4 in varchar2 default,group4_cpu in number default,
consumer_group5 in varchar2 default,group5_cpu in number default,
consumer_group6 in varchar2 default,group6_cpu in number default,
consumer_group7 in varchar2 default,group7_cpu in number default,
consumer_group8 in varchar2 default,group8_cpu in number default);
3)、dbms_resource_manager.update_plan
作用:

用于更新资源计划的定义

语法:
dbms_resource_manager.update_plan(plan in varchar2,
new_comment in varchar2 default null,new_cpu_mth in varchar2 default null,
new_active_sess_pool_mth in varchar2 default null,new_parallel_degree_limit_mth in varchar2 default null,
new_queueing_mth in varchar2 default null);
--其中new_comment指定用户的新的注释信息,new_cpu_mth指定cpu资源的新的分配方法,
--new_active_sess_pool_mth指定最大活动会话的新的分配方法,
--new_parallel_degree_limit_mth指定并行度的新的分配方法,
--new_queueing_mth指定活动会话池的新的队列策略类型。
4)、dbms_resource_manager.delete_plan
作用:

用于删除资源计划

语法:
dbms_resource_manager.delete_plan(plan in varchar2);
5)、dbms_resource_manager.delete_plan_cascade
作用:

用于删除资源计划及其所有后代(资源计划指令、子计划和资源使用组)

语法:
dbms_resource_manager.delete_plan_cascade(plan in varchar2);
6)、dbms_resource_manager.greate_consumer_group
作用:

用于建立资源使用组

语法:
dbms_resource_manager.greate_consumer_group(consumer_group in varchar2,
comment in varchar2,cpu_mth in varchar2 default 'ROUND-ROBIN');
其中consumer_group指定资源使用组名。
7)、dbms_resource_manager.update_consumer_group
作用:

用于更新资源使用组信息

语法:
dbms_resource_manager.update_consumer_group(
consumer_group in varcahr2,new_comment in varchar2,new_cpu_mth in varchar2 default null);
8)、dbms_resource_manager.delete_consumer_group
作用:

删除资源使用组

语法:
dbms_resource_manager.delete_consumer_group(consumer_group in varchar2);
9)、dbms_resource_manager.create_plan_directive
作用:

建立资源计划指令

语法:
dbms_resource_manager.create_plan_directive(
plan in varchar2,group_or_subplan in varchar2,
comment in varchar2,cpu_p1 in number default null,
cpu_p2 in number default null,cpu_p3 in number default null,
cpu_p4 in number default null,cpu_p5 in number default null,
cpu_p6 in number default null,cpu_p7 in number default null,
cpu_p8 in number default null,
active_sess_pool_p1 in number default unlimited,
queueing_p1 in number default unlimited,
switch_group in varchar2 default null,
switch_time in number default unlimited,
switch_estimate in boolean default false,
max_est_exec_time in number default nulimited,
undo_pool in number default unlimited,
paralle1_degree_limit_p1 in number default unlimited);
--其中group_or_subplan指定资源使用组或者子计划的名称,cpu_p1指定CPU资源分配方法的第一个参数(p2是第二个参数。。。),
--active_sess_pool_p1指定最大活动会话分配方法的第一个参数,queueing_p1指定队列超时时间,
--switch_group指定到达切换时间时要切换到的资源使用组,switch_time指定切换时间,
--switch_estimate默认false,设置为true时表示通知Oracle使用执行时间估计自动切换资源使用组。
--undo_pool指定资源使用组的undo池尺寸,paralle1_degree_limit_p1指定并行度分配方法的第一个参数。
10)、dbms_resource_manager.update_plan_directive
作用:

用于更新资源计划指令

语法:
plan in varchar2,group_or_subplan in varchar2,
new_comment in varchar2,cpu_p1 in number default null,
new_cpu_p2 in number default null,new_cpu_p3 in number default null,
new_cpu_p4 in number default null,new_cpu_p5 in number default null,
new_cpu_p6 in number default null,new_cpu_p7 in number default null,
new_cpu_p8 in number default null,
new_active_sess_pool_p1 in number default unlimited,
new_queueing_p1 in number default unlimited,
new_switch_group in varchar2 default null,
new_switch_time in number default unlimited,
new_switch_estimate in boolean default false,
new_max_est_exec_time in number default nulimited,
new_undo_pool in number default unlimited,
new_paralle1_degree_limit_p1 in number default unlimited);
--其中new_cpu_p1指定CPU资源分配方法的第一个参数(p2是第二个参数。。。),
--new_active_sess_pool_p1指定最大活动会话分配方法的第一个参数,new_queueing_p1指定队列超时时间,
--new_switch_group指定到达切换时间时要切换到的资源使用组,new_switch_time指定切换时间,
--new_switch_estimate默认false,设置为true时表示通知Oracle使用执行时间估计自动切换资源使用组。
--new_undo_pool指定资源使用组的undo池尺寸,new_paralle1_degree_limit_p1指定并行度分配方法的第一个参数。
11)、dbms_resource_manager.delete_plan_directive
作用:

用于删除资源计划指令

语法:
dbms_resource_manager.delete_plan_directive(plan in varchr2,group_or_subplan in varchar2);
12)、dbms_resource_manager.create_pending_area
作用:

用于建立pending内存区,并且该内存区将用于改变资源管理对象

语法:
dbms_resource_manager.create_pending_area;
13)、dbms_resource_manager.validate_pending_area
作用:

用于校验资源管理器的改变

语法:
dbms_resource_manager.validate_pending_area;
14)、dbms_resource_manager.clear_pending_area
作用:

用于清除资源管理器的改变

语法:
dbms_resource_manager.clear_pending_area;
15)、dbms_resource_manager.submit_pending_area
作用:

用于提交资源管理器的改变

语法:
dbms_resource_manager.submit_pending_area;
16)、dbms_resource_manager…set_initial_consumer_group
作用:

用于指定用户的初始资源使用组

语法:
dbms_resource_manager.set_initial_consumer_group(user in varchar2,consumer_group in varchar2);
其中user指定用户名,consumer_group指定用户的初始资源使用组名。
17)、dbms_resource_manager.switch_consumer_group_for_sess
作用:
语法:
dbms_resource_manager.switch_consumer_group_for_sess(session_id in number,session_serial in number,consumer_group in varchr2);
--其中session_id指定会话ID号,session_serial指定会话序列号。
18)、dbms_resource_manager.switch_consumer_group_for_user
作用:

用于改变特定用户所有会话的资源使用组

语法:
dbms_resource_manager.switch_consumer_group_for_user(user in varchar2,consumer_group in varchar2);
19)、dbms_resource_manager_privs.grant_system_privilege
作用:

用于将资源管理权限授予用户或角色

语法:
dbms_resource_manager_privs.grant_system_privilege(grantee_name in varchar2,
privilege_name in varchar2 default 'administer_resource_manager',admin_option in boolean);
--其中grantee_name指定被授权的用户或角色,privilege_name指定要授予的资源管理权限,
--admin_option指定是否可以转授资源管理权限(true为能,false为不能)
例子:
exec dbms_resource_manager_prive.grant_system_privilege('scott','administer_resource_manager',true)
20)、dbms_resource_manager_privs.revoke_system_privilege
作用:

用于回收资源管理权限

语法:
dbms_resource_manager_privs。revoke_system_privilege(revokee_name in varchar2,privilege_name in varchar2 default 'administer_resource_manager');
--其中revoke_name指定被收回权限的用户或角色,privilege_name指定要收回的资源管理权限。
例子:
exec dbms_resource_manager_privs.revoke_system_privilege('scott','administer_resource_maneger');
21)、dbms_resource_manager_privs.grant_switch_consumer_group
作用:

用于将用户或角色分配给特定的资源使用组

语法:
dbms_resource_manager_privs.grant_switch_consumer_group(grantee_name in varchar2,consumer_group in varchar2,grant_option in boolean);
--其中grant_option指定资源使用组转授选项
例子:
exec dbms_resource_manager_privs.grant_switch_consumer_group('scott','sys_group',true)
22)、dbms_resource_manager_privs.revoke_switch_consumer_group
作用:

用于收回分配给用户或角色的资源使用组

语法:
dbms_resource_manager_privs.revoke_switch_consumer_group(revokee in varchar2,consumer_group in varchar2);
例子:
dbms_resource_manager_privs.revoke_switch_consumer_group('scott','sys_group');
3、综合实例
1)、为用户授权资源管理权限
说明:
默认情况下只有特权用户sys,dba用户system可以进行资源管理,其余用户要使用要为其授权,下面授权给scott。
conn system/menager@test
exec dbms_resource_manager_prive.grant_system_privilege('scott','administer_resource_manager',true)
2)、建立各种资源对象
说明:

建立资源对象前,必须分配pending内存区,建立资源对象后,必须检查并提交pending内存区。

--(1)、建立pending内存区
conn scott/tiger@test
exec dbms_resource_manager.create_pending_area
--(2)、建立资源使用组
exec dbms_resource_manager.create_consumer_group('oltp','联机事务处理组');
exec dbms_resource_manager.create_consumer_group('dss','决策支持组');
--(3)、建立资源计划
exec dbms_resource_manager.create_plan('day','该资源计划用于联机事务处理');
exec dbms_resource_manager.create_plan('night','该资源计划用于决策支持');
--(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=>'olpt',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);
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;
--(5)、验证pending内存区
--说明:验证通过则可以提交pending内存区,不通过需要清除pending内存区并重新建立资源对象。
exec dbms_resource_manager.validate_pending_area
--(6)、提交pending内存区
--说明:提交pending内存区最终建立永久的资源管理对象。
exec dbms_resource_manager.submit_pending_area
--3)、分配用户到资源使用组
exec dbms_resource_manager_privs.grant_switch_consumer_group('scott','oltp',false);
exec dbms_resource_manager_privs.grant_switch_consumer_group('scott','dss',false);
--4)、设置用户的默认资源使用组
--说明:数据库用户可以属于多个资源使用组,但在特定会话特定时刻只能使用某个资源使用组的相应资源。
--通过设置用户的默认资源使用组,可以使用户登录时自动使用相应资源使用组的资源。
exec dbms_resource_manager.set_initial_consumer_group('scott','oltp');
--5)、激活资源计划
--说明:为了通过数据库资源管理器限制数据库用户的资源使用,必须要激活资源计划。
alter system set resource_manager_plan=DAY where scope=momory.
--6)、改变会话或用户的资源使用组
--说明:如果用户属于多个资源使用组,初始登录时会使用默认资源使用组,为了改变特定会话的资源使用组,
exec dbms_resource_manager.switch_consumer_group_for_sess(7,8,'dss');
--为了改变特定用户所有会话的资源使用组,
exec dbms_resource_manager.switch_consumer_group_for_user('scott','dss');
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜未央,流年殇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值