| 導購 | 订阅 | 在线投稿
分享
 
 
當前位置: 王朝網路 >> oracle >> Oracle DBMS_JOB:每隔特定時間執行特定任務
 

Oracle DBMS_JOB:每隔特定時間執行特定任務

2008-08-06 07:16:29  編輯來源:互聯網  简体版  手機版  評論  字體: ||
 
 
  Oracle JOB:

  一、設置初始化參數 job_queue_processes

  sql> alter system set job_queue_processes=n;(n>0)

  job_queue_processes最大值爲1000

  查看job queue 後台進程

  sql>select name,description from v$bgprocess;

  二、dbms_job package 用法介紹

  包含以下子過程:

  Broken()過程。

  change()過程。

  Interval()過程。

  Isubmit()過程。

  Next_Date()過程。

  Remove()過程。

  Run()過程。

  Submit()過程。

  User_Export()過程。

  What()過程。

  1、Broken()過程更新一個已提交的工作的狀態,典型地是用來把一個已破工作標記爲未破工作

  這個過程有三個參數:job 、broken與next_date。

  PROCEDURE Broken ( job IN binary_integer,

  BrokenIN boolean,

  next_date IN date :=SYSDATE)

  job參數是工作號,它在問題中唯一標識工作。

  broken參數指示此工作是否將標記爲破——TRUE說明此工作將標記爲破,而FLASE說明此工作將標記爲未破。

  next_date參數指示在什麽時候此工作將再次運行。此參數缺省值爲當前日期和時間。

  job如果由于某種原因未能成功之行,oracle將重試16次後,還未能成功執行,將被標記爲broken重新啓動狀態爲broken的job,有如下兩種方式;

  a、利用dbms_job.run()立即執行該job

  sql>begin

  sql>dbms_job.run(:jobno) 該jobno爲submit過程提交時返回的job number

  sql>end;

  sql>/

  b、利用dbms_job.broken()重新將broken標記爲false

  sql>begin

  sql>dbms_job.broken (:job,false,next_date)

  sql>end;

  sql>/

  2、Change()過程用來改變指定工作的設置。

  這個過程有四個參數:job、what 、next_date與interval。

  PROCEDURE Change ( job IN binary_integer,

  What IN varchar2,

  next_date IN date,

  interval IN varchar2)

  此job參數是一個整數值,它唯一標識此工作。

  What參數是由此工作運行的一塊PL/SQL代碼塊。

  next_date參數指示何時此工作將被執行。

  interval參數指示一個工作重執行的頻度。

  3、Interval()過程用來顯式地設置重執行一個工作之間的時間間隔數。這個過程有兩個參數:job與interval

  PROCEDURE Interval ( jobIN binary_integer,

  Interval IN varchar2)

  job參數標識一個特定的工作。interval參數指示一個工作重執行的頻度。

  4、ISubmit()過程用來用特定的工作號提交一個工作。這個過程有五個參數:job、what、next_date、interval與no_parse

  PROCEDURE ISubmit ( job IN binary_ineger,

  WhatIN varchar2,

  next_date IN date,

  interval IN varchar2,

  no_parseIN booean:=FALSE)

  這個過程與Submit()過程的唯一區別在于此job參數作爲IN型參數傳遞且包括一個由開發者提供的工作號。如果提供的工作號已被使用,將産生一個錯誤。

  5、Next_Date()過程用來顯式地設定一個工作的執行時間。這個過程接收兩個參數:job與next_date

  PROCEDURE Next_Date( job IN binary_ineger,

  next_date IN date)

  job標識一個已存在的工作。next_date參數指示了此工作應被執行的日期與時間。

  6、Remove()過程來刪除一個已計劃運行的工作。這個過程接收一個參數:

  PROCEDURE Remove(job INbinary_ineger);

  job參數唯一地標識一個工作。這個參數的值是由爲此工作調用Submit()過程返回的job參數的值。已正在運行的工作不能由調用過程序刪除。

  7、Run()過程用來立即執行一個指定的工作。這個過程只接收一個參數:

  PROCEDURE Run(job IN binary_ineger)

  job參數標識將被立即執行的工作。

  8、使用Submit()過程,工作被正常地計劃好

  這個過程有五個參數:job、what、next_date、interval與no_parse。

  PROCEDURE Submit ( job OUT binary_ineger,

  WhatINvarchar2,

  next_date INdate,

  interval INvarchar2,

  no_parseINbooean:=FALSE)

  job參數是由Submit()過程返回的binary_ineger。這個值用來唯一標識一個工作。

  what參數是將被執行的PL/SQL代碼塊。

  next_date參數指識何時將運行這個工作。

  interval參數何時這個工作將被重執行。

  no_parse參數指示此工作在提交時或執行時是否應進行語法分析——TRUE指示此PL/SQL代碼在它第一次執行時應進行語法分析,而FALSE指示本PL/SQL代碼應立即進行語法分析。

  9、User_Export()過程返回一個命令,此命令用來安排一個存在的工作以便此工作能重新提交

  此程序有兩個參數:job與my_call。

  PROCEDURE User_Export( job IN binary_ineger,

  my_callIN OUT varchar2)

  job參數標識一個安排了的工作。my_call參數包含在它的當前狀態重新提交此工作所需要的正文。

  10、What()過程應許在工作執行時重新設置此正在運行的命令。這個過程接收兩個參數:job與what

  PROCEDURE What ( job IN binary_ineger,

  What IN OUT varchar2)

  job參數標識一個存在的工作。what參數指示將被執行的新的PL/SQL代碼。

  三、查看相關job信息

  1、相關視圖

  dba_jobs

  all_jobs

  user_jobs

  dba_jobs_running 包含正在運行job相關信息

  2、查看相關信息

  SQL>SELECT JOB, NEXT_DATE, NEXT_SEC, FAILURES, BROKEN FROM DBA_JOBS;

  正在運行的JOB相關信息

  SELECT SID, r.JOB, LOG_USER, r.THIS_DATE, r.THIS_SEC

  FROM DBA_JOBS_RUNNING r, DBA_JOBS j

  WHERE r.JOB = j.JOB;

  JOB QUEUE LOCK相關信息

  SELECT SID, TYPE, ID1, ID2 FROM V$LOCK WHERE TYPE = 'JQ';

  四、簡單例子

  一個簡單例子:

  創建測試表

  SQL> create table TEST(a date);

  表已創建。

  創建一個自定義過程

  SQL> create or replace procedure MYPROC as

  2begin

  3insert into TEST values(sysdate);

  4end;

  5/

  過程已創建。

  創建JOB

  SQL> variable job1 number;

  SQL>

  SQL> begin

  2dbms_job.submit(:job1,'MYPROC;',sysdate,'sysdate+1/1440');--每天1440分鍾,即一分鍾運行test過程一次

  3end;

  4/

  PL/SQL 過程已成功完成。

  運行JOB

  SQL> begin

  2dbms_job.run(:job1);

  3end;

  4/

  PL/SQL 過程已成功完成。

  SQL> select to_char(a,'yyyy/mm/dd hh24:mi:ss') 時間 from TEST;

  時間

  -------------------

  2001/01/07 23:51:21

  2001/01/07 23:52:22

  2001/01/07 23:53:24

  刪除JOB

  SQL> begin

  2dbms_job.remove(:job1);

  3end;

  4/

  PL/SQL 過程已成功完成。
 
 
 
