了解Job和Resource Manager之间的关系最好的方式莫过于Oracle EM工具。这篇文章通过图解的方式来简单讨论一下两者之间的关系,该图即是通过Oracle EM工具整理出来的。

众所周知,10g以前的Oracle数据库创建Job是通过DBMS_JOB包来完成的,从10g开始,Oracle推荐使用DBMS_SCHEDULE包来完成这一工作,DBMS_SCHEDULER是一种更健壮、更复杂的作业调度和管理实用程序。上图中的左半部分是10g Job的结构图,调度器将一个作业分解为不同的组成部分,从而可以创建一个调度、一个程序和一个作业。考虑到兼容性问题,DBMS_JOB仍然可以在10g及以后的版本中使用。
Resource Manager是一个资源管理器,用于控制session或者Job对服务器资源的消耗,用于多会话,多Job运行,且服务器资源不足的情况下,对资源的一种合理分配。
将Job和Resouce Manager关联起来,就能够很好的控制Job对服务器资源的消耗情况,在多Job运行的情况下合理分配Job使用的服务器资源。
如果在数据库中不需要控制它们使用的服务器资源,那么完全可以独立的使用Job,不将其与Resource Manager进行关联,这样也较为简单。下面这张图就描述了创建一个不需要限制资源的Job使用到的对象。

红色部分表示需要使用到的对象。一个Job被分解为了Program和Schedule,Program是调用的脚本,可以是存储过程,也可以是操作系统脚本;Schedule是调度器,可以是Schedule调度对象也可以是Windows对象,如果需要跟Resource Manager关联,那么必须选用Windows。Windows是一种更加高级级别的时间调度器。
下面对三个相关的概念做简单介绍:
Job Classes:
作业类可以用来将同一个类作业内部的工作按优先级进行排序,并为一个类中的所有作业设置属性。类不但提供了一个维护的机会,还提供了管理资源的能力。
Windows:
窗口由开放时间、窗口关闭时间、窗口优先级和与窗口相关的资源规划构成。窗口优先级用以告知Oracle在面对两个或多个窗口发生重叠时如何工作。
Resource Plan:
Resource Plan用于对不同Consumer Group会话消耗资源的控制,Windows与Resource Plan进行关联,指定在Windows窗口打开的时候激活相应的Resource Plan来控制属于不同Consumer Group的Job和会话。
下面的图展示了控制Job资源消耗需要配置的对象:

Resource Plan:
Resource Plan用于对不同Consumer Group会话消耗资源的控制,Windows与Resource Plan进行关联,指定在Windows窗口打开的时候激活相应的Resource Plan来控制属于不同Consumer Group的Job和会话。
下面的图展示了控制Job资源消耗需要配置的对象:

这篇文章简单介绍了Job和Resource Manager的概念,以及它们之间的关系。了解概念之后,熟悉Oracle EM工具就可以很好的开始Job和Resource Manager的管理。
DBMS_JOB包的使用请参考文章:http://space.itpub.net/23135684/viewspace-630418
DBMS_SCHEDULER包的使用请参考文章:http://www.oracle-base.com/articles/10g/scheduler-10g.php
11gR2数据库自带的"SYS"."PURGE_LOG" JOB分析可以查看文章:http://space.itpub.net/23135684/viewspace-754299
另外,对JOB的管理可以通过EM工具或者pl/sql developer轻松实现。
--end--
QQ截图20130605162009.jpg