oracle定時器定時清理某張表指定日期前的資料

2021-10-09 11:41:37 字數 1766 閱讀 4204

--建立儲存過程,檢查表存不存在,存在就drop掉。 個人認為drop沒有mysql方便

create or replace procedure tableexistthendrop(tablename in varchar2) authid current_user

astempsql varchar2(2000);

vflag integer;

begin

vflag:=0;

tempsql:='select count(*) from user_tables where table_name = '''||upper(tablename)||'''';

execute immediate tempsql into vflag;

if vflag = 1 then 

tempsql:='drop table '||upper(tablename);

execute immediate tempsql;

end if;

end;

/--建立儲存過程刪除某個表中某一天之前的資料

create or replace procedure proce_delvertable authid current_user

astempsql varchar2(3000);

temp_date varchar2(20);

begin

temp_date:=to_char(sysdate,'yyyy-mm-dd');

tableexistthendrop('user_bak');

tempsql:='create table user_bak nologging as select * from user';

execute immediate tempsql;

tempsql:='truncate table user';

execute immediate tempsql;

tempsql:='insert into user select * from user_bak where dctime >='''||temp_date||' 00:00:00''';

execute immediate tempsql;

commit;

end;

/--使用者授權,如果不授權,ddl語句在job中執行不了

grant create table,create sequence, create trigger, 

create procedure, drop any sequence, create public synonym, 

drop public synonym to scott;

--建立job,每週一早上8點執行

declare

job number;

begin

sys.dbms_job.submit(job => job,

what => 'proce_delvertable;',

next_date => trunc(next_day(sysdate,'星期一'))+8/24,

interval => 'trunc(next_day(sysdate,''星期一''))+8/24');

commit;

dbms_job.run(job);

end;

tips:在這個方案中,使用的是create table as select 的方式進行備份的,如果原表資料量大建議用此備份,因為如果直接delete原表,可能會造成鎖表導致正常業務阻塞,而且這種方式的速度遠比delete快。

centos定時器 crond(定時清理快取例項)

43 21 每天的21 43 執行 15 05 每天的05 15 執行 0 17 每天的17 00 執行 0 17 1 每週一的 17 00 執行 0,10 17 0,2,3 每週日,周二,週三的 17 00和 17 10 執行 0 10 17 1 毎月1日從 17 00到7 10 毎隔1分鐘 執行...

mysql定時器定時清理表資料

1.首先先檢視mysql是否開啟定時任務開關 2.value為on則已開啟,off則關閉 如果是off,就先開啟 set global event scheduler on 3.然後建立我們想要的定時器 delimiter drop event if exists deletelog create ...

ORACLE的定時器

建立日誌資訊表 測試表 create table t log id number,datetime date 插入測試資料 insert into t log values 1,25 5月 2006 檢視日誌資訊 select from t log 建立刪除日誌資訊的儲存過程 create or r...