Oracle 资源管理(resource manager)

  1. Oracle 资源管理(resource manager

假如管理一下具有如下问题的产品数据库:

后台批作业占用了大量的资源,将会阻碍了其他要同时运行的更重要的作业。

如要调度大型作业,但不能预计它们何时才能完成。

作业的优先次序没有得到区分,而致使重要的作业不能预先完成。

某些用户使用过量的CPU时间,从而导致总体资源缺乏,这时,不得不结束其会话。

有些用户在操作中使用非常高的并行度,这会降低系统的整体性能。

所有这些问题都源于DBA不能够在竞争中有效地分配有限的资源,针对于这些问题,我们可以使用 Oracle database resource manager 来进行管理。

下面我们以例子的形式来介绍Oracle资源管理(resource manager)的使用。

    1. 概述

一、Oracle Resource Manager存在的意义

 

1、如果数据库的资源分配由操作系统决定,会遇到如下问题:

1       Excessive overhead过度的开销

Excessive overhead results from operating system context switching OS 上下文切换)between Oracle Database server processes when the number of server processes is high.

2   Inefficient scheduling低效率的调度

The operating system deschedules database servers while they hold latches, which is inefficient.

3   Inappropriate allocation of resources不适当的资源分配

The operating system distributes resources equally among all active processes and cannot prioritize one task over another.

4   Inability to manager database-specific resourcessuch as parallel execution servers and active sessions

 

2Resource Manager允许数据库控制硬件资源的分配,在多用户并发执行不同优先级的Job时,不同的session可以按照不同的优先级对待,Resource Manager允许我们根据session的属性将session分类到不同的groups,然后对不同的groups分配不同的资源。

使用Resource Manager可以做到如下:

1   保护某个session分配到最小的CPU资源,而不管系统的压力和用户的数量。

2   针对不同的用户和应用分配不同比例的CPU时间。

3   限制用户组成员任何操作的并行深度。

4   管理并行队列中并行的执行顺序,紧急应用的并行可以优先于其他低优先级的并行。

5   限制group中用户可以使用并行的数量,这样可以确保所有可用的并行资源不会被分配到某一个group用户。

6   创建active session poolActive session pool由同一个group中用户session被允许并发active的最大数量组成。附加的session可以超过这个限制执行,当job队列中断后,可以指定超时时间。

7   通过如下方法管理和调用runaway session

1 修改group可以消耗CPU资源的比率值。

2 检测session或者call是否超过了指定CPU或者I/O的限制。然后自动的中断sessioncall,或切换其小于consumer group中指定的CPU资源数。

8   阻止优化器估算其运行时间超过指定限制的操作。

9   限制session可以被空闲的时间。

10  根据工作量的改变允许数据库使用不同的resource plan。可以动态的修改这些resource plan。也可以在Scheduler中使用resource plan

 

二、Oracle Resource Manager的组成元素

 

Element

Description

Resource consumer group

A group of sessions that are grouped together based on resource requirements. The Resource Manager allocates resources to resource consumer groups, not to individual sessions.

Resource plan

A container for directives that specify how resources are allocated to resource consumer groups. You specify how the database allocates resources by activating a specific resource plan.

Resource plan directive

Associates a resource consumer group with a particular plan and specifies how resources are to be allocated to that resource consumer group.

 

1 Resource Consumer Groups

1Resource Consumer Group是一个用户session的集合,其根据session需要的进程进行归类,当一个session创建之后,它就自动根据用户指定的规则映射到对应的consumer group

2DBA也可以手工的切换session到不同的consumer group。简言之,就是使用PL/SQL包来切换session到指定的consumer group

3)因为Resource Manager仅分配资源到一个consumer group,当一个session变成consumer group中的一员时,它的资源分配就由该consumer group决定。

4)在数据字典里一直存在3个特定的consumer groups,它们不能被修改和删除。

 

2 Resource plans

Resource plan是预先定义好的,可以创建任意个resource plan,但是在同一时刻只有一个resource plan是激活的。当resource plan是激活时,它的每个子resource plan控制每个资源分配到不同的consumer group。每个plan必须 包含一个指令,其分配资源到OTHER_GROUPSconsumer groupOTHER_GROUPS适用于所有的session,即使不是当前激活的plan

3 Resource Plan Directive

Resource Manager根据当前active resource planResource Plan Directive的设置分配资源到consumer groupsResource PlanResource Plan Directive是父子关系,每个Resource Plan Directive只对应一个consumer group

 

