PL/SQL:學會使用DBMS_job包

來源:互聯網
上載者:User

一、DBMS_JOB包的使用
    DBMS_JOB包用於安排和管理作業隊列.通過使用作業,可以使Oracle資料庫定期執行特定的任務.
    注意:使用DBMS_JOB管理作業時,必須確保設定初始化參數JOB_QUEUE_PROCESSES(不能為0)
  1.SUBMIT
    該過程用於建立一個新作業,當建立作業時,需要給出作業要執行的操作,作業的下次運行日期及時間間隔.
    文法:
    DBMS_JOB.SUBMIT(
    job OUT BINARY_INTEGER,
    what IN VARCHAR2,
    next_date IN DATE DEFAULT sysdate,
    interval  IN VARCHAR2 DEFAULT 'null',
    no_parse  IN BOOLEAN DEFAULT FALSE,
    instance  IN BINARY_INTEGER DEFAULT any_instance,
    force    IN BOOLEAN DEFAULT FALSE);
    如上所示,job用於指定作業編號;what用於指定作業要執行的操作;next_date用於指定作業的下次運行日期;
 interval用於指定運行作業的時間間隔;no_parse用於指定是否解析與作業相關的過程;instance用於指定哪個
 常式可以運行作業;force用於指定是否強制運行與作業相關的常式,下面以建立用於分析scott.emp表的作業為
 例,說明建立作業的方法.樣本如下:
var jobno number
begin
    dbms_job.submit(
    :jobno,
    'dbms_ddl.analyze_object(''table'',''scott'',''emp'',''compute'');',
    sysdate,
    'sysdate+1');
    commit;
end;
/
jobno
---------
21
以上建立了一個作業,作業號為:21,下面可以進行調用此作業號,運行;

  2.REMOVE
  該過程用於刪除作業隊列中的特定作業,文法如下:
    DBMS_JOB.REMOVE (job IN BINARY_INTEGER);
  下面以刪除作業21為例,說明使用該過程的方法.如下:
    DBMS_JOB.REMOVE(21);
  3.CHANGE
  該過程用於改變與作業相關的所有資訊,包括作業操作,作業運行日期以及已耗用時間間隔等)文法如下:
    DBMS_JOB.CHANGE(
      job IN BINARY_INTEGER,what IN VARCHAR2,
      next_date IN DATE,interval IN VARCHAR2,
      instance  IN BINARY_INTEGER DEFAULT null,
      force IN BOOLEAN DEFAULT FALSE);
  下面以改變作業的
    exec DBMS_JOB.CHANGE(21,null,null,'SYSDATE+2')
  4.WHAT
  該過程用於改變作業要執行的操作,文法如下:
    DBMS_JOB.WHAT(job IN BINARY_INTEGER,what IN VARCHAR2);
  下面以改變作業21的運行操作為例:
    exec dbms_job.what(21,'dbms_stats.gather_table_stats(''scott'',''EMP'');');
  5,NEXT_DATE
  該過程用於改變作業的下次運行日期.文法如下:
      DBMS_JOB.NEXT_DATE (job IN BINARY_INTEGER,next_date IN DATE);
  下面以改變作業21的下次運行日期為例.
      DBMS_JOB.NEXT_DATE(21,'SYSDATE+1');
  6.INSTANCE
  該過程用於改變運行作業的常式,文法如下:
      DBMS_JOB.INSTANCE (
      job IN BINARY_INTEGER,
      instance IN BINARY_INTEGER,
      force IN BOOLEAN DEFAULT FALSE);
  執行個體:
      DBMS_JOB.INSTANCE(21,1)
  7.INTERVAL
    該過程用於改變作業的已耗用時間間隔.文法如下:
      DBMS_JOB.INTERVAL(job in BINARY_INTEGER,interval IN VARCHAR2);
    執行個體:
    exec  DBMS_JOB.INTERVAL(21,'SYSDATE+1/24/60');
  8.BROKEN
    該過程用於設定作業的中斷標記,當中斷了作業之後.作業將不會被運行.文法如下:
    DBMS_JOB.BROKEN(
    job IN BINARY_INTEGER,broken IN BOOLEAN,
    next_date IN DATE DEFAULT SYSDATE);
  執行個體:
    exec DBMS_JOB.BROKEN(21,TRUE,'sysdate+1')
  9.RUN
    該過程用於運行已存在的作業.文法如下
    DBMS_JOB.RUN(job iN BINARY_INTEGER,force IN BOOLEAN dEFAULT FALSE);
    執行個體:
    DBMS_JOB.RUN(21);
  10.作業使用樣本:
    當在ORACLE 資料庫中使用作業時,應該首先使用過程SUBMIT來建立作業,然後使用過程RUN來運行作業.

  • 1
  • 2
  • 3
  • 下一頁

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.