Oracle設定定時任務JOB調度執行預存程序或PL/SQL代碼塊

來源:互聯網
上載者:User

Oracle設定定時任務JOB調度執行預存程序或PL/SQL代碼塊

目前Oracle資料庫設定定時任務job調度一般有兩種方式,分別是dbms_scheduler建立job調度和dbms_job建立job調度。dbms_scheduler建立job調度是在10g以後才有的,甲骨文公司為了用來替換dbms_job而提供了更強大的功能與更靈活的機制/管理。下面介紹這兩種方式。

1. dbms_scheduler建立job調度。
--查詢
 select * from dba_scheduler_jobs;
--建立job
 begin
 dbms_scheduler.create_job (
 job_name => 'job_myjob', --job名
 job_type => 'STORED_PROCEDURE',--job類型
 job_action => 'proc_myproc', --預存程序名
 start_date => sysdate,--開始執行時間
 repeat_interval => 'FREQ=DAILY;BYHOUR=9;BYMINUTE=30;BYSECOND=0', -- 下次執行時間,按天,每天09:30:00執行預存程序proc_myproc
 comments => '測試JOB',--注釋
 auto_drop=>false  --job禁用後是否自動刪除
 );
 end;
--運行
begin
dbms_scheduler.run_job('job_myjob');
end;
--啟用
begin
dbms_scheduler.enable('job_myjob');
end;
--禁用
begin
dbms_scheduler.disable('job_myjob');
end;
--刪除
begin
  dbms_scheduler.drop_job(job_name => 'job_myjob',force => TRUE);
  end;

2.dbms_job建立job調度。
--查詢
select * from dba_jobs;
select * from all_jobs;
select * from user_jobs;
select * from dba_jobs_running;
-- 建立job
declare     
  job_id number;--聲明一個out變數
begin
    -- 按天,每天09:30:00執行這個預存程序proc_myproc,並且輸出一個job_id變數,其值為該job的ID號
  dbms_job.submit(
      job_id, --參數是輸出參數,由submit()過程返回的binary_ineger,這個值用來唯一標識一個工作。一般定義一個變數接收,可以去user_jobs視圖查詢job值。 
      'proc_myproc;',  --參數是將被執行的PL/SQL代碼塊,預存程序名稱等。 
      sysdate, --參數指識何時將運行這個工作。 
      'TRUNC(SYSDATE+1)+(9*60+30)/(24*60)'    --參數何時這個工作將被重執行。
    ); 
  -- 把job的ID號列印出來
  dbms_output.put_line(job_id);
end;
-- 運行job
begin
    -- 這個7為job_id,請換為你自己對應的job號
  dbms_job.run(7);
end; 
-- 啟用job
begin
  dbms_job.broken(7,false);
end; 
-- 禁用job
begin
  dbms_job.broken(7,true);
end; 
-- 刪除一個job
begin
  dbms_job.remove(7);
end;

總結:推薦大家使用dbms_scheduler來建立job調度。job調度可以定時執行PL/SQL代碼塊,預存程序等。

相關文章

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.