三、管理Resource Manager的权限

 

管理Resource Manager必须具有ADMINISTER_RESOURCE_MANAGER权限,在DBArole里已经包含了这个权限。

通过DBMS_RESOURCE_MANAGER_PRIVS包来执行ADMINISTER_RESOURCE_MANAGER权限的授予和撤销。该包中两个相关的procedures

Procedure

Description

GRANT_SYSTEM_PRIVILEGE

Grants the ADMINISTER_RESOURCE_MANAGER system privilege to a user or role.

REVOKE_SYSTEM_PRIVILEGE

Revokes the ADMINISTER_RESOURCE_MANAGER system privilege from a user or role.

 

如:授予TEST用户ADMINISTER_RESOURCE_MANAGER权限

SYS@ tsid > begin

  2  dbms_resource_manager_privs.grant_system_privilege(

  3  grantee_name =>'TEST',

  4  privilege_name =>'ADMINISTER_RESOURCE_MANAGER',

  5  admin_option =>FALSE);

  6  end;

  7  /

 

PL/SQL procedure successfully completed.

 

撤销TEST用户ADMINISTER_RESOURCE_MANAGER权限

SYS@ tsid > begin

  2  dbms_resource_manager_privs.revoke_system_privilege(

  3  revokee_name =>'TEST',

  4  privilege_name =>'ADMINISTER_RESOURCE_MANAGER');

  5  end;

  6  /

 

PL/SQL procedure successfully completed.

 

该包中另外两个procedures

GRANT_SWITCH_CONSUMER_GROUP

REVOKE_SWITCH_CONSUMER_GROUP

 

 

四、Resource Manager管理的资源类型

 

1 CPU

2 Degree of Parallelism Limit

可以限制同一个consumer group中最大的并行数,degree of parallelism是同一个操作的并行执行的数量,使用PARALLEL_DEGREE_LIMIT_P1指令来指定consumer group的并行限制。

Degree of parallelism limit仅对consumer group中的一个操作限制,其不限制同一个consumer group中所有错做的并行度。但可以通过PARALLEL_DEGREE_LIMIT_P1PARALLEL_TARGET_PERCENTAGE指令属性来实现该功能。

3 Parallel Target Percentage

这个功能仅从oracle 11gR2开始使用!

如果一个consumer group使用了所有的并行,那么当其他consumer group的高优先级的并行就没有parallel server来分配,可以通过限制特定consumer group的并行数来避免这个问题。

使用PARALLEL_TARGET_PERCENTAGE指令属性可以指定consumer group可以使用最大parallel server pool的比率。

例如,假设总共的parallel server32,在初始化参数里设置MY_GROUP consumer groupPARALLEL_SERVERS_TARGET50%,那么该组group最大就只能使用16parallel servers

4 Parallel Queue Timeout

这个功能从Oracle 11gR2以后才有!

当使用并行队列时,如果数据库没有足够的资源来执行并行,那么并行就会进入队列,直到有资源时才变成可用。但是存在一种情况,就是并行等待了很长的时间才执行,可以设置并行在队列中的最长等待时间来避免这种问题。

5 Active Session Pool with Queuing

可以控制单个consumer group中最大的并发的active sessions的数量。这个最大的数就是active session pool

6 Automatic Consumer Group Switching

This methodenables you to control resource allocation by specifying criteria that, if met,causes the automatic switching of a session to a specified consumer group.Typically, this method is used to switch a session from a high-priorityconsumer groupone that receives a high proportion of system resourcesto alower priority consumer group because that session exceeded the expectedresource consumption for a typical session in the group.

7 Canceling SQL and Terminating Sessions

可以使用命令取消或中止long-runingsession

8 Execution Time Limit

可以指定操作最大的执行时间,如果超过这个时间,操作将终止。

9 Undo Pool

可以为每个consumer group指定undo poolundo pool控制总的undo数量。当总的undo生成量超过了这个限制,那么当前的事务操作生成的undo会被中断,只有undo pool空间足够时,才可以执行。

10Idle Time Limit

    指定session空闲时间,当超过这个时间时,session被中断。

 

 

五、

1、查看Resource consumer group

SYS@ tsid > select consumer_group from dba_rsrc_consumer_groups;

 

CONSUMER_GROUP

------------------------------

OTHER_GROUPS

DEFAULT_CONSUMER_GROUP

SYS_GROUP

