资源管理器的使用与管理

版权声明:欢迎指正,评论,共同学习 https://blog.csdn.net/m18994118189/article/details/82869237

SQL> select username,default_tablespace from dba_users; where default_tablespace='USERS';
使用这个表空间下的普通用户来实验

1.创建用户者组
创建一个叫OLTP_GRP
SQL> begin
dbms_resource_manager.clear_pending_area();
dbms_resource_manager.create_pending_area();
dbms_resource_manager.create_consumer_group(
consumer_group => 'OLTP_GRP',
comment => '',
cpu_mth => 'ROUND-ROBIN');
exec dbms_resource_manager.submit_pending_area();
end;
SQL> /

PL/SQL procedure successfully completed.

创建一个叫BATH_GRP
SQL> begin
dbms_resource_manager.clear_pending_area();
dbms_resource_manager.create_pending_area();
dbms_resource_manager.create_consumer_group(
consumer_group => 'BATH_GRP',
comment => '',
cpu_mth => 'ROUND-ROBIN');
dbms_resource_manager.submit_pending_area();
end;

2.把用户分配到用户组
把HR用户分配到OLTP_GRP
SQL> begin
dbms_resource_manager_privs.GRANT_SWITCH_CONSUMER_GROUP(
GRANTEE_NAME => 'HR',
CONSUMER_GROUP => 'OLTP_GRP',
GRANT_OPTION => false);
end;
/

用OE分配到OLTP_GRP
SQL> begin
dbms_resource_manager_privs.GRANT_SWITCH_CONSUMER_GROUP(
GRANTEE_NAME => 'OE',
CONSUMER_GROUP => 'OLTP_GRP',
GRANT_OPTION => false);
end;
/

把BI用户分配到BATH_GRP
SQL> begin
dbms_resource_manager_privs.GRANT_SWITCH_CONSUMER_GROUP(
GRANTEE_NAME => 'BI',
CONSUMER_GROUP => 'BATH_GRP',
GRANT_OPTION => false);
end;
/

用SH分配到BATH_GRP
SQL> begin
dbms_resource_manager_privs.GRANT_SWITCH_CONSUMER_GROUP(
GRANTEE_NAME => 'SH',
CONSUMER_GROUP => 'BATH_GRP',
GRANT_OPTION => false);
end;
/

将用户从用户组中移除
begin
dbms_resource_manager_privs.REVOKE_SWITCH_CONSUMER_GROUP(
REVOKEE_NAME => '用户名',
CONSUMER_GROUP => '用户组名');
end;
/

当你将用户添加到用户组的时候,但是用户默认的初始化组并没有改变
查看用户初始化默认的用户组
SQL> select username,INITIAL_RSRC_CONSUMER_GROUP from dba_users;

USERNAME                       INITIAL_RSRC_CONSUMER_GROUP
------------------------------ ------------------------------
OPS#ORACLEOAEC                DEFAULT_CONSUMER_GROUP
SCOTT                          DEFAULT_CONSUMER_GROUP
U1                             DEFAULT_CONSUMER_GROUP
U2                             DEFAULT_CONSUMER_GROUP
SYS                             SYS_GROUP
SYSTEM                         SYS_GROUP

3.将用户初始化用户组修改
begin
dbms_resource_manager.SET_INITIAL_CONSUMER_GROUP
(USER => 'HR',
CONSUMER_GROUP => 'OLTP_GRP');
end;
/
 
begin
dbms_resource_manager.SET_INITIAL_CONSUMER_GROUP
(USER => 'OE',
CONSUMER_GROUP => 'OLTP_GRP');
end;
/

begin
dbms_resource_manager.SET_INITIAL_CONSUMER_GROUP
(USER => 'BI',
CONSUMER_GROUP => 'BATH_GRP');
end;
/

begin
dbms_resource_manager.SET_INITIAL_CONSUMER_GROUP
(USER => 'SH',
CONSUMER_GROUP => 'BATH_GRP');
end;
/

查看用户的初始化组(此处copy过来的里面的信息时错误)
SQL> select username,INITIAL_RSRC_CONSUMER_GROUP from dba_users;

