0
点赞
收藏
分享

微信扫一扫

Database Resource Manager New Features(原创)


你熟悉早期版本中的数据库资源管理器(资源管理器)。使用数据库资源管理器可以在竞争的数据库会话之间有效地分配资源。以下是资源管理器的关键元素:

  • 资源使用者组是一组共享类似资源要求的会话。资源管理器将资源直接分配给资源使用者组,而不是单个会话。
  • 资源计划是指示如何在资源使用者组中传播的指令的容器。在任何给定时间,某个资源计划都处于活动状态。
  • 资源计划指令指示哪些使用者属于哪个资源使用者组,以及如何将各个资源分配给该资源使用者组。

在以下方面有与数据库资源管理器相关的增强功能:

  • 每会话 I/O 限制
  • 新的混合工作负载资源计划

CREATE_PLAN_DIRECTIVE过程的
CPU_Pn参数现已弃用。请改用新的MGMT_Pn参数。此外,在同
一过程中,使用新的 switch_call 参数,而不是 switch_
time_in_call 参数。
每会话 I/O 限制

资源管理器提供手动和自动方法,用于将用户的会话切换到其他资源使用者组。但是,无论是手动更改还是自动更改当前资源使用者组,更改都不会保留,并且当用户再次登录时,用户的默认资源使用者组将保持不变。在 Oracle 数据库 10g 中,会话属性的更改可能会触发会话到另一个资源使用者组的自动切换。会话属性的更改可能会导致新的会话到使用者组映射规则生效,该规则指示资源管理器根据会话属性的动态更改将会话移动到另一个优先级通常较低的组。Oracle 数据库 11g 提供了第二种方法,可自动将用户的会话从一个使用者组切换到另一个使用者组。现在,当会话超过最初分配到该会话的使用者组设置的 CPU 或 I/O 消耗限制时,也会发生自动会话切换。因此,您现在可以像在以前的版本中那样使用映射规则指定自动资源使用者组切换,也可以通过设置资源限制来指定。如果用户使用过多的CPU,则不必终止该用户的会话;可以设置自动资源组切换,以便将用户自动分配到 CPU 分配较低的资源组。

通过设置资源限制指定自动切换

现在,在为使用者组创建资源计划指令时,可以为使用者组中的所有会话指定 CPU 和 I/O 消耗的限制。更具体地说,您可以指定当会话中的单个数据库调用超过 CPU 或 I/O 限制时数据库可以执行的操作。当会话超过特定资源限制时,您可以选择以下操作之一:

  • 将会话切换到资源分配较低的另一个资源使用者组。为此,必须首先向会话所有者授予对新资源使用者组的“切换”权限。
  • 数据库可以终止会话。
  • 数据库可以中止发出调用的 SQL 语句。

数据库仅允许实际消耗资源的会话动态切换其资源使用者组。正在等待用户输入或等待 CPU 的会话不符合在自动切换功能下切换其资源使用者组的条件。自动会话切换涉及使用以下资源计划指令参数,这些参数在CREATE_RESOURCE_PLAN过程中指定。以下部分中的示例说明了如何使用各种参数。

  • switch_group:当满足切换条件时,会话自动切换到的使用者组。以下是有关此参数的一些注意事项:
  1. 默认值为空。
  2. 如果组名CANCEL_SQL,则数据库将取消当前数据库调用。
  3. 如果组名KILL_SESSION,则会话将终止。
  • switch_time:指定在数据库将会话切换到switch_group 参数指定的会话之前,调用可以执行的持续时间。默认值为“无限制”。
  • switch_estimate:如果将此参数设置为 TRUE,则数据库将在调用开始之前估计每个调用的执行时间。如果调用的估计执行时间大于 switch_time 参数指定的限制,则数据库会将会话切换到指定的组(由 switch_group 参数指定)。默认值为假。
  • switch_io_megabytes:指定在数据库执行操作之前,会话可以以读取和写入操作的形式传输的最大 I/O(以 MB 为单位)。默认值为 NULL,这意味着它是无限制的。
  • switch_io_reqs:指定在数据库执行SWITCH_GROUP 参数指定的操作之前,会话可以执行的最大 I/O 请求数。默认值为 NULL,这意味着它是无限制的。
  • switch_for_call:指示在顶部呼叫完成后是否切换回初始使用者组 (TRUE) 或不切换回初始使用者组 (FALSE)