LOW_GROUP

AUTO_TASK_CONSUMER_GROUP

 

2、查看Resource Plan

SYS@ tsid > select plan from dba_rsrc_plans;

 

PLAN

------------------------------

SYSTEM_PLAN

INTERNAL_PLAN

INTERNAL_QUIESCE

 

    1. 授权

对于DBA,已经具有执行dbms_resource_manager程序包下的所有过程的权限,但对于其他用户,需要授予名为

administer_resource_manager的系统权限,以便使用Oracle resource manager。如下:

 begin

 dbms_resource_manager_privs.grant_system_privilege(

  grantee_name=>'dbonread',

  privilege_name=>'administer_resource_manager',

  admin_option=>true);

  end;

  /

begin

 dbms_resource_manager_privs.grant_system_privilege(

  grantee_name=>'dbonread01',

  privilege_name=>'administer_resource_manager',

  admin_option=>true);

  end;

  /

 

说明:我们利用dbms_resource_manager_privs.包中的gratn_system_privilege过程为用户dbonreaddbonread01授予administer_resource_manager权限。

    1. 创建未决区(工作区)

未决区是创建与资源消费组,资源计划,资源指示的临时工作区。创建如下:

exec dbms_resource_manager.clear_pending_area();
exec dbms_resource_manager.create_pending_area();

、、实际操作!!!

exec dbms_resource_manager.submit_pending_area;

    1. 创建资源消费组

根据实际需求创建所需要的用户组,需要注意的是虽然这一步并没有创建 OTHER_GROUPS 用户组,但是后面必须为 OTHER_GROUPS 用户组创建相对应的Plan Directive

范例:

SQL> BEGIN
  DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
  consumer_group => 'GROUP_OLTP',
  comment => 'Group of OLTP USERS...',
 
mgmt_mth => 'ROUND-ROBIN'); --该用户组内各会话的CPU资源采取轮询的分配方法
  6 END;
  7 /

资源消费组用来根据资源需求将类似的用户放到一起。例子如下:

begin

  dbms_resource_manager.create_consumer_group(

  consumer_group=>'app',

  comment=>'app user');

  end;

  /

 

begin

    dbms_resource_manager.create_consumer_group(

    consumer_group=>'admin',

    comment=>'user admin system');

 end;

  /

 

 

SQL>

说明:consuber_group用来指定资源消费组名,connent用来给资源消费组添加注释。还有一些默认的参数,

CPU_MTH,该参数有两个值为:run_to_completionround_robin(默认)。run_to_completion方法为优先调度那些占用较长时间的会话,

round_robin是使用一个循环调度系统。

对于上述,我们使用默认的CPU调度方法创建消费组appadmin。我们可以用如下的数据字典查看:

set lines 120

col consumer_group for a15

col cpu_method for a14

col mgmt_method for a14

select consumer_group,cpu_method,mgmt_method

  from dba_rsrc_consumer_groups

  where consumer_group in (upper('app'),upper('admin'));

 

CONSUMER_GROUP  CPU_METHOD     MGMT_METHOD

--------------- -------------- --------------

APP             ROUND-ROBIN    ROUND-ROBIN

ADMIN           ROUND-ROBIN    ROUND-ROBIN

 

    1. 创建资源计划

创建资源计划时需要注意的一点是如果 sub_plan 参数指定为 TRUE,那么这个计划只能作为子计划使用,并且不需要为 OTHER_GROUPS 创建 Plan Directive

资源计划包含各资源消费组之间资源分配的指示。例子如下:

begin

  dbms_resource_manager.create_plan(

  plan=>'membership_plan',

  cpu_mth=>'ratio',

  comment=>'new membership resource plan');

  end;

  /

说明:plan用来指定资源计划的名称,CPU_mth指定资源消费组之间分配CPU的方法,默认为emphasisI(百分比),

另一个值为ratio(比率)

connect添加注释。

还有一些其他默认的参数:active_sess_pool_mth此参数确定资源组中活动会话数目的限制;到11g版本,唯一一个值为active_sess_pool_absolute方法。parallel_degree_limit_mth此参数确定某个特定操作的并行度,到11g版本,唯一一个值为parallel_degree_limit_absolutesub_plan此参数确定是否子计划,默认为falsequeueing_mth此参数确定排队会话将执行的顺序,可以选项为fifo_timeout

    1. 创建资源计划指示

资源计划指示(resource plan directive)用来把资源计划分配到资源消费组中。例子如下:

