在Oracle Database中,我們可以利用DBA/ALL/USER_JOBS來觀看我們排定的工作行程,然後利用DBMS_JOBS.來進行工作的安排和管理。


SELECT * FROM [dba_jobs/all_jobs/user_jobs];

  • DBA_JOBS:代表可以看到所有的Jobs,包含一些只有DBA才能看。
  • ALL_JOBS代表可以看到所有的連線到資料庫的USER的Jobs。
  • USER_JOBS:代表只能看到當前USER的Jobs。
  • DBA_JOBS_RUNNING:代表目前正在運作的Jobs。

 1.查詢DBA_JOBS

 

SELECT * dba_jobs;

  • LAST_DATE:上次工作執行成功的日期
  • NEXT_DATE:下次工作執行的日期
  • BROKEN:工作是否BORKEN
  • INTERVAL:例行工作執行的時間區間
  • FAILURE:嘗試失敗的次數,達16次會造成BORKEN
  • WHAT:執行的程序,也可以指定一個PL/SQL procedure

2.DBMS_JOB.

 

DBMS_JOBS.

Subprograms

SUBMIT

exec DBMS_JOB.SUBMIT(job, 'what', next_date, interval);

RUN

exec DBMS_JOB.RUN(job, force)

BROKEN

exec DBMS_JOB.BROKEN(job, broken, next_date)

CHANGE

exec DBMS_JOB.CHANGE(job, 'what', next_date, interval,instance,force);

WHAT

exec DBMS_JOB.WHAT(job, 'what');

NEXT_DATE

exec DBMS_JOB.NEXT_DATE(job, next_date);

INTERVAL

exec DBMS_JOB.INTERVAL(job, interval);

INSTANCE

exec DBMS_JOB.INSTANCE(job, instance);

USER_EXPORT

exec DBMS_JOB.USER_EXPORT(job, 'mycal');

REMOVE

exec DBMS_JOB.REMOVE(job);

 

1)加入一個新的JOB

 

exec DBMS_JOB.ISUBMIT(1, 'insert into t values(sysdate);', sysdate, sysdate+1/24);

 

ISUBMIT可以指定job的id,如果是SUBMIT則必須使用變數帶入job的id

 

2)啟動JOB

 

exec DBMS_JOB.RUN(1);

 

3)修改Job的參數設定

 

exec DBMS_JOB.CHANGE(1,null,null,sysdate+1/1440);

 

通常沒有要更動的參數,我們可以利用null來表示

 

4)修改BROKEN的狀態

 

exec DBMS_JOB.BROKEN(1,true, sysdate);

 

true表示BROKEN設定為Y,false表示為N

 

5)移除JOB

 

exec DBMS_JOB.REMOVE(1);

 

 
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 auneths 的頭像
    auneths

    Next Innovation

    auneths 發表在 痞客邦 留言(1) 人氣()