之前在做数据迁移的时候发现有用户的job没有迁移成功,原因是job号冲突导致,今天写了个sql,用于job的迁移.
1.对于job的导出,可使用dbms_job.user_export,需要使用job的拥有者进行登录 ,执行后该用户的job都以DDL的行式列出来
conn tttest/tt123
set lin 300
set echo on
set serveroutput on size 1000000 format wrapped
declare
v_jobno varchar2(3000);
jobcall varchar2(3000);
cursor c_jobs is select job from user_jobs;
begin
OPEN c_jobs;
loop
fetch c_jobs into v_jobno;
dbms_job.user_export(v_jobno, jobcall);
dbms_output.put_line('');
dbms_output.put_line(jobcall);
exit when c_jobs%NOTFOUND;
end loop;
end;
/
2.用前面生成的job信息来手动新建job
dbms_job包下有2种创建job的方式:submit和isubmit. 区别就是使用submit不必提供job号,系统自动生成. 使用isubmit就需要显示提供job号.
dbms_job包下有2种创建job的方式:submit和isubmit. 区别就是使用submit不必提供job号,系统自动生成. 使用isubmit就需要显示提供job号.
VARIABLE jobno number;
begin
dbms_job.submit(:jobno,what=>'dbms_refresh.refresh(''"MILES"."MV_TF_FILTER_TFPLAN"'');',next_date=>to_date('2017-05-08:13:24:47','YYYY-MM-DD:HH24:MI:SS'),interval=>'(SYSDATE+1/17280) ',no_parse=>TRUE);
end;
/
commit;
exec dbms_job.isubmit(job=>888,what=>'PROPLANNER.ZMD_Ausleitung;',next_date=>to_date('4000-01-01:00:00:00','YYYY-MM-DD:HH24:MI:SS'),interval=>'NEXT_DAY(TRUNC(SYSDATE), ''FREITAG'')+22/24',no_parse=>TRUE);
commit;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26753337/viewspace-2138696/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26753337/viewspace-2138696/