dbms_scheduler package系列(二)

继续上文关于dbms_scheduler package的学习
   上文 http://space.itpub.net/9240380/viewspace-753712简要测试了create_job,drop_job,enable procedure的用法;
以及user_sheduler_jobs,user_scheduler_job_args和user_scheduler_scheduler字典一点信息;
俗话说:无理不清,故处理一事前,明确理解其概念是相当重要的.
正入进题:
  dbms_scheduler package的概念目录:
  1,它的用途是什么
  2,它包括一些什么组件或者部件,基本可分为如下几块:
      a,programs
      b,schedules
      c,jobs
           这个jobs又产生一个job instances
      d,events
      e,chains
    
   3,上述各个组件之间的内在联系是什么,它是整合在一起才可以工作哟
   4,其他更为高级的一些概念
      a,job classes
      b,windows
      c,window groups
         隶属于windows
   5,scheduler 体系架构,即dbms_scheduler package如何可以运行起来
      a,job table
      b,job coordinator
      c,job如何运行
      d,job slaves
      e,在rac下使用scheduler一些相关内容
     
1,它的用途是什么
      a,基于事件或时间执行job
          即发生某些事件时执行一些job,比如要在晚间打patch或进行etl或者备份数据库
      b,用模拟业务需求的方式来调度job
          即更接近于业务环境资源来调度执行job,用如下几方式实现
            1,对共同特征的job分为job class,看,这个job class即是上述的job class,在dbms_scheduler也有对应的包
            2,创建了job class,进而为其分配不同的优先级和资源,从而控制在可控制的范围,保证高优先级的任务先执行
              和windows,也是上述的概念之一
            3,也可以基于某些event创建job,调度其执行,比如:自银行某账户超额取款,一旦发生此事件,启用某个job,达到
              应有的目标,这里的event也是上述的概念之一
      c,dbms_scheduler同时也提供管理及监控job的一些视图,从而更新服务于业务和管理人员
      d,在rac环境,基于services也可创建job,注:services是rac概念   
  
  
  
2,它包括一些什么组件或者部件,基本可分为如下几块:
         
      a,programs,包含如下几块的内容:
             1,调度器运行所需的一些元信息的集合体,主要涉及:program名称,program 动作,这个动作即
               oracle存储过程或者某个外部执行文件;program类型,如pl/sql或java存储过程还是plsql匿名块
               以及这些program运行必需的参数(注:此参数在dbms_scheduler也有对应过程)
             2,这个programs与job是两个独立的对象;这个独立有几层意思:
                  a,不同的用户可以同时执行一个programs,前提你要有执行的权限
                  b,多个job可以执行同一个programs,即一个programs可以多job间共享
                  c,多个执行同一个programs的job,可以用其同一个要执行的programs设置参数的不同值,
                    即虽然大家执行同一个代码,但传入参数值是不同的,最终结果也不同
    
      b,schedules,具有如下几方面的内容:
             1,指定一个job何时或执行多少次
             2,指定发生什么event时,执行一个job
             3,也可在多个用户之间共享使用
            
      c,jobs,可以调度运行一或多次的用户自定义任务;它是执行什么动作及何时执行的混合体.具有权限的用户可以:
             1,为执行什么动作指定job attributes(atrributes也是上述概念之一)
               为何时执行指定job atrributes
             2,为已存在的programs和schedule指定job atrributes
      d,job arguments(上述目录无此,它与jobs关联)
             1,通过它定制指定的program
             2,它会覆盖program的参数默认值
             3,它会为program无默认值的参数提供值
             4,切记,job必须要为其指定job arguments才可以运行或enable(注:是有job argument的job or program)
             5,小例:比如在晚上要出一个不同部门的报表,出报表的脚本是program,而job由不同部门创建;
                运行时为不同的program传入不同的job argument,进而得到不同部门的报表,仅仅是部门号不同而已
               
      e,job instance
             1,代表某个job的运行,即每次运行job才会产生它
             2,如果一个job多次运行,会对应产生多个job instance
             3,创建一个job,会添加一条job记录到job表中,而运行一次job,会插入一条记录到job log表中,运行多次,
               则插入多次;
      f,events,它是由一个应用或系统进程或程序相互通讯或交互发生的消息,表明发生了一些事情或事件;
                event由一个应用或进程产生,而由一或多个应用或进程接收;
                有2类events:
             1,由调度器产生的
                     即调度器本身产生的,表明其状态变更的事件,即一个job开始,结束,一个job在规定的时间内未启动或停止;
                 由此引生一个事件,由相应的应用接收,进而针对性处理;
             2,由应用产生的
                     由调度器接受,调度器开启一个job响应此事件;也可以创建一个包括事件的调度器,而非包括日期,时间及反复多次信息;
                 如果一个job指配给这样的调度器时,当事件引发时,则会运行一个job;
                 例如:仓库系统发现某个指标低于某个值,这是一个事件,则运行对应的job(事件由应用产生,但由调度器接受并触发相应的job)
                
                 这种调度器使用oracle streams advanced queuing来产生和接受事件;(oracle streams advanced quening可参考文档:
                                                                                Oracle Streams Advanced Queuing User's Guide and Reference
                                                                                )
                                                                               
      g,chains,它是一组programs构成混合体,对外呈现为一个逻辑对象;                                                                               
            1,它类似于决策树一样的功能,分开多个step.比如:如果step1和step2运行成功,则运行step3,否则运行step4;
            2,它应用于完整性的事务中,因为事务是由多个处理单元组成,而且这些处理单元之间有逻辑关系
            3,step可以指向:
                     a,program
                     b,另一个chain,即nested chain
                     c,event
                     d,指向一个event的step(且要这个指向的step运行完毕)
                       即要这个event运行成功,step才算成功运行
                      
                      
3,上述各个组件之间的内在联系是什么,它是整合在一起才可以工作哟
    p1    p2    p3
    ^          ^
    |        /
    |       /
    |      /
    |     /
    |   /
    |  /                   
    | / 
    j1   j2    j3 
    \          /
     \        /
      \      /
       \    /       
         \ /             
          s1                                  
                
 小结:
       1,上述的p,j,s各代表program,job,scheduler
       2,一个job可以执行多个program
         多个job也可以执行一个program
         一个scheduler可以执行多个不同的job
         多个scheduler也可以执行相同的job
       3,p和s也可以单独定义,不与j关联;                         

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9240380/viewspace-753771/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9240380/viewspace-753771/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值