begin

  dbms_resource_manager.create_plan_directive(

  plan=>'membership_plan',

  group_or_subplan=>'app',

  comment=>'app grooup',

  cpu_p1=>5);

  end;

  /

 

--5%-10%

BEGIN
dbms_resource_manager.clear_pending_area();
dbms_resource_manager.create_pending_area();

dbmsresource_manager.update_plan_directive(

  plan=>'membership_plan',

  group_or_subplan=>'app',

  new_cpu_p1=>50);

dbms_resource_manager.submit_pending_area();

  end;

  /

 

begin

  dbms_resource_manager.create_plan_directive(

  plan=>'membership_plan',

  group_or_subplan=>'admin',

  comment=>'admin group',

  cpu_p1=>70);

  end;

  /

 

 

begin

  dbms_resource_manager.create_plan_directive(

  plan=>'membership_plan',

  group_or_subplan=>'other_groups',

  comment=>'other group',

  cpu_p1=>20);

  end;

  /

 

 

SQL>         

 

 

针对会话映射到的每一个用户组创建资源计划指令,可以看做是数据库资源管理的控制核心。
这里可以控制的资源种类比较多:
a.CPU使用、
b.最大活跃会话数、
c.会话并行度、
d.会话最大空闲时间,
e.Undo使用大小等

SQL> BEGIN
  2 DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
  3 plan => 'PLAN1', --
将该Plan Directive 关联到 PLAN "Plan1"
  4 group_or_subplan => 'GROUP_OLAP', --
可以指定用户组,也可以指定Sub Plan,和上一个参数构成了 Plan Diretive 的唯一属性
  5 comment => 'Directives for OLAP consumer group...',
  6 active_sess_pool_p1 => 5, --
最大活跃会话数,达到该限制后其他会话进入 Inactive session queue
  7 queueing_p1 => 10, --
Inactive session queue 的等待超时时间
  8 parallel_degree_limit_p1 => 2,--最大并行度
  9 switch_group => 'KILL_SESSION',--在满足指定条件后,对会话所采取的操作
