暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle DB资源管理(1)

Oracle微学堂 2021-07-03
1324

配置数据库资源管理器

访问和创建资源计划

创建使用者组

指定用于向使用者组分配资源的指令

将使用者组映射到计划

激活资源计划

监视资源管理器

 

  • 数据库资源管理器:概览

资源管理器可用于:

管理混合工作量

控制系统性能

与通常只通过操作系统管理资源相比,使用数据库资源管理器(也称为资源管理器)可以对计算机资源的分配进行更多的控制。如果由操作系统来决定资源的管理,则可能会导致如下问题:

如果服务器进程非常多,则Oracle DB Server 进程会频繁进行操作系统上下文切换,从而导致过多的开销

保持闩锁的数据库服务器进程会暂停

资源在所有Oracle DB 进程之间的分布不均衡,并且不能划分任务的优先级

不能管理特定于数据库的资源,例如并行执行服务器和活动会话

数据库资源管理器通过控制数据库内部的执行调度来控制资源在各个会话之间的分布。通过控制所要运行的会话以及会话运行的时间长度,数据库资源管理器可以确保资源分布与计划指令相匹配,因此也符合业务目标。利用数据库资源管理器,无论系统的负载和用户的数量如何,都可以保证用户组的处理资源达到最低限度。

DBMS_RESOURCE_MANAGER_PRIVS程序包包含授予和撤销

ADMINISTER_RESOURCE_MANAGER系统权限的过程,该权限是调用资源管理器的先决条件。

 

  • 数据库资源管理器:概念

使用数据库资源管理器来管理系统需要用到资源计划、资源使用者组和资源计划指令。

资源使用者组定义了具有相似的系统或数据库资源使用需求的一组用户或会话

资源计划指定如何在各个资源使用者组之间分配资源。使用数据库资源管理器还可以在计划中创建计划,这称为子计划

资源计划指令指定如何在使用者组或子计划之间共享某个特定资源。通过计划指令,可以将资源使用者组及子计划与特定的资源计划关联起来。

资源分配方法确定分配任何特定资源时使用的策略。资源分配方法由资源计划和资源使用者组使用。

 

  • 使用资源管理器的原因

可以管理数据库和操作系统资源,例如:

– CPU 使用率

并行度

活动会话数

生成还原

操作执行时间

空闲时间

数据库合并

服务器合并

还可以指定标准,如果满足该标准,会话将自动切换到另一个使用者组。

通过以下渠道访问:

• EM

• DBMS_RESOURCE_MANAGER程序包

 

数据库资源管理器提供了多种分配资源的方式:

• CPU 方法:可以指定在使用者组和子计划之间如何分配CPU 资源。

并行度限制:可以控制使用者组中任何操作的最大并行度。

 具有队列的活动会话池:可以限制使用者组或子计划的并发活动会话数。如果某个组的会话数超过了允许的最大值,则新的会话将放在队列中,等待某个活动会话完成。

还可以指定时间限制,超过此限制后会话将退出并返回错误。

还原池:可以控制使用者组或子计划能够生成的还原操作的总数。当还原空间的总数超过UNDO_POOL指定的数量时,在同一组中其它会话释放还原空间或者增大使用者组的还原池之前,不允许执行任何新的INSERTUPDATEDELETE命令。如果使用者组在执行DML 语句时超过了限额,则中止操作并返回错误。此时仍可进行查询,即便使用者组已经超出其还原阈值。

执行时间限制:可以指定操作所允许的最大执行时间。Oracle DB 使用基于成本的优化程序统计信息来估计操作所需的时间。如果耗时超过了所允许的最大时间(MAX_EST_EXEC_TIME),则操作返回错误并且不会启动。如果资源使用者组有多个指定了MAX_EST_EXEC_TIME的计划指令,则资源管理器将选择所有传入值中限制性最强的那个值。

空闲时间限制:可以指定会话的空闲时间,超过该时间后将终止会话(MAX_IDLE_TIME)。你可以进一步限制资源管理器,使其只终止阻止其它会话的会话(MAX_IDLE_TIME_BLOCKER)

使用者组切换:初始使用者组是在会话刚登录时所属的组。顶层调用被定义为将整个PL/SQL 块视为一个调用,或类似地,将客户机单独发出的SQL 语句视为单独调用。

在中间层服务器实施会话共享的三层应用模型中,此功能的优势是最显而易见的。在这种情况下,中间层在为某个最终用户执行一个调用后,可使用相同的会话为另一个最终用户执行调用。因此,工作的分界线实际上为调用,并且上一个最终用户的操作不会影响下一个最终用户。可以创建一个计划指令,使资源管理器在顶层调用结束时将用户自动切换回初始使用者组。

注:不能在同一指令中同时指定SWITCH_TIME_IN_CALLSWITCH_TIME这两个参数。

SWITCH_TIME参数主要用于客户机/服务器应用程序,而SWITCH_TIME_IN_CALL参数则用于三层应用程序。

