oracle 肖露 oracle定制定時執行任務

2021-10-13 12:13:21 字數 1419 閱讀 9717

oracle定制定時執行任務

主要通過oracle資料庫的job來定製乙個簡單的定時執行任務(eg:定製每隔一分鐘向乙個表中插入語句)

oacle定時任務的緣由:專案中要在固定的時間,把乙個資料庫中某些表的資料同步到另外乙個資料庫。把同步的指令碼放在乙個儲存過程中。然後在固定的時間去執行這個儲存過程就可以了。

注意:以下所有的操作都是在system使用者下執行。採用pl/sql做的客戶端登入。

(1)新建乙個表,命名為test,建表語句如下:

create table system.test(

id number(2) primary key,

btime date

(2)新建乙個儲存過程(在sql視窗下執行),命名為test_proc,儲存過程的語句如下:

create or replace procedure test_proc is

begin

insert into system.test(id,btime) values(nvl((select max(id) from system.test)+1,0),sysdate);

commit;

exception

when others then

rollback;

end;

(3)定制定時執行任務

假設我們要每隔一分鐘向表test中插入一條記錄,我們只需要每隔一分鐘執行一次儲存過程test_proc即可。

在pl/sql的command window輸入一下語句:

variable job_num number;

begin

dbms_job.submit(:job_num,'test_proc;',sysdate,'sysdate+1/24/60');

commit;

end;

(4)檢視執行結果

a.檢視新增的job是否成功

通過檢視dba_jobs表中的what欄位可以看到最後一條記錄即時我們剛新建的定時任務;

select * from dba_jobs;

b.檢視test表是否插入了資料

select * from test;

(5)如何刪除乙個job

在pl/sql的command window執行一下語句:

exec dbms_job.remove(81);

說明:這裡的數字81是對應dba_jobs表中當前要刪除的job記錄所在行的job欄位的值;

每天執行一次

'sysdate+1'

每小時執行一次

'sysdate+1/24'

每10分鐘執行一次

'sysdate+10/(60*24)'

每30秒執行一次

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

每隔一星期執行一次

'sysdate+7'

利用Oracle的Job Queue實現定時操作

1 確保oracle的工作模式允許啟動佇列管理器 snp程序 svrmgrl alter system enable restricted session 或 sql alter system disenable restricted session 2 確保oracle已配置任務佇列管理器的啟動引...

選擇一定的日期oracle與mysql的實現

表中列的型別定義為timestamp oracle的語句實現 select from table where to char create date,yyyy mm dd 1998 07 12 andto char create date,yyyy mm dd 1999 12 20 這裡的table...

Linux伺服器編寫Oracle資料庫定時備份指令碼

bin sh export oracle home oracle base product 11.2.0 export oracle sid orcl export oracle term xterm export path oracle home bin usr sbin path export ...