10 switch_time => 3, --执行时间限制,会话操作执行时间超过该值后,即被采取上一步的相应操作(second
11 switch_estimate => FALSE,  --如果设置为 TRUE,在操作执行前Oracle先估算执行时间以决定是否对其切换用户组
12 max_est_exec_time => 5,--最大估算执行时间,优化器对操作时间进行估算,如果超过该值则直接返回“ORA-07455
13 undo_pool => NULL,  --uncommited undo segments 限制(KB
14 max_idle_time => 300, --会话最大空闲时间
15 max_idle_blocker_time =>3,--Blocker会话的最大空闲时间
16 mgmt_p1 => 30, --CPU使用限制(Level 1
17 mgmt_p2 => 0); --CPU使用限制(Level 2
18 END;
19 /

PL/SQL procedure successfully completed.

SQL> BEGIN
  2 DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
  3 plan => 'PLAN1',
  4 group_or_subplan => 'GROUP_OLTP',                       --
为“GROUP_OLTP”用户组创建指令计划
  5 comment => 'Directives for OLTP consumer group...',
  6 active_sess_pool_p1 => 10,
  7 switch_group => 'CANCEL_SQL',
  8 switch_time => 3,max_idle_time => 3,
  9 mgmt_p1 => 60,
10 mgmt_p2 => 0);
11 END;
12 /

PL/SQL procedure successfully completed.

SQL> BEGIN
  2 DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
  3 plan => 'PLAN1',
  4 group_or_subplan => 'OTHER_GROUPS',                     --
为没有映射到以上用户组中的会话创建 Plan Directive
  5 comment => 'Directives for the other users group...',
  6 parallel_degree_limit_p1 => 1,
  7 mgmt_p1 => 0,
  8 mgmt_p2 => 100);  --CPU
使用限制(Level 2 100%,即 Level 1 分配剩下的10%
  9 END;
10 /

PL/SQL procedure successfully completed.

 

说明:plan用于指定资源计划,group_or_subplan用于指定资源消费组或子计划,connent用于添加注释。

cpu_pn此参数指定可在消费组或子计划中分配CPU资源。可以使用多层CPU资源分配,以区分出CPU的优先级。如,保证仅在层次一需求后还剩的CPU时,层次二才能获得CPU资源。 ACTIVE_SESS_POOL_P1此参数用来设置活动会话打开的最大数目 PARALLEL_DEGREE_LIMIT_P1此参数用来设置并行度的限制,MAX_IDLE_TIME此参数用来设置单个会话空间的最大时间。 SWITCH_GROUP此参数指定会话可根据特定的切换条件进行切换的消费组。两个切换组为cancel_sql kill_session。与

SWITCH_GROUP有关参数的设置,SWITCH_IO_MEGABYTES此参数指定会话在数据库在采取措施前可以传送的IO字节数据。 SWITCH_IO_REQS指定可执行的IO数目。SWITCH_FOR_CALL如果设置为trueOracle将完成顶层后被切换以原来的会话。

    1. 修改资源计划指示

BEGIN
dbms_resource_manager.clear_pending_area();
dbms_resource_manager.create_pending_area();
dbms_resource_manager.update_plan_directive(
    
plan => ?,
    group_or_subplan => ?,
    new_comment => ?,
    new_mgmt_p1 => ?, new_mgmt_p2 => ?, new_mgmt_p3 => ?, new_mgmt_p4 => ?,
    new_mgmt_p5 => ?, new_mgmt_p6 => ?, new_mgmt_p7 => ?, new_mgmt_p8 => ? ,
    new_parallel_degree_limit_p1 => ? ,
   
 new_switch_io_reqs => ?,
    new_switch_io_megabytes => ? 
,
    new_active_sess_pool_p1 => ?,
    new_queueing_p1 => ?,
    new_switch_group => ?,
    new_switch_time => ?,
    new_switch_estimate => case ? 
when 'false' then false when 'true' then true else false end ,
    new_max_est_exec_time => ?,
    new_undo_pool => ? ,
    new_max_idle_time => ?,
    new_max_idle_blocker_time => ?,
    new_switch_for_call => case ? 
when 'false' then false when 'true' then true else false end

);
dbms_resource_manager.submit_pending_area();

END;

 

    1. 验证并提交未决区

exec dbms_resource_manager.validate_pending_area;

exec dbms_resource_manager.submit_pending_area;

SQL>

我们用如下的方式进行查看:

select group_or_subplan,cpu_p1,cpu_p2,cpu_p3,status

 from dba_rsrc_plan_directives

  where plan = upper('test');

GROUP_OR_SUBPLAN                   CPU_P1     CPU_P2     CPU_P3 STATUS

------------------------------ ---------- ---------- ----------

APP                                    10          0          0

ADMIN                                  70          0          0

OTHER_GROUPS                           20          0          0

    1. 指派用户到资源消费组、
      1. 方案1  set_initial_consumer_group

创建用户后,Oracle会分配一个默认的资源消费组,为default_consumer_group,如果指派用户到其他消费组,那么,

需要授予如下权限:

exec dbms_resource_manager_privs.grant_switch_consumer_group(grantee_name=>'dbonread',consumer_group=>'app',grant_option=>true);

SQL>

exec dbms_resource_manager_privs.grant_switch_consumer_group(grantee_name=>'dbonread01',consumer_group=>'admin',grant_option=>true);

SQL>

下面我们进行用户分配:

SQL>exec dbms_resource_manager.set_initial_consumer_group('dbonread','app');

exec dbms_resource_manager.set_initial_consumer_group('dbonread01','admin');

 

关于会话资源消费组的自动指派和消费组之间的切换及复杂管理,我这里没有列出,方法一样,只是多了几道手续而已,有需要的请查阅相关资料或给我留言。

下面,我们查看用户dbonreaddbonread01的属性:

select username,initial_rsrc_consumer_group

  from dba_users

  where username in(upper('dbonread'),upper('dbonread01'));

 

USERNAME                       INITIAL_RSRC_CONSUMER_GROUP

------------------------------ ------------------------------

DBONREAD                       APP

DBONREAD01                     ADMIN

      1. 方案2 SET_CONSUMER_GROUP_MAPPING

 

DBMS_RESOURCE_MANAGER.set_consumer_group_mapping

DBMS_RESOURCE_MANAGER.set_consumer_group_mapping_pri

DBMS_RESOURCE_MANAGER.set_initial_consumer_group


根据会话的登录和运行属性建立该会话和资源用户组的映射关系,可以使用过程 SET_INITIAL_CONSUMER_GROUP 通过“Username”设置用户的初始用户资源组,该过程在11gR1被弃用后,改为使用过程 SET_CONSUMER_GROUP_MAPPING 通过“Session Attribute”来映射用户组。
这里所说的会话属性包括: 

oracle_user,

client_os_user,

client_program,

client_machine,

module_name ...

module_name_action

service_moudle

service_name
当会话的多个属性映射发生冲突时,会根据每个属性的优先级来决定最终映射关系,使用这个过程来调整属性的优先级:SET_CONSUMER_GROUP_MAPPING_PRI

SQL> BEGIN
  2 DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(
  3 attribute => 'CLIENT_MACHINE',
  4 value => 'ASM', --
将从“ASM”客户机发起的会话映射到“GROUP_OLAP”用户组
  5 consumer_group => 'GROUP_OLAP');
  6 END;
  7 /

PL/SQL procedure successfully completed.

SQL> BEGIN
  2 DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(
  3 attribute => 'CLIENT_MACHINE',
  4 value => 'WORKGROUP\XIAO', 
--将从“WORKGROUP\XIAO”客户机发起的会话映射到“GROUP_OLTP”用户组
  5 consumer_group => 'GROUP_OLTP');
  6 END;
  7 /

PL/SQL procedure successfully completed.

    1. 启用Oracle Resource Manager

通过设置init.oraspfile.ora文件中的resource_manager_plan参数来进行启用,如下:

alter system set resource_manager_plan = membership_plan;

说明:如果需要停止,那么将其设置为空即可(resource_manager_plan=' ')。下面,我们查看当前的活动资源:

select name,is_top_plan from v$rsrc_plan;

 NAME                             IS_TO

-------------------------------- -----

MEMBERSHIP_PLAN                  TRUE

该资源成功使用。

    1. ---完整测试:

实验目的,旨在限制用户nmosdb用户使用cpu比率在10%,其他用户在90%.

 

create user nmosdb identified by "ora#123";

grant connect ,resource to nmosdb;

 

begin

 dbms_resource_manager_privs.grant_system_privilege(

  grantee_name=>'nmosdb',

  privilege_name=>'administer_resource_manager',

  admin_option=>true);

  end;

  /

 

exec dbms_resource_manager.clear_pending_area();
exec dbms_resource_manager.create_pending_area();

 

BEGIN
  DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
  consumer_group => 'READ_GRPS',
  comment => 'Group of OLXP USERS...',
  mgmt_mth => 'ROUND-ROBIN');

END;

/

 

begin

  dbms_resource_manager.create_plan(

  plan=>'test',

  cpu_mth=>'ratio',

  comment=>'nexxxw membership resource plan');

  end;

  /

begin

  dbms_resource_manager.create_plan_directive(

  plan=>'test',

  group_or_subplan=>'READ_GRPS',

  comment=>'apxxxp grooup',

  cpu_p1=>10);

  end;

  /

begin

  dbms_resource_manager.create_plan_directive(

  plan=>'test',

  group_or_subplan=>'OTHER_GROUPS',

  comment=>'OTHER grooup',

  cpu_p1=>90);

  end;

  /

exec dbms_resource_manager.validate_pending_area;

exec dbms_resource_manager.submit_pending_area;

select group_or_subplan,cpu_p1,cpu_p2,cpu_p3,status

 from dba_rsrc_plan_directives

  where plan = upper('test');

 

 


BEGIN
  DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(
  attribute => 'oracle_user',
  value => 'nmosdb',consumer_group => 'READ_GRPS');
  END;
  /

 

alter system set resource_manager_plan = test;

select name,is_top_plan from v$rsrc_plan;

 

Other groups当前的资源计划中,没有明确指定资源分配的所有消费群。

Sys_grouplow_group 用于执行系统计划的消费群。

 

监本2

 

    1. OCP题目

IO超过直接kill

You  plan  to  control  the  sessions  performing  a  huge  number  of  I/O  operations.  Your  requirement

is  to  kill  the  session  when  it  exceeds  a  specified  number  of  I/Os.

Implement  the  database  resource  manager  to  add  the  SWITCH_IO_REQS  and

SWITCH_GROUP  directives.

优先匹配:

B. SET_MAPPING_PRIORITY

资源查询

SELECT  T.NAME,T.ACTIVE_SESSIONS,T.QUEUE_LENGTH,T.CONSUMED_CPU_TIME,T.CPU_WAITS,T.CPU_WAIT_TIME  FROM V$RSRC_CONSUMER_GROUP T

你可能感兴趣的:(ORACLE数据库基础知识)