dbms_scheduler package系列(二)

wisdomone1發表於2013-02-01
繼續上文關於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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章