oracle 定时运行存储调度 schedule job,传递参数 及相关

5 篇文章 0 订阅

原文地址:https://blog.csdn.net/hkyw000/article/details/50055069

1. 首先创建好相应的procedure。此处略过。假设procedure的名字是 P1,P1跑的时候需要传递参数。参数为当前日期的前一天。

2.oracle 10g开始推出的 schedule更强大,更精确。以往的job还可继续使用。先来看个例子:


begin  
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点执行


然后就把enabled这个开关打开。开始生效schedule

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 等相关参数


第二,于此同时,渐渐的发问,如果这个scheduler不是你创建的。你怎么抽取出其相关的创建DDL 语句呢?

查了很多资料也没有特别满意的。(如果有大师看到我这文章,可以告诉我好的方法。)


1.对于job 可以用:

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导出,但是没测试过。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值