上一篇《Oracle數據庫中獲取數據的存儲過程示例》
下一篇《經驗分享:Informix和Oracle存儲過程的異同》
 
 
 
日版寵物情人插曲《Winding Road》歌詞

日版寵物情人2017的插曲,很帶節奏感,日語的,女生唱的。 最後聽見是在第8集的時候女主手割傷了,然後男主用嘴幫她吸了一下,插曲就出來了。 歌手:Def...

兄弟共妻,我成了他們夜裏的美食

老鍾家的兩個兒子很特別,就是跟其他的人不太一樣,魔一般的執著。兄弟倆都到了要結婚的年齡了,不管自家老爹怎麽磨破嘴皮子,兄弟倆說不娶就不娶,老父母爲兄弟兩操碎了心...

如何磨出破洞牛仔褲?牛仔褲怎麽剪破洞?

把牛仔褲磨出有線的破洞 1、具體工具就是磨腳石,下面墊一個硬物,然後用磨腳石一直磨一直磨,到把那塊磨薄了,用手撕開就好了。出來的洞啊很自然的。需要貓須的話調幾...

我就是掃描下圖得到了敬業福和愛國福

先來看下敬業福和愛國福 今年春節,支付寶再次推出了“五福紅包”活動,表示要“把欠大家的敬業福都還給大家”。 今天該活動正式啓動,和去年一樣,需要收集“五福”...

冰箱異味産生的原因和臭味去除的方法

有時候我們打開冰箱就會聞到一股異味,冰箱裏的這種異味是因爲一些物質發出的氣味的混合體,聞起來讓人惡心。 産生這些異味的主要原因有以下幾點。 1、很多人有這種習...

