在執行一些資料庫操作的時候,有的任務比較複雜,需要花費數個小時的時間。直接執行的話,有如果出現網路中斷或者vpn 斷掉時,往往會導致前功盡棄,有事不得不花費大量的時間在旁邊進行監控。
而採用job方式的話,只要保證**沒有問題,可以確保一次執行成功,因為job是提交到oracle伺服器上進行執行的。
具體操作如下:
1。將任務封裝成乙個無參的儲存過程,假使封裝為p_tmp
2。執行:declare
4。檢視job資訊:
select * from user_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) 任務執行的其他一些會話引數
描述 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)』
Oracle資料庫中,有Job不能自動執行。
oracle資料庫中,有job不能自動執行。1 手動run job發現不執行。lastdate 為空值。refresh 時total time數值一直增加。說明此job一直在執行。2 檢視job的執行的指令碼,發現指令碼執行時產生死迴圈。3 broken 此job。檢視此job還在執行。select...
oracle資料庫job的建立和使用
oracle中的job主要用來執行一些定時任務,如每天凌晨00 00在資料庫表中新增一條資料。job的執行,依賴儲存過程。準備一張資料庫表 mytest 準備乙個儲存過程 myproc 儲存過程實現對資料庫表新增一條記錄。create orreplace procedure myproc is be...
Oracle資料庫幾種啟動方式
1 startup nomount 非安裝啟動,這種方式啟動下可執行 重建控制檔案 重建資料庫 啟動instance,即啟動sga和後台程序,這種啟動只需要init.ora檔案。2 startup mount dbname 安裝啟動,這種方式啟動下可執行 資料庫日誌歸檔 資料庫恢復 重新命名一些資料...