原帖地址:
http://download.oracle.com/docs/cd/B28359_01/server.111/b28310/dbrm001.htm
Oracle资源管理器简介
Oracle资源管理器(Oracle Database Resource Manager,以下简称DBRM)管理数据库资源,为不同的会话分配不同的数据库资源。DBRM管理的资源主要包括CPU时间。下面分以下几个章节介绍:
Oracle DBRM帮你处理哪些问题
当数据库服务器资源由操作系统来分配时,你可能会遇到以下问题:
当服务器进程数很多时,操作系统进程和数据库服务进程间的来回切换会导致CPU占用率或内存使用率高。
操作系统调度数据库服务时占用寄存器,这样做效率很低。
操作系统平均分配系统资源给活动的进程(对数据库进程来说),不能判断它们的优先级高低。
Oracle RMDB是如何解决这些问题的
Oracle RMDB把硬件等资源的分配交给数据库服务器本身来解决以上问题。在某个数据库环境中,可能同时存在着多个用户请求数据库服务,并且他们所要完成的任务优先级不同,那么我们就应该区别对待这些会话请求。Oracle RMDB能让你根据各个会话的应用属性,将它们分组,然后为每组分配不同的数据库资源,最大化提高你的数据库应用性能。
Oracle RMDB的具体功能:
Oracle RDMB的组成元素
下表介绍了Oracle RDMB的组成元素。
元素 | 描述 |
资源使用组 | 根据会话的资源请求将它们分为一组。RDMB按组管理会话的资源分配,而不是按单个的会话。 |
资源计划 | 资源计划包含一系列指令,这些指令就决定了给每个组的资源分配配置。要执行资源的分配,你只需执行相应的资源计划。 |
资源计划指令 | 资源计划指令指定了资源计划和组之间的映射关系。 |
Oracle是通过存储过程来实现这些功能的,你可以在以下包里找到这些存储过程:DBMS_RESOURCE_MANAGER.
资源使用组
资源使用组由许多用户会话组成,这些会话有相同的资源使用请求。新创建一个会话时,RDMB会根据你的设定自动把它分配到某个组。数据库管理员还可以手动的调整某个会话所属的组。
下面三类特别的组是系统组,它们不能被修改或删除。
资源计划指令
RDMB根据当前活动资源计划中的一系列资源计划指令为资源使用组分配资源。资源计划和指令间有着一对多的关系,资源计划中不能包含两条相同的指令。
有很多种不同分配资源的指令,例如给某个组分配一定百分比的总的CPU时间,或者限制一个组内最大活动的会话数。
资源计划
在一个数据库中同一时间只有一个资源计划起作用。一个资源计划还可以包含子资源计划。每个资源计划都必须包含给OTHER_GROUP分配支援的指令。
例子:一个简单的资源计划
下图显示的是包含OLTP(online transaction processing)应用和报表系统数据库系统的白天的资源分配计划。
它为OLTP应用分配75%的CPU时间,为报表系统分配15%的CPU时间,剩下的是为OTHER_GROUPS分配的。
子资源计划
资源指令除了给组分配资源,还可以为其他资源计划分配资源,被分配资源的计划成为子计划。下图是一个包含子计划的资源计划的例子。
DBRM管理的内容
资源分配方法指定资源分配给组或子计划的百分比。DBRM管理的资源包括以下内容:
CPU Time
Active Session Pool With Queuing
你可以设定某组的最大活动会话数,会话池满后,新的会话会被放入等待队列。
Degree Of Parallelism Limit
限制并行运行的会话数。
Automatic Consumer Group Switching
此功能类似于触发器机制,当某个会话满足设定的条件,它会自动被分配到其他组中去。
Cancelling SQL and Terminating Sessions
DBRM可以取消那些长时间运行的SQL查询或会话活动。
Excution Time Limit
DMRM可以估算某个操作的运行时间,如果超过了设定的值,数据库不会执行它。
Undo Pool
Idle Time Limit
设定一个会话的最长未响应时间。