Oracle数据库资源管理器(Database Resource Manager)

原帖地址:
http://download.oracle.com/docs/cd/B28359_01/server.111/b28310/dbrm001.htm

 

Oracle资源管理器简介

      Oracle资源管理器(Oracle Database Resource Manager,以下简称DBRM)管理数据库资源,为不同的会话分配不同的数据库资源。DBRM管理的资源主要包括CPU时间。下面分以下几个章节介绍:

  • Oracle DBRM帮你处理哪些问题
  • Oracle DBRM是怎样处理这些问题的
  • Oracle DBRM包含的内容
  • Oracle DBRM资源分配方法
  • Oracle DBRM的权限管理

Oracle DBRM帮你处理哪些问题

      当数据库服务器资源由操作系统来分配时,你可能会遇到以下问题:

  • 过多的资源开销

当服务器进程数很多时,操作系统进程和数据库服务进程间的来回切换会导致CPU占用率或内存使用率高。

 

  • 低效的调度

操作系统调度数据库服务时占用寄存器,这样做效率很低。

 

  • 资源分配的不合理

操作系统平均分配系统资源给活动的进程(对数据库进程来说),不能判断它们的优先级高低。

 

  • 不能管理数据库特有的资源,例如:并行执行的服务数和活动的会话数。

Oracle RMDB是如何解决这些问题的

 

      Oracle RMDB把硬件等资源的分配交给数据库服务器本身来解决以上问题。在某个数据库环境中,可能同时存在着多个用户请求数据库服务,并且他们所要完成的任务优先级不同,那么我们就应该区别对待这些会话请求。Oracle RMDB能让你根据各个会话的应用属性,将它们分组,然后为每组分配不同的数据库资源,最大化提高你的数据库应用性能。

      Oracle RMDB的具体功能:

  • RMDB可以在系统启动时,限制某些会话请求只分配到最少的进程资源和用户使用上限。
  • 为不同的用户或应用分配不同的CPU时间。在一个数据仓库应用中,ROLAP(relational online analytical processing)应用分配到的比例就应该比批处理任务高。
  • 限制同一组内用户对数据库操作的并行度。
  • 建立一个活动的会话池。会话池由一组用户活动会话组成,对某一组用户来说,同一时间活动的会话数有特别的数量上限。如果会话池满了,新的会话请求会被放入等待队列,而且你还可以设置一个时间上限,超过这个上限,等待队列会被停止。会话池限制了同一时间活动的会话请求数量,保证了活动的会话请求更快的完成任务。
  • 管理长时间未响应的会话或请求,这些会话或请求往往占用了很多的CPU或I/O资源。这些会话能被自动的结束掉,或者将它们换到其他低级的组去。
  • 优化器会估算请求的运行时间,如果超出了某个显示,RMDB会阻止它的请求。
  • 限制一个会话的空闲等待时间。
  • 根据不同的资源分配需求,配置不同的模式。你可以动态的改变这些模式,例如,从白天运行模式变到夜间运行模式,而不用重启数据库服务。你还可以通过Oracle调度器来管理模式的改变。详细内容请见: Chapter 26, "Oracle Scheduler Concepts"

Oracle RDMB的组成元素

下表介绍了Oracle RDMB的组成元素。

 

元素 描述
资源使用组 根据会话的资源请求将它们分为一组。RDMB按组管理会话的资源分配,而不是按单个的会话。
资源计划 资源计划包含一系列指令,这些指令就决定了给每个组的资源分配配置。要执行资源的分配,你只需执行相应的资源计划。
资源计划指令 资源计划指令指定了资源计划和组之间的映射关系。

 

 

 

 

 

 

 

 

 

       Oracle是通过存储过程来实现这些功能的,你可以在以下包里找到这些存储过程:DBMS_RESOURCE_MANAGER.

资源使用组

    资源使用组由许多用户会话组成,这些会话有相同的资源使用请求。新创建一个会话时,RDMB会根据你的设定自动把它分配到某个组。数据库管理员还可以手动的调整某个会话所属的组。

    下面三类特别的组是系统组,它们不能被修改或删除。

  • SYS_GROUP
  • DEFAULT_CONSUMER_GROUP
  • OTHER_GROUP 

资源计划指令

   RDMB根据当前活动资源计划中的一系列资源计划指令为资源使用组分配资源。资源计划和指令间有着一对多的关系,资源计划中不能包含两条相同的指令。

   有很多种不同分配资源的指令,例如给某个组分配一定百分比的总的CPU时间,或者限制一个组内最大活动的会话数。

资源计划

   在一个数据库中同一时间只有一个资源计划起作用。一个资源计划还可以包含子资源计划。每个资源计划都必须包含给OTHER_GROUP分配支援的指令。

例子:一个简单的资源计划

   下图显示的是包含OLTP(online transaction processing)应用和报表系统数据库系统的白天的资源分配计划。

它为OLTP应用分配75%的CPU时间,为报表系统分配15%的CPU时间,剩下的是为OTHER_GROUPS分配的。
 

Oracle数据库资源管理器(Database Resource Manager)

子资源计划

       资源指令除了给组分配资源,还可以为其他资源计划分配资源,被分配资源的计划成为子计划。下图是一个包含子计划的资源计划的例子。



 

Oracle数据库资源管理器(Database Resource Manager)

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

      设定一个会话的最长未响应时间。

 

你可能感兴趣的:(oracle,sql,应用服务器,server,活动,配置管理)