SELECT * FROM [dba_jobs/all_jobs/user_jobs];
- DBA_JOBS:代表可以看到所有的Jobs,包含一些只有DBA才能看。
- ALL_JOBS:代表可以看到所有的連線到資料庫的USER的Jobs。
- USER_JOBS:代表只能看到當前USER的Jobs。
- DBA_JOBS_RUNNING:代表目前正在運作的Jobs。
SELECT * FROM dba_jobs;
- LAST_DATE:上次工作執行成功的日期
- NEXT_DATE:下次工作執行的日期
- BROKEN:工作是否BORKEN
- INTERVAL:例行工作執行的時間區間
- FAILURE:嘗試失敗的次數,達16次會造成BORKEN
- WHAT:執行的程序,也可以指定一個PL/SQL procedure
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);