《極品家丁》1-31集大結局分集劇情介紹

簡介 《極品家丁》講述了現代白領林晚榮無意回到古代金陵,並追隨蕭二小姐化名“林三”進入蕭府,不料卻陰差陽錯上演了一出低級家丁拼搏上位的“林三升職記”。...

李溪芮《極品家丁》片尾曲《你就是我最愛的寶寶》歌詞

你就是我最愛的寶寶 - 李溪芮 (電視劇《極品家丁》片尾曲) 作詞:常馨內 作曲:常馨內 你的眉 又鬼馬的挑 你的嘴 又壞壞的笑 上一秒吵鬧 下...

烏梅的功效與作用以及烏梅的食用禁忌有哪些?

烏梅,又稱春梅,中醫認爲,烏梅味酸,性溫,無毒,具有安心、除熱、下氣、祛痰、止渴調中、殺蟲的功效,治肢體痛、肺痨病。烏梅泡水喝能治傷寒煩熱、止吐瀉,與幹姜一起制...

什麽是脂肪粒?如何消除臉部脂肪粒?

什麽是脂肪粒 在我們的臉上總會長一個個像脂肪的小顆粒,弄也弄不掉,而且顔色還是白白的。它既不是粉刺也不是其他的任何痘痘,它就是脂肪粒。 脂肪粒雖然也是由油脂...

網絡安全治理:國家安全保障的主要方向是打擊犯罪,而不是處置和懲罰受害者

