[color=green]一:簡單測試job的建立過程案例:
1,先建立一張job_test表,欄位為a 日期格式
sql> create table job_test(a date);
table created
sql> commit;
commit complete
2,建立乙個儲存過程 bb 作用是往pig表中插入資料
sql> create or replace procedure job_pro_test as
2 begin
3 insert into job_test values(sysdate);
4 end;
5 /procedure created
3,建立乙個job,名稱為job2010 ;作用是每分鐘(60×24=1440)執行一次儲存過程job_pro_test。
sql> variable job2010 number;
sql> begin
2 dbms_job.submit(:job2010,'job_pro_test;',sysdate,'sysdate+1/1440');
3 end;
4 /注意:這裡系統自動生成job id 為41
pl/sql procedure successfully completed
job2010
---------
414,執行job2010
sql> begin
2 dbms_job.run(:job2010);
3 end;
4 /pl/sql procedure successfully completed
job2010
---------
415,刪除job2010
sql> begin
2 dbms_job.remove(:job2010);
3 end;
4 /6,查詢jobs的相關檢視
select job,last_date,last_sec,broken,failures,interval, what from dba_jobs
詳解 dba_jobs中幾個比較重要的字段
job: 指的是job的id號。比如上面的 41
failures:job執行的時候失敗次數,如果超過了15次,那麼broken列將被標為y,以後就不會執行該job了
broken:預設為n,如果為y,意味著不再執行該job!
interval:執行job的間隔時間。
what:該job的實際工作。
1,dba_jobs
dba_jobs
===========================================
字段(列) 型別 描述
job number 任務的唯一標示號
log_user varchar2(30) 提交任務的使用者
priv_user varchar2(30) 賦予任務許可權的使用者
schema_user varchar2(30) 對任務作語法分析的使用者模式
last_date date 最後一次成功執行任務的時間
last_sec varchar2(8) 如hh24:mm:ss格式的last_date日期的小時,分鐘和秒
this_date date 正在執行任務的開始時間,如果沒有執行任務則為null
this_sec varchar2(8) 如hh24:mm:ss格式的this_date日期的小時,分鐘和秒
next_date date 下一次定時執行任務的時間
next_sec varchar2(8) 如hh24:mm:ss格式的next_date日期的小時,分鐘和秒
total_time number 該任務執行所需要的總時間,單位為秒
broken varchar2(1) 標誌引數,y標示任務中斷,以後不會執行
interval varchar2(200) 用於計算下一執行時間的表示式
failures number 任務執行連續沒有成功的次數
what varchar2(2000) 執行任務的pl/sql塊
current_session_label raw mlslabel 該任務的信任oracle會話符
clearance_hi raw mlslabel 該任務可信任的oracle最大間隙
clearance_lo raw mlslabel 該任務可信任的oracle最小間隙
nls_env varchar2(2000) 任務執行的nls會話設定
misc_env raw(32) 任務執行的其他一些會話引數
--------------------------
2,描述 interval引數值
每天午夜12點: 'trunc(sysdate + 1)'
每天早上8點30分: 'trunc(sysdate + 1) + (8*60+30)/(24*60)'
每星期二中午12點: 'next_day(trunc(sysdate ), ''tuesday'' ) + 12/24'
每個月第一天的午夜12點: 'trunc(last_day(sysdate ) + 1)'
每個季度最後一天的晚上11點: 'trunc(add_months(sysdate + 2/24, 3 ), 'q' ) -1/24'
每星期六和日早上6點10分: 'trunc(least(next_day(sysdate, ''saturday"), next_day(sysdate, "sunday"))) + (6×60+10)/(24×60)'
每月25號00:00執行: 'trunc(last_day(sysdate ) + 25)'
--------------------------
1:每分鐘執行
interval => trunc(sysdate,'mi') + 1/ (24*60)
或interval => sysdate+1/1440
2:每天定時執行
例如:每天的凌晨1點執行
interval => trunc(sysdate) + 1 +1/ (24)
3:每週定時執行
例如:每週一凌晨1點執行
interval => trunc(next_day(sysdate,'星期一'))+1/24
4:每月定時執行
例如:每月1日凌晨1點執行
interval =>trunc(last_day(sysdate))+1+1/24
5:每季度定時執行
例如每季度的第一天凌晨1點執行
interval => trunc(add_months(sysdate,3),'q') + 1/24
6:每半年定時執行
例如:每年7月1日和1月1日凌晨1點
interval => add_months(trunc(sysdate,'yyyy'),6)+1/24
7:每年定時執行
例如:每年1月1日凌晨1點執行
interval =>add_months(trunc(sysdate,'yyyy'),12)+1/24
3. 檢視相關job資訊
相關檢視
dba_jobs
all_jobs
user_jobs
dba_jobs_running 包含正在執行job相關資訊
三:實際應用
步驟一:建立乙個job,每月25日執行下面sql。
sql> variable job2010 number;
sql> begin
sql> dbms_job.submit(:job2010,'delete from i0216_inv_balance_curstock where trunc(sysdate-mtime) > 90 and ib_qty = 0;commit;',sysdate,'trunc(last_day(sysdate ) + 25)'); <==每月25號00:00執行
sql> end;
sql> /
步驟二:查詢生成的job id
sql> select job, what from dba_jobs;
job what
61 ..........
步驟三:執行剛才建立的job
sql> begin
sql> dbms_job.run(61);
sql> end;
sql> /
步驟四:查詢該job下次執行的時間
sql> select job,next_date,what from dba_jobs
sql> where job=』61』;
步驟五:刪除該job
sql> begin
sql> dbms_job.remove(61);
sql> end;
sql> /
[/color]
Oracle 建立最簡單的job定時任務
建立job定時任務 show parameter job queue process alter system set job queue processes 10 job佇列可以啟動的程序數為0時,將job同時執行數設為10 執行如下命令建立job variable jobno number be...
利用CppUnit建立單元測試的過程。
步驟一 建立支援mfc的console工程,新增include和lib庫到vc,複製cppunitd dll.dll testrunnerd.dll testrunnerdsplugind到工程目錄下。步驟二 1.在包含 tmain 函式的檔案裡面 include include 在 tmain 裡...
RabbitMQ安裝測試學習過程簡單的記錄
工作快兩年了php手冊都沒有完全的通讀過一遍發現自己不知道的東西太多了一定要堅持認真的看完!今天接著看php手冊是看到訊息佇列rabbitmq比較感興趣 先練練吧 1 安裝 由於rabbitmq是由erlang語言開發的首先要安裝erlang 安裝依賴 yum install tk yum inst...