数据库合并:使用资源管理器,可以优化资源在并发数据库会话之间的分配。数据库合并要求应用程序之间彼此孤立。当一个应用程序的工作量增加时,这种增加不应影响其它应用程序。此外,每个应用程序的性能还应保持一致。数据库合并的有效候选应用程序是自动维护任务,因为目前这些应用程序可以100% 利用服务器的CPU 资源。

服务器合并:因为许多测试、开发和小型生产数据库无法充分利用它们所在的服务器,所以服务器合并提供了一种可能的替代方法。使用服务器合并,可以通过在服务器上运行多个数据库实例来更充分地利用资源。在运行多个数据库实例的多CPU 服务器上管理CPU 分配的方法叫做实例限制。因为实例限制容易配置,并且不需要授权或安装任何新软件,因此它是其它服务器合并工具(如虚拟化和O/S 工作量管理器)的出色替代方案。

你可以使用Oracle EnterpriseManager 的图形化界面或DBMS_RESOURCE_MANAGER程序包的命令行来访问资源计划。

 

  • 默认维护资源管理器计划

sys@TEST0924> show parameterresource_manager_plan

 

NAME                               TYPE        VALUE

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

resource_manager_plan               string     SCHEDULER[0x318D]:DEFAULT_MAINTENANCE_PLAN

自动维护任务依赖于在维护窗口期间启用的资源管理器。维护窗口打开时,会自动设置DEFAULT_MAINTENANCE_PLAN资源管理器计划,以控制自动维护任务使用的CPU 数量。为了能够给维护窗口中的各项可能任务指定不同的优先级,为DEFAULT_MAINTENANCE_PLAN分配了多个使用者组。组和计划之间的层次结构如图中所示。

对于高优先级任务,请参阅其组分配:

• “优化程序统计信息收集任务位于ORA$AUTOTASK_STATS_GROUP使用者组中。

• “段指导自动任务位于ORA$AUTOTASK_SPACE_GROUP使用者组中。

• “自动SQL 优化任务位于ORA$AUTOTASK_SQL_GROUP使用者组中。

注:如有必要,可以更改分配给ORA$AUTOTASK_HIGH_SUB_PLAN中的各个自动维护任务使用者组的CPU 资源百分比。

 

  • 示例:DEFAULT_PLAN

DEFAULT_PLAN资源计划是所提供的默认计划之一。它包含的指令适用于下面提供的使用者组:

• SYS_GROUPSYSSYSTEM用户的初始使用者组。

• OTHER_GROUPS:用于在活动资源计划之外的所有使用者组拥有的会话。任何活动计划中都必须有针对OTHER_GROUPS的计划指令。

• ORA$AUTOTASK_SUB_PLAN:此计划中优先级低于SYS_GROUPOTHER_GROUPS的组。

• ORA$DIAGNOSTICS:此计划中优先级与ORA$AUTOTASK_SUB_PLAN相同的组。

ORA$组的优先级低可防止自动维护工作消耗过多的系统资源。

用户的初始使用者组是该用户创建的任何会话最初所属的使用者组。如果没有为用户设置初始使用者组,则DEFAULT_CONSUMER_GROUP将自动成为用户的初始使用者组。

可以使用,也可以不使用DEFAULT_PLAN及关联的资源使用者组。它可以用作新资源计划的模板;可对其进行修改或删除。请根据实际环境使用。

 

  • 潜在工作流

必需的资源管理器对象的工作流:

创建新的资源计划

创建使用者组

将用户分配至组

指定资源计划指令

激活资源计划

 

DBMS_RESOURCE_MANAGER.CREATE

_CONSUMER_GROUP(

CONSUMER_GROUP => 'APPUSER', 

MGMT_MTH => 'ROUND-ROBIN',

COMMENT => '');

 

DBMS_RESOURCE_MANAGER_PRIVS.

GRANT_SWITCH_CONSUMER_GROUP

(

grantee_name => 'PM', 

consumer_group => 'APPUSER', 

grant_option => FALSE );

 

要创建新计划,必须配置多个资源管理器对象。

创建新的资源计划

调度程序可以在调度程序窗口范围内自动更改资源管理器计划。如果不希望使用自动切换,则取消选中默认的“Automatic PlanSwitching Enabled(已启用自动计划切换)复选框。

创建使用者组

使用EM 中的“Resource Consumer Groups(资源使用者组)页创建或编辑使用者组及说明,添加或删除其用户(成员)以及定义或编辑其数据库角色。

指定一种资源分配方法,以确定如何在使用者组中的会话之间分配CPU 资源。“Round Robin(循环)调度可确保所有会话均能合理执行。因此,默认分配方法是“Round Robin(循环)“Run to Completion(运行至完成)分配方法指定优先处理活动时间最长的会话。使用DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP过程的MGMT_MTH选项可以实现等效的功能。

将用户分配至组

