Oracle Job定時任務詳解 跨資料庫資料同步

2022-03-25 04:51:47 字數 4040 閱讀 8973

業務需求,需要與a公司做資料對接,我們公司用的oracle,a公司用的sql server資料庫,如何跨資料庫建立連線呢?這裡使用的是dblink,不會配置的請看我的另外一篇部落格:

我們已經知道job是乙個定時任務,也就是說可以在乙個規定的時間內,執行某一項任務,這個任務就是「儲存過程」。

1 create or replace procedure proc_add_test as

2begin

3 insert into test values (to_char(sysdate, '

yyyy-mm-dd hh:mi

'));/*

向測試表插入資料

*/4 commit; /*

提交*/

5end;67

8 create or replace procedure 儲存過程名稱 as

9begin

10/*

業務邏輯片段

*/11 end;

1

declare

2 job number; /*

job:定時器名稱*/3

begin

4dbms_job.submit(

5 job => job, /*

自動生成job_id

*/6 what => '

proc_add_test;

', /*

需要執行的儲存過程名稱或sql語句

*/7 next_date => sysdate+3/(24*60), /*

初次執行時間-下乙個3分鐘

*/8 interval => '

trunc(sysdate,

''mi

'')+1/(24*60)'/*

每隔1分鐘執行一次*/9

字段介紹

78語法:9

begin

10 dbms_job.broken(任務的唯一識別符號, true

, sysdate);

11commit;

12 end;

1

begin

2 dbms_job.run(4);3

end;45

語法:6

begin

7dbms_job.run(任務的唯一識別符號);

8 end;

1

begin

2 dbms_job.remove(4);3

commit;

4end;56

7begin

8dbms_job.remove(任務的唯一識別符號);

9commit;

10 end;

1 每天午夜12點            ''trunc(sysdate + 1)''

2 每天早上8點30分 ''trunc(sysdate + 1) + (8*60+30)/(24*60)''

3 每星期二中午12點 ''next_day(trunc(sysdate ), ''''tuesday'''' ) + 12/24

''4 每個月第一天的午夜12點 ''trunc(last_day(sysdate ) + 1)''

5 每個季度最後一天的晚上11點 ''trunc(add_months(sysdate + 2/24, 3 ), ''q'' ) -1/24

''6 每星期六和日早上6點10分 ''trunc(least(next_day(sysdate, ''''saturday"

), next_day(sysdate,

"sunday"

))) + (6×60+10)/(24×60)''

7 每3秒鐘執行一次 '

sysdate+3/(24*60*60)

'8 每2分鐘執行一次 '

sysdate+2/(24*60)'9

101:每分鐘執行

11 interval => trunc(sysdate,'

mi') + 1/ (24*60) --每分鐘執行

12 interval => '

sysdate+1/(24*60)

' --每分鐘執行

13 interval => '

sysdate+1

' --每天

14 interval => '

sysdate+1/24

' --每小時

15 interval => '

sysdate+2/24*60

' --每2分鐘

16 interval => '

sysdate+30/24*60*60

' --每30秒 172

:每天定時執行

18 interval => trunc(sysdate+1) --每天凌晨0點執行

19 interval => trunc(sysdate+1)+1/24 --每天凌晨1點執行

20 interval => trunc(sysdate+1)+(8*60+30)/(24*60) --每天早上8點30分執行 213

:每週定時執行

22 interval => trunc(next_day(sysdate,'

星期一'))+1/24 --每週一凌晨1點執行

23 interval => trunc(next_day(sysdate,1))+2/24 --每週一凌晨2點執行 244

:每月定時執行

25 interval =>ttrunc(last_day(sysdate)+1) --每月1日凌晨0點執行

26 interval =>trunc(last_day(sysdate))+1+1/24 --每月1日凌晨1點執行 275

:每季度定時執行

28 interval => trunc(add_months(sysdate,3),'

q') --每季度的第一天凌晨0點執行

29 interval => trunc(add_months(sysdate,3),'

q') + 1/24 --每季度的第一天凌晨1點執行

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

q')-1/24 --每季度的最後一天的晚上11點執行 316

:每半年定時執行

32 interval => add_months(trunc(sysdate,'

yyyy

'),6)+1/24 --每年7月1日和1月1日凌晨1點 337

:每年定時執行

34 interval =>add_months(trunc(sysdate,'

yyyy

'),12)+1/24 --每年1月1日凌晨1點執行

Oracle Job定時任務的使用詳解

oracle中的job能為你做的就是在你規定的時間格式裡執行儲存過程,定時執行乙個任務 下面是乙個小案例,定時每15分鐘向一張表插入一條資料 一1.建立一張測試表 create table create table a8 a1 varchar2 500 tablespace dsp data pct...

oracle job 定時任務,定時執行

declare jobno number begin sys.dbms job.submit jobno,dayreport sysdate,trunc sysdate,mi 1 24 60 commit end 注 dayreport 為儲存過程名字 select from sys.user jo...

linux crontab定時任務詳解

1.為當前使用者建立cron服務 crontab e 例如 檔案內容如下 每隔1分鐘執行sql指令碼 1 mysql h127.0.0.1 uroot proot home undoner sync db.sql 2.檢視該使用者下的crontab服務是否建立成功 crontab l 3.啟動cro...