oracle的job学习

WBOY
发布: 2016-06-07 15:18:58
原创
1527 人浏览过

在网上搜索了一堆都没用找到可用的,在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)'

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!