DBMS JOB設定
新手上路Orz...
-------------------------------------------------------------
參考文章:http://alexlucy99.blogspot.tw/2013/10/oracle-dbmsjob.html
> 寫的超詳細的!
引用文章:
5. 查詢執行程序
select * from user_jobs;
8. 恢復執行程序
begin
dbms_job.broken(158, false, sysdate);
end;
-------------------------------------------------------------
備註:如果透過SQL Developer執行,要先切換到對應的使用者帳號下。
實際設定:
--排程檢查
SELECT JOB,WHAT,BROKEN,NEXT_DATE,LAST_DATE FROM USER_JOBS;
--日期檢查
--SELECT TO_DATE(TO_CHAR(SYSDATE, 'YYYY/MM/DD') || ' 00:00:00', 'YYYY/MM/DD HH24:MI:SS')+1 FROM DUAL;
--啟用
BEGIN
DBMS_JOB.BROKEN(83, FALSE, TO_DATE(TO_CHAR(SYSDATE, 'YYYY/MM/DD') || ' 00:00:00', 'YYYY/MM/DD HH24:MI:SS')+1);
DBMS_JOB.BROKEN(84, FALSE, TO_DATE(TO_CHAR(SYSDATE, 'YYYY/MM/DD') || ' 00:00:00', 'YYYY/MM/DD HH24:MI:SS')+1);
DBMS_JOB.BROKEN(85, FALSE, TO_DATE(TO_CHAR(SYSDATE, 'YYYY/MM/DD') || ' 00:00:00', 'YYYY/MM/DD HH24:MI:SS')+1);
DBMS_JOB.BROKEN(86, FALSE, TO_DATE(TO_CHAR(SYSDATE, 'YYYY/MM/DD') || ' 00:00:00', 'YYYY/MM/DD HH24:MI:SS')+1);
END;
--停用
BEGIN
DBMS_JOB.BROKEN(83, TRUE);
DBMS_JOB.BROKEN(84, TRUE);
DBMS_JOB.BROKEN(85, TRUE);
DBMS_JOB.BROKEN(86, TRUE);
END;
-------------------------------------------------------------
延伸問題:
因為從SQL Developer上方向有兩種JOB,所以有點疑惑這之間的差異,所以查了相關文章如下。
關鍵字:DBMS_JOB & DBMS_SCHEDULER
參考文章:
http://blog.itpub.net/30162081/viewspace-1608927/
引用文章:
在Oracle11g 官方文档Administrator's Guide最后一节的的附录中,提到了11g对DBMS_JOB的支持。DBMS_JOB是一个可以用来调度任务的PL/SQL程序包,现在已经逐渐被Oracle Scheduler所替代,后者的功能更为强大,应用也更为灵活。Oracle建议大家尽量使用Oracle Scheduler来代替DBMS_JOB,尽管如此,考虑到兼容性,Oracle 11g还是提供了对DBMS_JOB包的支持。
JOB_QUEUE_PROCESSES初始化参数指定了可以用于执行job的最大进程数量,从Oracle10.1版本开始,该参数默认值是1000。当数据库中需要运行多个job时,任务调度进程会根据job的数量以及系统的可用资源来进行资源分配。
当然,我们也可以将JOB_QUEUE_PROCESSES参数调低,进而限制job队列进程的数量。当JOB_QUEUE_PROCESSES参数设为0时,DBMS_JOB包将被禁用,并且,Oracle Scheduler也将被禁用。
