定時刪除資料 用JOB

2022-02-09 05:18:36 字數 1926 閱讀 5101

對於dba來說,資料庫job再熟悉不過了,因為經常要資料庫定時的自動執行一些指令碼,或做資料庫備份,或做資料的提煉,或做資料庫的效能優化,包括重建索引等等的工作。但是,oracle定時器job時間的處理上,千變萬化,今天我把比較常用寫法彙總如下:

在總結之前,先把job的引數一一說明一下:

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

what引數是將被執行的pl/sql**塊;

next_date引數指識何時將執行這個工作。寫job的時候可以不指定該值;

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

其中interval這個值是決定job何時,被重新執行的關鍵。

例如:有儲存過程 p_dosomethings,需要被不同的時間間隔執行。

declare   

2jobno number;   

3begin   

4dbms_job.submit(

5jobno,

6'p_dosomething;',  --what

7to_date('20090101020000','yyyy-mm-dd hh24:mi:ss'),--next_date,可以不填

8'interval時間字串'--interval,關鍵設定

9);   

10commit;   

11end; 

121、 每分鐘執行

interval => trunc(sysdate,』mi』) + 1 / (24*60)

2、 每天定時執行

例如:每天的凌晨2點執行

interval => trunc(sysdate) + 1+2/ (24)

3、 每週定時執行

例如:每週一凌晨2點執行

interval =>trunc(next_day(sysdate,2))+2/24 --星期一,一周的第二天

4、 每月定時執行

例如:每月1日凌晨2點執行

interval =>trunc(last_day(sysdate))+1+2/24

5、 每季度定時執行

例如每季度的第一天凌晨2點執行

interval => trunc(add_months(sysdate,3),'q') + 2/24

6、 每半年定時執行

例如:每年7月1日和1月1日凌晨2點

interval => add_months(trunc(sysdate,'yyyy'),6)+2/24

7、 每年定時執行

例如:每年1月1日凌晨2點執行

interval =>add_months(trunc(sysdate,'yyyy'),12)+2/24

當然上面羅列不可能照顧到方方面面,但是稍微變化一下,就能衍生出無數的例子,聰明的你一定會的吧,我這裡就不多羅嗦了。

例子:先建乙個儲存過程:

create or replace procedure delete_data

isbegin

delete test_tb a

where zdrq

再建立乙個job

declare

jobno number;

begin

dbms_job.submit(

jobno,

'delete_data;',  --what,儲存過程名,別忘了新增分號

sysdate,--next_date,可以不填

'trunc(last_day(sysdate))+1+2/24'--interval,關鍵設定,間隔日期

);commit;

end;

mysql定時刪除資料

mysql show variables like scheduler variable name value event scheduler off 1row inset 臨時開啟 setglobal event scheduler on 永久開啟,my.cnf中 mysqld 新增,並重啟服務 ...

用SQL刪除資料

使用 delete 命令可以 刪除資料,使用 truncate 命令可以刪除整表資料但保留結構。4.7.1 刪除記錄 在 命令編輯區 輸入 delete from scott.test where empno 7500 and empno 8000 然後單擊 執行 按鈕,出現如圖4.47所示的結果。...

MySQL定時任務刪除資料

前提 表中有date defualt current timestamp 字段 基礎語句 檢視定時事件執行緒是否開啟 show variables like event scheduler 開啟定時事件執行緒 set global event scheduler 1 檢視已有的定時事件任務 show...