oracle 中导出系统中现有rdbms_jobs中的脚本及schedules job的创建

--有些时时候需要提交别人你写的job脚本,用下面的存储就可以在命令窗口模式下输出全部的job代码;
set serveroutput on size 1000000;


create or replace procedure proc_generate_job_create_sql is
  begin
      DBMS_OUTPUT.ENABLE(buffer_size => null); --表示输出buffer不受限制
      sys.dbms_output.put_line('declare');
      sys.dbms_output.put_line(' v_job number;');
      sys.dbms_output.put_line('begin');


      for j in (select what, interval from user_jobs) loop
      sys.dbms_output.put_line(' sys.dbms_job.submit(job => v_job,');
      sys.dbms_output.put_line(' what => ''' ||
      j.what || ''',');
      sys.dbms_output.put_line(' next_date => ' ||
      j.interval || ',');
      sys.dbms_output.put_line(' interval => ''' ||
      j.interval || ''');');
      end loop;


      sys.dbms_output.put_line(' commit;');
      sys.dbms_output.put_line('end;');


end;
--使用schedule_job可以更好管理你的job,可以自定义命名你的job.
begin
dbms_scheduler.create_schedule(schedule_name => 'SCHEDULE_自定义名称',
repeat_interval => 'FREQ=DAILY; INTERVAL=1;BYHOUR=0;ByMinute=10',
comments => '每天0点10分执行调度');  


dbms_scheduler.create_program(program_name => 'PROGRAM_自定义名称',
program_type => 'PLSQL_BLOCK',
program_action => 'BEGIN 业务代码(一般为存储过程); END;',
number_of_arguments => 0,
enabled => TRUE,
comments => '描述');
dbms_scheduler.create_job(job_name => 'JOB_自定义名称',
program_name => 'PROGRAM_自定义名称',
schedule_name => 'SCHEDULE_自定义名称',
job_class => 'DEFAULT_JOB_CLASS',
enabled => true,
auto_drop => true,
comments => '描述');
--开始运行
dbms_scheduler.run_job(job_name => 'JOB_自定义名称', use_current_session => false);
end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值