USERNAME                       INITIAL_RSRC_CONSUMER_GROUP
------------------------------ ------------------------------
OPS#ORACLEOAEC                DEFAULT_CONSUMER_GROUP
SCOTT                          DEFAULT_CONSUMER_GROUP
U1                             OLTP_GRP
U2                             BATH_GRP
SYS                             SYS_GROUP
SYSTEM                          SYS_GROUP

4.创建并激活资源计划
BEGIN
dbms_resource_manager.clear_pending_area();
dbms_resource_manager.create_pending_area();
dbms_resource_manager.create_plan('MY_DAY_PLAN','');
dbms_resource_manager.create_plan_directive(
    plan => 'MY_DAY_PLAN',
    group_or_subplan => 'BATH_GRP',
    comment => '',
    cpu_p1 => null, cpu_p2 => 20, cpu_p3 => null, cpu_p4 => null,
    cpu_p5 => null, cpu_p6 => null, cpu_p7 => null, cpu_p8 => null,
    parallel_degree_limit_p1 => null,
    active_sess_pool_p1 => null,
    queueing_p1 => null,
    switch_group => null,
    switch_time => null,
    switch_estimate => false,
    max_est_exec_time => null,
    undo_pool => null,
    max_idle_time => null,
    max_idle_blocker_time => null,
    switch_time_in_call => null
);
dbms_resource_manager.create_plan_directive(
    plan => 'MY_DAY_PLAN',
    group_or_subplan => 'OLTP_GRP',
    comment => '',
    cpu_p1 => null, cpu_p2 => 80, cpu_p3 => null, cpu_p4 => null,
    cpu_p5 => null, cpu_p6 => null, cpu_p7 => null, cpu_p8 => null,
    parallel_degree_limit_p1 => null,
    active_sess_pool_p1 => null,
    queueing_p1 => null,
    switch_group => null,
    switch_time => null,
    switch_estimate => false,
    max_est_exec_time => null,
    undo_pool => null,
    max_idle_time => null,
    max_idle_blocker_time => null,
    switch_time_in_call => null
);
dbms_resource_manager.create_plan_directive(
    plan => 'MY_DAY_PLAN',
    group_or_subplan => 'OTHER_GROUPS',
    comment => '',
    cpu_p1 => null, cpu_p2 => null, cpu_p3 => 100, cpu_p4 => null,
    cpu_p5 => null, cpu_p6 => null, cpu_p7 => null, cpu_p8 => null,
    parallel_degree_limit_p1 => null,
    active_sess_pool_p1 => null,
    queueing_p1 => null,
    switch_group => null,
    switch_time => null,
    switch_estimate => false,
    max_est_exec_time => null,
    undo_pool => null,
    max_idle_time => null,
    max_idle_blocker_time => null,
    switch_time_in_call => null
);
dbms_resource_manager.create_plan_directive(
    plan => 'MY_DAY_PLAN',
    group_or_subplan => 'SYS_GROUP',
    comment => '',
    cpu_p1 => 100, cpu_p2 => null, cpu_p3 => null, cpu_p4 => null,
    cpu_p5 => null, cpu_p6 => null, cpu_p7 => null, cpu_p8 => null,
    parallel_degree_limit_p1 => null,
    active_sess_pool_p1 => null,
    queueing_p1 => null,
    switch_group => null,
    switch_time => null,
    switch_estimate => false,
    max_est_exec_time => null,
    undo_pool => null,
    max_idle_time => null,
    max_idle_blocker_time => null,
    switch_time_in_call => null
);
dbms_resource_manager.submit_pending_area();
END;

激活资源计划
SQL> exec dbms_resource_manager.switch_plan('MY_DAY_PLAN');

PL/SQL procedure successfully completed.

查看当前生效的资源计划
SQL> show parameter resource_manager_plan

NAME                                 TYPE                VALUE
------------------------------------ -------------------------------- ------------------------------
resource_manager_plan                string                MY_DAY_PLAN

猜你喜欢

转载自blog.csdn.net/m18994118189/article/details/82869237