Oracle 定時任務

2021-08-30 20:41:43 字數 2459 閱讀 4269

dbms_job系統包是oracle「任務佇列」子系統的api程式設計介面。dbms_job包對於任務佇列提供了下面這些功能:提交並且執行乙個任務、改變任務的執行引數以及刪除或者臨時掛起任務等。

設定初始化引數來進行的。下面就是該引數:

job_queue_processes = n 

其中,n可以是0到36之間的任何乙個數。

名稱

型別

描述

dbms_job.isubmit

過程提交乙個新任務,使用者指定乙個任務號

dbms_job.submit

過程提交乙個新任務,系統指定乙個任務號

dbms_job.remove

過程從佇列中刪除乙個已經存在的任務

dbms_job.change

過程更改使用者設定的任務引數

dbms_job.what

過程更改pl/sql任務定義

dbms_job.next_date

過程更改任務下一次執行時間

dbms_job.interval

過程更改任務執行的時間間隔

dbms_job.broken

過程將任務掛起,不讓其重複執行

dbms_job.run

過程在當前會話中立即執行任務

dbms_job.user_export

過程建立文字字串,用於重新建立乙個任務

dbms_job包引數

名稱

型別

注釋

jobbinary_integer

任務的唯一識別號

what

varchar2

作為任務執行的pl/sql**

next_date

varchar2

任務下一次執行的時間

interval

varchar2

日期表示式,用來計算下一次任務執行的時間

任務重複執行間隔和間隔設計演算法

描述

interval引數值

每天執行一次

'sysdate + 1'

每小時執行一次

'sysdate + 1/24'

每10分鐘執行一次

'sysdate + 10/(60*24)'

每30秒執行一次

'sysdate + 30/(60*24*60)'

每隔一星期執行一次

'sysdate + 7'

不再執行該任務並刪除它

null

定時到特定日期或時間的任務例子

描述

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)'

在plsql中建立儲存過程:

create table test as select * from t_user where user_id is null;

建立任務(在命令視窗):

variable no4 number;

begin

2  dbms_job.submit(job=>:no4,

3  what=>'pro_t1;',          --pro_t1是儲存過程

4  next_date=>sysdate,

5  interval=>'sysdate+10/24/60');

6  commit;

7  end;

8  /

select * from user_jobs; --檢視任務

begin

2  dbms_job.remove(23);  --刪除任務

3  end;

4  /

oracle 定時任務

在pl sql 中執行命名 第一步 開啟乙個sql window 視窗,建立一張測試表 create table test date a date 第二步 建立儲存過程 create or replace procedure test myproc asbegininsert into test d...

oracle定時任務

1.建立儲存過程 create orreplace procedure proc test isbegin insert into test values 1 2 commit end prc job test 2.建立任務 declare job number begin sys.dbms job...

Oracle定時任務

建立表 create table test carno varchar2 30 carinfoid number 建立儲存過程 create or replace procedure pro test ascarinfo id number begin select s carinfoid.next...