來源:中國青年報 新的攻擊方法不斷湧現,黑客幾乎永遠占據網絡攻擊的上風,我們不可能通過技術手段杜絕網絡攻擊。國家安全保障的主要方向是打擊犯罪,而不是處置和懲罰...

 
 
 
Oracle JOB: 一、設置初始化參數 job_queue_processes sql> alter system set job_queue_processes=n;(n>0) job_queue_processes最大值爲1000   查看job queue 後台進程 sql>select name,description from v$bgprocess;   二、dbms_job package 用法介紹 包含以下子過程:    Broken()過程。 change()過程。 Interval()過程。 Isubmit()過程。 Next_Date()過程。 Remove()過程。 Run()過程。 Submit()過程。 User_Export()過程。 What()過程。   1、Broken()過程更新一個已提交的工作的狀態,典型地是用來把一個已破工作標記爲未破工作 這個過程有三個參數:job 、broken與next_date。   PROCEDURE Broken ( job  IN binary_integer, Broken  IN boolean, next_date IN date :=SYSDATE)   job參數是工作號,它在問題中唯一標識工作。 broken參數指示此工作是否將標記爲破——TRUE說明此工作將標記爲破,而FLASE說明此工作將標記爲未破。 next_date參數指示在什麽時候此工作將再次運行。此參數缺省值爲當前日期和時間。 job如果由于某種原因未能成功之行,oracle將重試16次後,還未能成功執行,將被標記爲broken重新啓動狀態爲broken的job,有如下兩種方式; a、利用dbms_job.run()立即執行該job sql>begin sql>dbms_job.run(:jobno) 該jobno爲submit過程提交時返回的job number sql>end; sql>/ b、利用dbms_job.broken()重新將broken標記爲false sql>begin sql>dbms_job.broken (:job,false,next_date) sql>end; sql>/ 2、Change()過程用來改變指定工作的設置。 這個過程有四個參數:job、what 、next_date與interval。   PROCEDURE Change ( job     IN binary_integer, What    IN varchar2, next_date  IN date, interval  IN varchar2)   此job參數是一個整數值,它唯一標識此工作。 What參數是由此工作運行的一塊PL/SQL代碼塊。 next_date參數指示何時此工作將被執行。 interval參數指示一個工作重執行的頻度。   3、Interval()過程用來顯式地設置重執行一個工作之間的時間間隔數。這個過程有兩個參數:job與interval   PROCEDURE Interval ( job   IN binary_integer, Interval IN varchar2)   job參數標識一個特定的工作。interval參數指示一個工作重執行的頻度。   4、ISubmit()過程用來用特定的工作號提交一個工作。這個過程有五個參數:job、what、next_date、interval與no_parse   PROCEDURE ISubmit ( job    IN binary_ineger, What   IN varchar2, next_date IN date, interval  IN varchar2, no_parse IN booean:=FALSE)   這個過程與Submit()過程的唯一區別在于此job參數作爲IN型參數傳遞且包括一個由開發者提供的工作號。如果提供的工作號已被使用,將産生一個錯誤。   5、Next_Date()過程用來顯式地設定一個工作的執行時間。這個過程接收兩個參數:job與next_date   PROCEDURE Next_Date( job     IN binary_ineger, next_date  IN date) job標識一個已存在的工作。next_date參數指示了此工作應被執行的日期與時間。   6、Remove()過程來刪除一個已計劃運行的工作。這個過程接收一個參數:   PROCEDURE Remove(job IN binary_ineger);   job參數唯一地標識一個工作。這個參數的值是由爲此工作調用Submit()過程返回的job參數的值。已正在運行的工作不能由調用過程序刪除。   7、Run()過程用來立即執行一個指定的工作。這個過程只接收一個參數: PROCEDURE Run(job IN binary_ineger)    job參數標識將被立即執行的工作。   8、使用Submit()過程,工作被正常地計劃好 這個過程有五個參數:job、what、next_date、interval與no_parse。   PROCEDURE Submit ( job    OUT binary_ineger, What   IN varchar2, next_date IN date, interval  IN varchar2, no_parse IN booean:=FALSE)   job參數是由Submit()過程返回的binary_ineger。這個值用來唯一標識一個工作。 what參數是將被執行的PL/SQL代碼塊。 next_date參數指識何時將運行這個工作。 interval參數何時這個工作將被重執行。 no_parse參數指示此工作在提交時或執行時是否應進行語法分析——TRUE指示此PL/SQL代碼在它第一次執行時應進行語法分析,而FALSE指示本PL/SQL代碼應立即進行語法分析。   9、User_Export()過程返回一個命令,此命令用來安排一個存在的工作以便此工作能重新提交 此程序有兩個參數:job與my_call。   PROCEDURE User_Export( job    IN binary_ineger, my_call  IN OUT varchar2)   job參數標識一個安排了的工作。my_call參數包含在它的當前狀態重新提交此工作所需要的正文。  10、What()過程應許在工作執行時重新設置此正在運行的命令。這個過程接收兩個參數:job與what   PROCEDURE What ( job  IN binary_ineger, What IN OUT varchar2) job參數標識一個存在的工作。what參數指示將被執行的新的PL/SQL代碼。   三、查看相關job信息 1、相關視圖 dba_jobs all_jobs user_jobs dba_jobs_running 包含正在運行job相關信息   2、查看相關信息   SQL>SELECT JOB, NEXT_DATE, NEXT_SEC, FAILURES, BROKEN FROM DBA_JOBS;   正在運行的JOB相關信息   SELECT SID, r.JOB, LOG_USER, r.THIS_DATE, r.THIS_SEC FROM DBA_JOBS_RUNNING r, DBA_JOBS j WHERE r.JOB = j.JOB;   JOB QUEUE LOCK相關信息   SELECT SID, TYPE, ID1, ID2 FROM V$LOCK WHERE TYPE = 'JQ'; 四、簡單例子 一個簡單例子:    創建測試表 SQL> create table TEST(a date);   表已創建。   創建一個自定義過程 SQL> create or replace procedure MYPROC as 2 begin 3 insert into TEST values(sysdate); 4 end; 5 /   過程已創建。   創建JOB SQL> variable job1 number; SQL> SQL> begin 2 dbms_job.submit(:job1,'MYPROC;',sysdate,'sysdate+1/1440');  --每天1440分鍾,即一分鍾運行test過程一次 3 end; 4 /   PL/SQL 過程已成功完成。   運行JOB SQL> begin 2 dbms_job.run(:job1); 3 end; 4 /   PL/SQL 過程已成功完成。   SQL> select to_char(a,'yyyy/mm/dd hh24:mi:ss') 時間 from TEST;   時間 ------------------- 2001/01/07 23:51:21 2001/01/07 23:52:22 2001/01/07 23:53:24   刪除JOB SQL> begin 2 dbms_job.remove(:job1); 3 end; 4 /   PL/SQL 過程已成功完成。
󰈣󰈤
 
 
 
  免責聲明:本文僅代表作者個人觀點,與王朝網路無關。王朝網路登載此文出於傳遞更多信息之目的,並不意味著贊同其觀點或證實其描述,其原創性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,並請自行核實相關內容。
 
 
Afternoon Girl
精致的外景拍攝
零點一公分的距離
俏麗迷人 視覺享受
北海老城隨拍(二)
夢中的郭河
Gassin(法國最美麗小鎮之一) part
瑤池夕照
 
>>返回首頁<<
 
 熱帖排行
 
 
 
 
© 2005- 王朝網路 版權所有