oralce 通過job定時任務備份表

2021-08-14 02:09:19 字數 2031 閱讀 7310

1:首先建立備份表的儲存過程

create or replace procedure bakup_tmoi

isparam1 varchar2(200) ;

sqlcode1 varchar2(2000);

begin

select to_char(sysdate,'yyyymmdd') into param1 from dual ;

sqlcode1 :='create table bakup_tmoi'||param1 ||' as select * from t_g_o_i' ;

execute immediate sqlcode1;

end;

2: 按照要求,每月0晨備份一次

begin

sys.dbms_job.submit(job => :job,

what => 'bakup_tmoi;',

next_date => to_date('01-01-2018 00:00:00', 'dd-mm-yyyy hh24:mi:ss'),

interval => 'trunc(last_day(sysdate ) + 1)');

commit;

end;

/其實時間設定,是根據 sysdate 和日期函式來獲取日誌的, 如next_day  , last_day ,add_months 與trunc 函式進行組合使用,而獲取到的日期,進行定時執行

eg: 

1:每分鐘執行

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

2:每天定時執行

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

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

3:每週定時執行

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

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

4:每月定時執行

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

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

5:每季度定時執行

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

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

6:每半年定時執行

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

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

7:每年定時執行

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

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

--oracle trunc()函式的用法

/**************日期********************/

1.select trunc(sysdate) from dual  --2011-3-18  今天的日期為2011-3-18

2.select trunc(sysdate, 'mm')   from   dual  --2011-3-1    返回當月第一天.

3.select trunc(sysdate,'yy') from dual  --2011-1-1       返回當年第一天

4.select trunc(sysdate,'dd') from dual  --2011-3-18    返回當前年月日

5.select trunc(sysdate,'yyyy') from dual  --2011-1-1   返回當年第一天

6.select trunc(sysdate,'d') from dual  --2011-3-13 (星期天)返回當前星期的第一天

7.select trunc(sysdate, 'hh') from dual   --2011-3-18 14:00:00   當前時間為14:41   

8.select trunc(sysdate, 'mi') from dual  --2011-3-18 14:41:00   trunc()函式沒有秒的精確

Oracle定時任務Job

建立測試用表 create table tb job job name varchar2 5 update dt varchar2 20 新增多個oracle job來併發執行 declare job name varchar2 20 begin dbms output.put line curre...

oracle中定時任務job

oracle中的job能為你做的就是 在你規定的時間格式裡定時執行儲存過程,定時執行乙個任務 建立job及執行 variable job2010 number begin dbms job.submit job2010,spgenchanneluseroneday sysdate,sysdate 1...

Linux 排JOB定時任務

排job的3種方法,at方法只能執行一次,crontab可迴圈執行比較靈活,anacrontable可以檢測job是否正常執行,沒有執行就會重新執行比較智慧型一些,但是要執行的指令指令碼要 放到相應的houly,daily資料夾下。at只能執行一次,使用這個指令有白名單,黑名單控制。使用這個指令一樣...