使用DBMS_JOB和DBMS_SCHEDULER建立、管理job示例
DBMS_JOB和DBMS_SCHEDULER都是Oracle提供的程式包,都可以用來建立、管理job,其中DBMS_SCHEDULER的功能更為強大。先解釋scheduler的基礎概念,scheduler 包含了以下幾個實體物件:
下面,分別使用DBMS_JOB和DBMS_SCHEDULER來建立job。
使用DBMS_JOB
1.建立測試表
2.建立儲存過程,向hoegh表中插入一條資料
3.建立job
4.執行job
兩分鐘後,查詢測試表,確認job是否正常執行
5.停止job
其中,1是建立job是定義的變數值,可以唯一標識一個job
6.啟用job
7.刪除job
使用DBMS_SCHEDULER
1.建立測試表
2.建立儲存過程,向hoegh表中插入一條資料
3.建立schedule
在schedule中定義了schedule名稱、起止時間、呼叫間隔等引數。
4.建立program
在program中定義了程式的型別、具體操作、引數個數等引數
5.建立job
在job中指定了job_name,以及相關聯的program_name、schedule_name等引數。
6.執行job
幾分鐘後,查詢測試表,確認job是否正常執行
7.禁用job
8.啟用job
9.刪除job
- Program -- 提供了scheduler 將要執行什麼,包含program name,program type(PL/SQ塊、儲存過程、外部程式),program action(具體的程式實體,比如說一個PL/SQL塊、或者是儲存過程的名稱、或者是外部程式的路徑加名稱) 。
- Schedules -- 指定何時何種頻率來執行job,可以被不同的job重複的利用。比如說我有兩個job都要求在每天的凌晨4點執行,那麼兩個job可以同時指定相同的schedule。
- Jobs -- 具體的作業的名稱,依賴於那個program、schedule。也可以不指定program、schedule,而直接寫入program、schedule的相應引數。
下面,分別使用DBMS_JOB和DBMS_SCHEDULER來建立job。
使用DBMS_JOB
1.建立測試表
點選(此處)摺疊或開啟
-
SQL> create table hoegh(h1 date);
-
-
Table created
-
- SQL>
點選(此處)摺疊或開啟
-
SQL>
-
SQL> create or replace procedure pro_hoegh is
-
2 begin
-
3 insert into hoegh values(sysdate);
-
4 COMMIT;
-
5 end pro_hoegh;
-
6 /
-
-
Procedure created
-
- SQL>
點選(此處)摺疊或開啟
-
SQL>
-
SQL> variable job1 number
-
SQL> begin
-
2 dbms_job.submit(:job1,\'pro_hoegh;\',sysdate,\'sysdate+1/1440\');--每天1440分鐘,即一分鐘執行test過程一次
-
3 end;
-
4 /
-
-
PL/SQL procedure successfully completed
-
job1
-
---------
-
1
-
- SQL>
點選(此處)摺疊或開啟
-
SQL>
-
SQL> begin
-
2 dbms_job.run(:job1);
-
3 end;
-
4 /
-
-
PL/SQL procedure successfully completed
-
job1
-
---------
-
1
-
- SQL>
點選(此處)摺疊或開啟
-
SQL> select to_char(h1,\'yyyy-mm-dd HH24:mi:ss\') H1 from hoegh;
-
-
H1
-
-------------------
-
2015-04-28 16:08:23
-
2015-04-28 16:07:21
-
- SQL>
5.停止job
點選(此處)摺疊或開啟
-
SQL>
-
SQL> begin
-
2 dbms_job.broken(1,true);
-
3 end;
-
4 /
-
-
PL/SQL procedure successfully completed
-
- SQL>
6.啟用job
點選(此處)摺疊或開啟
-
SQL>
-
SQL> begin
-
2 dbms_job.broken(1,false);
-
3 end;
-
4 /
-
-
PL/SQL procedure successfully completed
-
- SQL>
點選(此處)摺疊或開啟
-
SQL>
-
SQL> begin
-
2 dbms_job.remove(1);
-
3 end;
-
4 /
-
-
PL/SQL procedure successfully completed
-
- SQL>
使用DBMS_SCHEDULER
1.建立測試表
點選(此處)摺疊或開啟
-
SQL> create table hoegh(h1 date);
-
-
Table created
-
- SQL>
點選(此處)摺疊或開啟
-
SQL>
-
SQL> create or replace procedure pro_hoegh is
-
2 begin
-
3 insert into hoegh values(sysdate);
-
4 COMMIT;
-
5 end pro_hoegh;
-
6 /
-
-
Procedure created
-
- SQL>
在schedule中定義了schedule名稱、起止時間、呼叫間隔等引數。
點選(此處)摺疊或開啟
-
SQL>
-
SQL> begin
-
2 -- create_schedule
-
3 dbms_scheduler.create_schedule(schedule_name => \'schedule_hoegh\',
-
4 start_date => \'28-4月 -15 4.30.00.000 下午\',
-
5 repeat_interval => \'FREQ=MINUTELY; INTERVAL=1\',
-
6 end_date => \'29-4月 -15 4.30.00.000 下午\',
-
7 comments => \'TEST schedule\');
-
8 end;
-
9 /
-
-
PL/SQL procedure successfully completed
-
- SQL>
在program中定義了程式的型別、具體操作、引數個數等引數
點選(此處)摺疊或開啟
-
SQL>
-
SQL> begin
-
2 -- create_program
-
3 dbms_scheduler.create_program(program_name => \'program_hoegh\',
-
4 program_type => \'PLSQL_BLOCK\',
-
5 program_action => \'BEGIN PRO_HOEGH; END;\',
-
6 number_of_arguments => 0,
-
7 enabled => TRUE,
-
8 comments => \'TEST program\');
-
9 end;
-
10 /
-
-
PL/SQL procedure successfully completed
-
- SQL>
5.建立job
在job中指定了job_name,以及相關聯的program_name、schedule_name等引數。
點選(此處)摺疊或開啟
-
SQL>
-
SQL> begin
-
2 -- create_job
-
3 dbms_scheduler.create_job(job_name => \'job_hoegh\',
-
4 program_name => \'program_hoegh\',
-
5 schedule_name => \'schedule_hoegh\',
-
6 job_class => \'DEFAULT_JOB_CLASS\',
-
7 enabled => true,
-
8 auto_drop => true,
-
9 comments => \'TEST procedure\');
-
10 end;
-
11 /
-
-
PL/SQL procedure successfully completed
-
- SQL>
點選(此處)摺疊或開啟
-
SQL>
-
SQL> begin
-
2 -- Call the procedure
-
3 dbms_scheduler.run_job(job_name => \'job_hoegh\',
-
4 use_current_session => false);
-
5 end;
-
6 /
-
-
PL/SQL procedure successfully completed
-
- SQL>
點選(此處)摺疊或開啟
-
SQL> select to_char(h1,\'yyyy-mm-dd HH24:mi:ss\') H1 from hoegh;
-
-
H1
-
-------------------
-
2015-04-28 16:30:00
-
2015-04-28 16:31:00
-
2015-04-28 16:32:00
-
2015-04-28 16:24:25
-
- SQL>
點選(此處)摺疊或開啟
-
SQL>
-
SQL> begin
-
2 dbms_scheduler.disable(\'job_hoegh\');
-
3 end;
-
4 /
-
-
PL/SQL procedure successfully completed
-
-
SQL>
-
SQL> select job_name,enabled,state from user_scheduler_jobs;
-
-
JOB_NAME ENABLED STATE
-
------------------------------ ------- ---------------
-
JOB_HOEGH FALSE DISABLED
-
- SQL>
點選(此處)摺疊或開啟
-
SQL>
-
SQL> begin
-
2 dbms_scheduler.enable(\'job_hoegh\');
-
3 end;
-
4 /
-
-
PL/SQL procedure successfully completed
-
-
SQL>
-
SQL> select job_name,enabled,state from user_scheduler_jobs;
-
-
JOB_NAME ENABLED STATE
-
------------------------------ ------- ---------------
-
JOB_HOEGH TRUE SCHEDULED
-
- SQL>
點選(此處)摺疊或開啟
-
SQL>
-
SQL> begin
-
2 dbms_scheduler.drop_job(\'job_hoegh\');
-
3 end;
-
4 /
-
-
PL/SQL procedure successfully completed
-
-
SQL>
-
SQL> select job_name,enabled,state from user_scheduler_jobs;
-
-
JOB_NAME ENABLED STATE
-
------------------------------ ------- ---------------
-
- SQL>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30162081/viewspace-1609120/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【JOB】Oracle JOB全面學習(DBMS_JOB和DBMS_SCHEDULER)Oracle
- oracle定時任務dbms_job與dbms_scheduler使用方法Oracle
- 批量刪除dbms_job建立的job
- 通過oracle dbms_job建立tableOracle
- 關於dbms_job系統包對job的管理
- oracle建立定時任務之dbms_jobOracle
- Oracle dbms_scheduler建立帶輸入引數的JOBOracle
- dbms_job 定時計劃
- oracle常用包之dbms_jobOracle
- Oracle定時任務(DBMS_Job)詳解Oracle
- Oracle使用DBMS_JOB建立的資料庫作業,遇到資料庫關閉狀態的排程Oracle資料庫
- oracle job的建立和刪除Oracle
- oracle系統包——dbms_job用法(oracle定時任務)Oracle
- 用DBMS_JOB來實現高階計劃任務
- plsql建立jobSQL
- oracle建立job並執行jobOracle
- 【實戰】oracle job + 儲存過程 的使用示例Oracle儲存過程
- ORACLE查詢JOB資訊及JOB建立Oracle
- 預設dbms_scheduler job 選擇在哪個節點執行
- 使用 Transact-SQL 建立和管理稽核SQL
- 使用Executors建立和管理執行緒執行緒
- 管理(002):建立密碼檔案示例密碼
- 4.3.4.2 使用OMF 件建立CDB:示例
- dbms_job包的應用:在Oracle中實現定時操作(轉)Oracle
- oracle job管理Oracle
- Oracle JOB 建立例項Oracle
- DBMS_JOB.SUBMIT 建立job定時排程MIT
- 關於DBMS_SCHEDULER job日誌級別LOGGING_LEVEL
- 通過dbms_scheduler執行一個外部job時出現錯誤
- hr使用者示例建立指令碼指令碼
- 使用oracle dbms_scheduler代替crontabOracle
- oracle job管理(zt)Oracle
- Oracle job 管理(轉)Oracle
- Java:使用Executors建立和管理執行緒薦Java執行緒
- oracle 11g 建立 jobOracle
- 簡單建立序列和觸發器示例觸發器
- Android Gesture 手勢建立以及使用示例Android
- oracle筆記整理16——表空間利用率、鎖表、鎖包、dbms_job操作Oracle筆記