Oracle儲存過程定時執行主要有兩種方法

2021-06-06 02:20:02 字數 1694 閱讀 3291

1、編寫shell指令碼,使用crontab在後台定時執行

a) shell指令碼

bash-2.03$ more pr_merge_query_report.sh

#!/bin/sh

oracle_base=/oracle/home (指定環境變數)

oracle_home=/oracle/home/data

nls_lang=american_america.zhs16gbk

path=/usr/local/bin:/usr/bin:/bin:/usr/sbin:

/sbin:/usr/local/bin:/opt/emcpower/bin:

/etc:/oracle/home/data/bin:/usr/ccs/bin:/usr/openwin/bin:

/usr/local/bin:/bin:/sbin:/usr/bin:

/usr/local/bin:/usr/local/sbin:/export/home/bss/.db_conf

export oracle_base oracle_home nls_lang path

sqlplus -s username/password 《

declare

v_date varchar2(10);v_code varchar2(255); v_msg varchar2(255); v_err varchar2(255);

begin

v_date:=to_char(sysdate,『yyyymmdd』);

if substr(v_date,7,2)》=01 and substr(v_date,7,2)《=04

then

account.pr_merge_query_report(to_char(sysdate,『yyyymm』)-1,to_char(sysdate,『yyyymmdd』), v_code, v_msg, v_err);

else

account.pr_merge_query_report(to_char(sysdate,『yyyymm』),to_char(sysdate,『yyyymmdd』),v_code, v_msg, v_err);

end if;

end;

exit;

b) crontab

使用crontab –e編輯

30 22 * * * /export/home/bss/bss/pr_merge_query_report.sh 》 /export/home/bss/log/mergequery.log 2》&1

時間格式:分 小時 日 月 星期

2。新增job

使用pl/sql developer 可以很容易新增定時執行的儲存過程

乙個例子:

begin

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

what =》 『rating.job_press;』,

next_date =》 to_date(『01-01-4000』, 『dd-mm-yyyy』),

interval =》 『trunc(sysdate+1)』);

sys.dbms_job.broken(job =》 :job,

broken =》 true,

next_date =》 to_date(『01-01-4000』, 『dd-mm-yyyy』));

commit;

end;

ORACLE 定時執行儲存過程

推薦用dbms scheduler方式更好 2012 11 19注 查詢 select job,broken,what,interval,t.from user jobs t job job的唯一標識,自動生成的 broken 是否處於執行狀態,n 執行 y 停止 what 儲存過程名稱 next ...

Oracle 定時執行儲存過程

1.首先建立乙個簡單的儲存過程 create or replace procedure sp wftestone msg varchar as begin delete from wf testone commit end 2.建立作業需要在命令視窗裡面執行 sql variable v jobnu...

oracle定時執行儲存過程

一直用 sql server 建作業什麼得定時執行還是很ok得 碰到oracle就懵l 真實為難我胖虎了 create orreplace procedure mh policeman gps info proc asbegin insert into mh xh hq policeman info...