您好,登錄后才能下訂單哦!
目前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代碼塊,存儲過程等。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。