用DBMS_JOB來實現高階計劃任務
dbms_job.submit(what='statspack_alert.sql;',
next_date=sysdate+1/24, -- 在下一個小時後啟動
interval='sysdate+1/24'); -- 每小時執行一次
問題是,儘管我們在這個程式中指定了任務起始時間和重新執行的時間間隔,但是我們看不到在預定時間執行該任務的機制。例如,如何讓一個任務在早上8點啟動、每小時 執行一次、最後在下午5點終止呢?
上面的例子讓該任務每小時執行一次,但是為了獲得時間間隔,它有必要建立兩個其它任務:一個任務在下午5點終止(主)任務,另一個任務在第二天早上8點啟動(主)任務。
為了實現高階計劃任務,我們可以建立自定義間隔,讓任務在特定的時間間隔來啟動和終止。下面是一個例子:
--
--Schedule a snapshot to be run on this instance every hour
variable jobno number;
variable instno number;
begin
select instance_number into :instno from v$instance;
-- ------------------------------------------------------------
-- 提交任務從6:00開始,每小時執行一次
-- ------------------------------------------------------------
dbms_job.submit(
jobno, 'statspack.snap;',
trunc(sysdate)+6/24,
'trunc(SYSDATE+1/24,''HH'')',
TRUE,
instno);
-- ------------------------------------------------------------
-- 提交任務從9:00開始,12小時後執行
-- ------------------------------------------------------------
dbms_job.submit(
jobno,
'statspack.snap;',
trunc(sysdate+1)+9/24,
'trunc(SYSDATE+12/24,''HH'')',
TRUE,
instno);
-- ------------------------------------------------------------
-- 提交任務從6:00開始,每隔十分鐘執行一次
-- ------------------------------------------------------------
dbms_job.submit(
jobno,
'statspack.snap;',
trunc(sysdate+1/144,'MI'),
'trunc(sysdate+1/144,''MI'')',
TRUE,
instno);
-- ----------------------------------------------------------------
-- 提交任務從週一到週五早上6:00開始,每小時執行一次
-- ----------------------------------------------------------------
dbms_job.submit(
jobno,
'statspack.snap;',
trunc(sysdate+1)+6/24,
'trunc(
least(
next_day(SYSDATE,''MONDAY''),
next_day(SYSDATE,''TUESDAY''),
next_day(SYSDATE,''WEDNESDAY''),
next_day(SYSDATE,''THURSDAY''),
next_day(SYSDATE,''FRIDAY'')
)
+1/24,''HH'')',
TRUE,
instno);
commit;
end;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9099175/viewspace-1001527/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用at和cron實現任務計劃
- 實現一個“計劃任務”機制
- 利用shell指令碼實現計劃任務功能指令碼
- 計劃任務
- mysql計劃任務MySql
- 計劃任務(CRON)
- 計劃任務crontab
- dbms_job 定時計劃
- oracle建立定時任務之dbms_jobOracle
- Oracle定時任務(DBMS_Job)詳解Oracle
- Linux 任務計劃管理Linux
- ubuntu 設定計劃任務Ubuntu
- 剖析 Laravel 計劃任務--初探Laravel
- Linux 計劃任務整理Linux
- mysql計劃任務:event scheduleMySql
- saltstack 新增計劃任務薦
- Oracle 任務管理之 ----program(程式)---scheduler(計劃)--Job(任務)Oracle
- win10計劃任務如何關閉_win10怎麼禁用計劃任務Win10
- Spring定時任務高階使用篇Spring
- 用CompletableFuture實現非同步任務非同步
- Swoole來實現實時非同步任務佇列非同步佇列
- .NetCore Hangfire任務計劃NetCore
- 論linux下計劃任務Linux
- windows計劃任務如何進入Windows
- 聊聊php定時計劃任務PHP
- Ubuntu 下計劃任務使用(crontab)Ubuntu
- oracle系統包——dbms_job用法(oracle定時任務)Oracle
- win10計劃任務程式庫實現定時任務的自動執行程式及問題解決。Win10行程
- 論linux下計劃任務示例Linux
- 程式與計劃任務管理(at 及 crontab)
- 編輯計劃任務並執行
- 第四項任務——測試計劃
- Spring中使用任務計劃薦Spring
- 用 Redis 實現分散式鎖與實現任務佇列Redis分散式佇列
- 『設計模式』高階函式實現 AOP設計模式函式
- linux中crontab計劃任務怎麼刪除?linux中crontab計劃任務的刪除方法Linux
- rman使用catalog 啟用計劃任務並自動備份
- Laravel-Schedule 計劃任務「原理了解」Laravel