2.oracle 10g开始推出的 schedule更强大,更精确。以往的job还可继续使用。先来看个例子:
dbms_scheduler.create_job(
job_name => ‘TEST‘,
job_type => ‘STORED_PROCEDURE‘,
job_action => ‘P1‘,
number_of_arguments => 1,
repeat_interval =>‘FREQ=DAILY; BYHOUR=1‘,
enabled => FALSE
);
end;
/
begin
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE (
job_name => ‘TEST‘,
argument_position => 1,
argument_value => to_char(sysdate-1,‘yyyymmdd‘)
);
end;
/
到此就创建好一个schedule. 具体可以在dba_scheduler_jobs 里查看。
number_of_arguments 为传递参数的数量
repeat_interval =>‘FREQ=DAILY; BYHOUR=1‘, 这个就是每天跑,且在每天的1点开始跑。
具体interval 还有很多设置方法。每周,每月,每年,每周几。。这些不多说。
Interval => TRUNC(sysdate) + 1 +1/ (24) 这也是每天的1点执行
EXEC DBMS_SCHEDULER.ENABLE(‘TEST‘);
EXEC DBMS_SCHEDULER.RUN_JOB(‘TEST‘);
exec dbms_scheduler.drop_job(‘TEST‘); 删除job
EXEC dbms_scheduler.set_attribute(‘TEST1‘,‘REPEAT_INTERVAL‘,‘FREQ=DAILY;BYHOUR=2‘);
最后可以在 视图中查看status,next_run_date 等相关参数
查了很多资料也没有特别满意的。(如果有大师看到我这文章,可以告诉我好的方法。)
QL> select job from dba_jobs;
JOB
----------
1
set serveroutput on ;
declare
job_body varchar2(32767);
begin
dbms_job.user_export(1,job_body);
dbms_output.put_line(job_body);
end;
/
dbms_job.isubmit(job=>1,what=>‘begin insert into ttime values(systimestamp); end;‘,next_date=>to_date(‘2012-12-03:08:03:52‘,‘YYYY-MM-DD:HH24:MI:SS‘),interval=>‘sysdate+1/86400‘,no_parse=>TRUE);
2.对于schedule,现在只找到一种方法,就是用expdp & impdp,然后impdp 写上 show=y,sqlfile=xxx.sql
最后再cat这个sql文件。有人说到dbms_sched_job_export.create_exp导出,但是没测试过。
原文链接:https://blog.csdn.net/hkyw000/article/details/50055069
Oracle 定时运行存储调度 schedule job,传递参数 (转载)
原文:https://www.cnblogs.com/xibuhaohao/p/12395230.html
如果您也喜欢它,动动您的小指点个赞吧