请注意,switch_io_megabytes和switch_io_reqs参数使您能够在创建资源计划指令时指定 I/O 资源限制。当数据库动态切换会话的资源使用者组时,允许使用者组运行的会话数超过其活动会话池所允许的会话数。

添加了新的DBA_HIST_RSRC_PLAN和DBA_HIST_RSRC_CONSUMER_GROUP视图,以提供 V$RSRC_PLAN_HISTORY 和 V$RSRC_CONS_GROUP_HISTORY 视图中数据的历史视图。V$RSRCMGRMETRIC_HISTORY视图显示从 V$RSRCMGRMETRIC 视图中获取的一小时指标。

自动会话切换的示例

新的 I/O 参数意味着现在可以根据经过的时间、I/O 请求和 I/O 的任意组合(以 MB 为单位)切换使用者组、取消 SQL 语句或终止会话。如果经过的时间超过 120 秒、I/O 请求数超过 5000 或请求的 I/O 量超过 1024M,以下示例会将会话内当前呼叫的资源使用者组从oltp_group切换到batch_group。

BEGIN
    DBMS_RESOURCE_MANAGER.clear_pending_area();
    DBMS_RESOURCE_MANAGER.create_pending_area();
    DBMS_RESOURCE_MANAGER.create_plan('MY_PLAN','');
    DBMS_RESOURCE_MANAGER.create_plan_directive(
        plan                  => 'my_plan',
        group_or_subplan      => 'other_groups',
        comment => ' other_groups');
    DBMS_RESOURCE_MANAGER.create_plan_directive(
        plan                  => 'my_plan',
        group_or_subplan      => 'oltp_group',
        comment               => 'OLTP GROUP',
        mgmt_p1               => 70,
        switch_group          => 'batch_group',

switch_time = > 120,
switch_io_reqs = > 5000,
switch_io_megabytes = > 1024,
max_idle_time = > 20,
switch_for_call = > TRUE
);
DBMS_RESOURCE_MANAGER提交待定区域();
结束;

/

以下示例将终止会话,如果它消耗超过 4096M 的 I/O.BEGIN

DBMS_RESOURCE_MANAGER.create_plan_指令(
计划 = > “my_plan”,
group_or_subplan = > “oltp_group”,
注释 = > “OLTP 组”,
mgmt_p1 = > 70,
switch_group = > “KILL_SESSION”,
switch_io_megabytes = > 4096);
结束;

/

预先创建的混合工作负载资源计划

Oracle 数据库 11g 提供了一个名为 MIXED_ WORKLOAD_PLAN 的新预定义资源计划。此 Oracle 提供的计划优先于批处理作业的交互式操作。默认情况下,该计划处于禁用状态,您必须启用它才能将此计划分配给用户会话。MIXED_WORKLOAD_PLAN资源计划由以下组或子计划组成:

  • interactive_group,主要用于短期在线交易
  • batch_group,主要用于长批量操作

以下是 Oracle 将 CPU 分配给MIXED_WORKLOAD_PLAN中不同资源使用者组的方式:

  • sys_group在级别 1 处获得 100% 的 CPU。
  • interactive_group优先于batch_group,因为其 CPU 资源分配是级别 2 分配的 85%。2 级 CPU 分配的另外 15% 在以下子计划和组中平均分配:
  1. 现在$AUTOTASK_SUB_PLAN
  2. 诊断
  3. OTHER_GROUPS
  • batch_group只获得 3 级 CPU 分配,尽管它是 100%。
  • 如果映射到interactive_group的会话的执行时间超过 60 秒,数据库会自动将其切换到batch_group。对于interactive_group,以下自动使用者资源组切换参数值将保持不变:
  1. switch_group:批处理组
  2. switch_time:60秒
  3. switch_for_call:真

通过将联机应用程序用户映射到interactive_group使用者组,将批处理应用程序映射到batch_group使用者组,可以利用预构建的资源计划。您可以修改 cpu 资源分配到batch_group和interactive_group,以满足工作负载的需求。

 

参考至:《McGraw.Hill.OCP.Oracle.Database.11g.New.Features.for.Administrators.Exam.Guide.Apr.2008》

http://www.oracle-base.com/articles/11g/resource-manager-enhancements-11gr1.php

本文原创,转载请注明出处、作者

如有错误,欢迎指正


举报

相关推荐

0 条评论