应将用户分配至资源使用者组。用户的默认使用者组是用户创建的任何会话最初所属的组。如果没有为用户设置使用者组,则用户的初始使用者组默认为DEFAULT_CONSUMER_GROUP。必须先直接向用户(或者PUBLIC)授予切换到某个使用者组的切换权限,然后才能使该使用者组成为用户的默认使用者组。切换权限不能从授予给用户的角色继承。

• DBMS_RESOURCE_MANAGER_PRIVS程序包中包含将资源使用者组分配至用户的过程。授予用户切换权限后,用户可以切换到其它使用者组。

 

  • 指定资源计划指令

如果不使用Oracle EnterpriseManager 创建资源计划或资源使用者组,则必须先创建一个临时等待区。这是一个暂存区,可以在所做的更改生效之前存放并验证这些更改。

Oracle EnterpriseManager 中,有多个可用于指定计划指令的属性页:

1.“General(一般信息)页上,将使用者组与计划关联,并通过MGMT_MTH值指定每个使用者组或子计划分得的CPU 资源。

2.指定并行度限制来控制使用者组中任何操作的最大并行度。

3.可以控制使用者组中允许的并发活动会话的最大数量。整个并行执行会话计为一个活动会话。

4.可以控制使用者组能够生成的还原总数。

5.可以指定阈值,如执行时间限制(以秒为单位)、I/O 限制(以MB 为单位)和I/O 请求限制(以请求数为单位)。

6. 可以指定会话处于空闲状态的时间量,超过后将终止会话。可以进一步限制此类终止,使其只应用于那些阻塞其它会话的会话。

注:对于图中使用标签编号的指令,后面会进一步详细阐述。如果在后面的内容中看到指令标签n”的字样,请参阅上图。

 

  • 资源计划的资源分配方法

资源分配方法确定了资源管理器如何向资源使用者组或资源计划分配特定资源。创建资源计划时,需要为以下资源分配方法指定值。

通过MGMT_MTH参数指定CPU 分配的方式有两种:

• EMPHASIS是单级计划的默认方法。它也用于多级计划,它以百分比形式指定CPU 如何在使用者组之间分配。

• RATIO适用于单级计划,它使用比率来指定如何分配CPU

PARALLEL_DEGREE_LIMIT_MTH限制任何操作的最大并行度。只能为资源使用者组,而不能为子计划指定此方法。PARALLEL_DEGREE_LIMIT_ABSOLUTE方法是唯一的可能值,该方法指定可以为一个操作分配的进程数量。如果有多个计划指令引用了相同的子计划或使用者组,则所有可能值中的最小值将用作该子计划或使用者组的并行度限制。

ACTIVE_SESS_POOL_MTH参数限制活动会话的数量。所有其它会话均为非活动的,在队列中等待激活。此参数的唯一值(即唯一可用的方法)是PARALLEL_DEGREE_LIMIT_ABSOLUTE,该值也是此参数的默认值。

QUEUING_MTH控制队列中非活动会话的执行顺序。FIFO_TIMEOUT是默认且唯一可用的方法。

 

  • EMPHASISRATIO的比较

EMPHASIS这一CPU 分配方法确定在资源计划中对不同使用者组中的会话的重视程度。

CPU 使用率的分配级别为从1 8,级别1 的优先级最高。百分比指定如何将CPU 资源分配给每一级中的各个使用者组。

以下规则适用于EMPHASIS资源分配方法:

•CPU 资源在给定级别按指定的百分比分配。为资源使用者组指定的CPU 百分比是该使用者组在给定级别可以使用的最大值。

给定级别上未使用的使用者资源可供下一级别的使用者组使用。例如,如果级别1 的使用者组只使用了60% 的可用资源,则其余的40% 可供级别2 的使用者组使用。

任何给定级别的百分比总和必须小于等于100

对于没有明确指定计划指令的所有级别,其所有子计划或使用者组的默认资源是0%

• EMPHASIS资源分配方法避免了资源缺乏问题,该问题导致优先级较低的使用者没有运行的机会。

 

RATIO策略是一种单级别的CPU 分配方法。将指定要为使用者组分配的CPU 比率相对应的数字,而不是百分比。

例如,假定有三个使用者组OLTP_USERSDSS_USERSBATCH_USERS,可以指定下列比率:

• OLTP_USERS: 4

• DSS_USERS: 3

• BATCH_USERS: 2

• OTHER: 1

这就类似于让OLTP 用户获得40% 的资源、DSS 用户获得30% 的资源、批用户获得20% 的资源、所有其它使用者组获得10% 的可用资源。

如果OTHERDSS_USERS使用者组中当前都没有使用者在使用CPU 资源,则OLTP_USERS使用者组将获得三分之二的可用资源,而BATCH_USERS使用者组将获得

其余三分之一的可用资源。

扫描二维码关注我的微学堂

搜索刘老师微信号:Rman-2014,备注“Oracle学习与咨询”,即可添加好友;或者扫描下面二维码,关注我的“微学堂”公众号,了解最新OCP认证动态、题库及答案解析、培训机构及讲师介绍、课堂授课内容等。每天还有一篇技术文章发布哦!



文章转载自Oracle微学堂,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论