• 配置数据库资源管理器
• 访问和创建资源计划
• 创建使用者组
• 指定用于向使用者组分配资源的指令
• 将使用者组映射到计划
• 激活资源计划
• 监视资源管理器
- 数据库资源管理器:概览
资源管理器可用于:
• 管理混合工作量
• 控制系统性能
与通常只通过操作系统管理资源相比,使用数据库资源管理器(也称为资源管理器)可以
对计算机资源的分配进行更多的控制。如果由操作系统来决定资源的管理,则可能会导致
如下问题:
• 如果服务器进程非常多,则Oracle DB Server 进程会频繁进行操作系统上下文切换,
从而导致过多的开销
• 保持闩锁的数据库服务器进程会暂停
• 资源在所有Oracle DB 进程之间的分布不均衡,并且不能划分任务的优先级
• 不能管理特定于数据库的资源,例如并行执行服务器和活动会话
数据库资源管理器通过控制数据库内部的
执行调度来控制资源在各个会话之间的分布。通
过控制所要
运行的会话以及会话运行的时间长
度,数据库资源管理器可以确保资源分布与
计划指令相匹配,因此也符合业务目标。利用数据库资源管理器,无论系统的负载和用户
的数量如何,都可以保证用户组的处理资源达到最低限度。
DBMS_RESOURCE_MANAGER_PRIVS程序包包含授予和撤销
ADMINISTER_RESOURCE_MANAGER系统权限的过程,该权限是调用资源管理器的先决
条件。
- 数据库资源管理器:概念
使用数据库资源管理器来管理系统需要用到资源计划、资源使用者组和资源计划指令。
“资源使用者组”定义了具有相似的系统或数据库资源使用需求的一组
用户或会话。
“资源计划”指定如何在各个资源使用者组之间分配资源。使用数据库资源管理器还可以
在计划中创建计划,这称为“子计划”。
“资源计划指令”指定如何在使用者组或子计划之间共享某个特定资源。通过计划指令,
可以将资源使用者组及子计划与特定的资源计划关联起来。
“资源分配方法”确定分配任何特定资源时使用的策略。资源分配方法由资源计划和资源
使用者组使用。
- 使用资源管理器的原因
• 可以管理数据库和操作系统资源,例如:
– CPU 使用率
– 并行度
– 活动会话数
– 生成还原
– 操作执行时间
– 空闲时间
– 数据库合并
– 服务器合并
• 还可以指定标准,如果满足该标准,会话将自动切换到
另一个使用者组。
通过以下渠道访问:
• EM
• DBMS_RESOURCE_MANA
GER程序包
数据库资源管理器提供了多种
分配资源的方式:
• CPU 方法:可以指定在使用者组和子计划之间如何分配CPU 资源。
• 并行度限制:可以控制使用者组中任何操作的最大并行度。
•
具有队列的活动会话池:可以限制使用者组或子计划的并发活动会话数。如果某个组
的会话数超过了允许的最大值,则新的会话将放在队列中,等待某个活动会话完成。
还可以指定时间限制,超过此限制后会话将退出并返回错误。
• 还原池:可以控制使用者组或子计划能够生成的还原操作的总数。当还原空间的总数
超过UNDO_POOL指定的数量时,在同一组中其它会话释放还原空间或者增大使用者
组的还原池之前,不允许执行任何新的INSERT、UPDATE或DELETE命令。如果使
用者组在执行DML 语句时超过了限额,则中止操作并返回错误。此时仍可进行查询,
即便使用者组已经超出其还原阈值。
• 执行时间限制:可以指定操作所允许的最大执行时间。O
racle DB 使用基于成本的优
化程序统计信息来估计操作所需的时间
。如果耗时超过了所允许的最大时间
(MAX_EST_EXEC_TIME),则操作返回错误并且不会启动。如果资源使用者组有多个
指定了MAX_EST_EXEC_TIME的计划指令,则资源管理器将选择所有传入值中限制
性最强的那个值。
• 空闲时间限制:可以指定会话的空闲时间,超过该时间后将终止会话
(MAX_IDLE_TIME)。你可以进一步限制资源管理器,使其只终止阻止其它会话的会话
(MAX_IDLE_TIME_BLOCKER)。
• 使用者组切换:初始使用者组是在会话刚登录时所属的组。顶层调用被定义为将整个
PL/SQL 块视为一个调用,或类似地,将客户机单独发出的SQL 语句视为单独调用。
在中间层服务器实施会话共享的三层应用模型中,此功能的优势是最显而易见的。在
这种情况下,中间层在为某个最终用户执行一个调用后,可使用相同的会话为另一个
最终用户执行调用。因此,工作的分界线实际上为调用,并且上一个最终用户的操作
不会影响下一个最终用户。可以创建一个计划指令,使资源管理器在顶层调用结束时
将用户自动切换回初始使用者组。
注:不能在同一指令中同时指定SWITCH_TIME_IN_CALL和SWITCH_TIME这两个
参数。
SWITCH_TIME参数主要用于客户机/服务器应用程序,而
SWITCH_TIME_IN_CALL参数则用于三层应用程序。
• 数据库合并:使用资源管理器,可以优化资源在并发数据库会话之间的分配。数据库
合并要求应用程序之间彼此孤立。当一个应用程序的工作量增加时,这种增加不应影
响其它应用程序。此外,每个应用程序的性能还应保持一致。数据库合并的有效候选
应用程序是自动维护任务,因为目前这些应用程序可以100% 利用服务器的CPU 资源。
• 服务器合并:因为许多测试、开发和小型生产数据库无法充分利用它们所在的服务器,
所以服务器合并提供了一种可能的替代方法。使用服务器合并,可以通过在服务器上
运行多个数据库实例来更充分地利用资源。在运行多个数据库实例的多CPU 服务器上
管理CPU 分配的方法叫做“实例限制”。因为实例限制容易配置,并且不需要授权或
安装任何新软件,因此它是其它服务器合并工具(如虚拟化和O/S 工作量管理器)的
出色替代方案。
你可以使用Oracle Enterprise Manager 的图形化界面或DBMS_RESOURCE_MANAGER程序
包的命令行来访问资源计划。
- 默认维护资源管理器计划
sys@TEST0924> show parameter resource_manager_plan
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
resource_manager_plan string SCHEDULER[0x318D]:DEFAULT_MAIN
TENANCE_PLAN
自动维护任务依赖于在维护窗口期间启用的资源管理器。维护窗口打开时