数据库资源管理器通过控制数据库内部的执行调度来控制资源在各个会话之间的分布。通过控制所要运行的会话以及会话运行的时间长度,数据库资源管理器可以确保资源分布与计划指令相匹配,因此也符合业务目标。
请注意,oracle resource manager对CPU的限制粒度为消费组(consumer group), 无法细化控制消费组内个别进程消耗CPU的比例,只要不超出该消费组的CPU限制,消费组内的单个或多个进程的CPU使用不受限制。
10g中Resource Manager资源管理器可以控制的资源种类:
- Oracle进程的CPU使用率
- 并行度(Parallel)
- UNDO数量
- SQL语句操作执行时间(Execute Time)
- 会话空闲时间(Idle Time) ---连接用户处于unactive状态超过idle time,会话自动被kill
- 活跃会话(session)数 --- 注意:是活跃即处于active状态的会话
CPU资源使用说明:
一, EMPHASIS CPU 分配方法确定在资源计划中对不同使用者组中的会话的重视程度。CPU
占用率的分配级别为从1 到8,级别1 的优先级最高。百分比指定如何将CPU 资源分配
给每一级中的各个使用者组。
以下规则适用于EMPHASIS 资源分配方法:
CPU 资源在给定级别按指定的百分比分配。为资源使用者组指定的CPU 百分比是该
使用者组在给定级别可以使用的最大值。
给定级别上没有使用的使用者资源可供下一级别的使用者组使用。例如,如果级别1
的使用者组只使用了60% 的可用资源,则其余的40% 可供级别2 的使用者组使用。
任何给定级别的百分比总和必须小于等于100。
对于没有明确指定计划指令的所有级别,其所有子计划或使用者组的默认资源是0%。
EMPHASIS 资源分配方法避免了资源缺乏问题,该问题导致优先级较低的使用者没
有运行的机会。
二,RATIO 策略是一个单级别CPU 分配方法。将指定要为使用者组分配的CPU 比率相对应的数字,而不是百分比。例如,假定有三个使用者组OLTP_USERS、DSS_USERS 和BATCH_USERS,可以指定下列比率:
OLTP_USERS:4
DSS_USERS:3
BATCH_USERS:2
OTHER:1
这就类似于让OLTP 用户获得40% 的资源、DSS 用户获得30% 的资源、批用户获得20%的资源、所有其它使用者组获得10% 的可用资源。如果OTHER 或DSS_USERS 使用者组中当前都没有使用者在使用CPU 资源,则OLTP_USERS 使用者组将获得三分之二的可用资源,而BATCH_USERS 使用者组将获得三分之一。
最大估计执行时间:
1. 数据库资源管理器可以预先估计操作的执行时间。
2. 可以在资源使用者组级别为操作指定最大估计执行时间。
3. 如果估计时间超过MAX_EST_EXEC_TIME,则操作不会启动。(ORA-07455)
4. 此功能的好处是消除了使用过多系统资源的异常大的作业。
5. 默认值为UNLIMITED。
通过设置资源计划指令的MAX_EST_EXEC_TIME 参数,可以定义任何给定时间发生的
任何操作的最大估计执行时间。设置了此参数后,数据库资源管理器将估计特定作业消
耗的时间。如果操作的估计时间超过MAX_EST_EXEC_TIME,则不启动操作并发出
ORA-07455 错误。这样可以消除占用过多系统资源的任何异常大的作业。
如果有多个计划指令引用了某个资源使用者组,则该组可能有多个MAX_EST_EXEC_TIME。
数据库资源管理器将选择所有传入值中限制性最强的那个值。
使用基于成本的优化程序的统计信息,可以计算出给定语句的估计执行时间。
并行度
PARALLEL_DEGREE_LIMIT_MTH 限制任何操作的最大并行度。只能为资源使用者组,
而不能为子计划指定此方法。ABSOLUTE 方法是可能值,该方法指定可以为一个操作分配
的进程数量。如果有多个计划指令引用了相同的子计划或使用者组,则使用所有可能值中
的最小值作为该子计划或使用者组的并行度限制。
活动会话池
ACTIVE_SESS_POOL_MTH 限制活动会话的数量。所有其它会话均为非活动的,在队列
中等待激活。ACTIVE_SESS_POOL_ABSOLUTE 是默认且唯一的可用方法。
使用活动会话池功能,可以控制每个资源使用者组的最大并发活动会话数。使用此功能,
由于资源的消耗与活动会话的数量成比例,所以DBA 能间接控制任何资源使用者组使用
的资源量。使用活动会话池有助于减少从系统中获取资源的服务器数量,因而可以避免
由于试图同时运行过多作业而导致的低效的分页、交换和其它资源损耗(如内存)。
使用活动会话填充活动会话池后,资源管理器对尝试成为活动会话的所有后续会话进行
排队,直到其它活动会话完成或成为不活动会话。活动会话是事务处理、查询或并行操作
中当前涉及的会话。单独的并行从属进程不被视为会话;而将整个并行操作视为一个活动
会话。
每个资源使用者组只有一个队列,排队方法是先进先出(FIFO),并带有超时。队列采用
内存结构,不能直接查询。
参考:刘相兵的博客