首頁  >  文章  >  資料庫  >  oracle的job学习

oracle的job学习

WBOY
WBOY原創
2016-06-07 15:18:581527瀏覽

在网上搜索了一堆都没用找到可用的,在oracle的目录下找了个 在$ORACLE_HOME/RDBMS/admin下面有个spauto.sql, 语句如下: variable jobno number; variable instno number; begin select instance_number into :instno from v$instance; dbms_job.submit(:jobn

在网上搜索了一堆都没用找到可用的,在oracle的目录下找了个

在$ORACLE_HOME/RDBMS/admin下面有个spauto.sql,

语句如下:

variable jobno number;
variable instno number;
begin
  select instance_number into :instno from v$instance;
  dbms_job.submit(:jobno, 'statspack.snap;', trunc(sysdate+1/24,'HH'), 'trunc(SYSDATE+1/24,''HH'')', TRUE, :instno);
  commit;
end;
/

 

 

放在pl/sql命令行执行即可,其余语法在参见网上的

 

---设置某个时间段执行p_job_run_day 过程
declare
jobid     number;
v_sql     varchar2(2000);
v_day_id number;
begin
SELECT to_number(to_char(SYSDATE-1,'YYYYMMDD')) INTO v_day_id FROM dual;
v_sql:='begin
 if     to_char(sysdate,''HH24:MI'')=''7:00''
 then  p_job_run_day;
dbms_output.put_line(''success'');
end if;
commit;
exception
when     others     then
rollback;
dbms_output.put_line(SQLERRM);
end; ';
dbms_job.submit(jobid,v_sql,sysdate,'sysdate+1/24');
dbms_job.run(jobid);
dbms_output.put_line('job     '||to_char(jobid)||'     is     running');
commit;
end;
/


2 删除job
从select * from user_jobs; 查出job序号
执行 exec dbms_job.remove(22);

 

3 如果控制执行时间

3
描述                    INTERVAL参数值
每天午夜12点            'TRUNC(SYSDATE + 1)'
每天早上8点30分         'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)'
每星期二中午12点         'NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24'
每个月第一天的午夜12点    'TRUNC(LAST_DAY(SYSDATE ) + 1)'
每个季度最后一天的晚上11点 'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24'
每星期六和日早上6点10分    'TRUNC(LEAST(NEXT_DAY(SYSDATE, ''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)'

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn