数据泵impdp导入JOB
首先请大家先看下这篇文章--此文章介绍只针对同一个库上进行导入导出JOB会OK,但是不同库的话,导入后的用户是做导出操作的用户。不会属于做导入操作的用户。
http://blogold.chinaunix.net/u3/107027/showart_2151058.html
我自己在网上反复找写导入JOB的方法,最后得出结论,如果从A库导入JOB到B库,impdp不能直接成功导入你想要的导入用户。
当然一个个去重新建也非常麻烦!
解决方法:
2. CONTENT
该选项用于指定要导出的内容.默认值为ALL
CONTENT={ALL | DATA_ONLY | METADATA_ONLY}
当设置CONTENT为ALL 时,将导出对象定义及其所有数据.为DATA_ONLY时,只导出对象数据,为METADATA_ONLY时,只导出对象定义
导出语句:
expdp a/a directory=*** dumpfile=a.dmp logfile=a.log content=metadata_only include=job
导入语句:
6,SQLFILE
指定将导入要指定的索引DDL操作写入到SQL脚本中
SQLFILE=[directory_object:]file_name
impdp b/b directory=*** dumpfile=a.dmp logfile=b.log sql=b.sql include=job
会生成b.sql文件,该文件是生成job的语句。可执行b.sql生成job.
方法2:
declare
v_jobtext varchar2(500);
begin
for i in (select job from dba_jobs where job =1586)
loop
v_jobtext :='';
dbms_job.user_export(i.job,v_jobtext);
dbms_output.put_line(to_char(i.job)||','||v_jobtext);
end loop;
end;
将输出:
exec dbms_job.isubmit(job=>1337,what=>'PRO_9TH;',next_date=>to_date('2006-12-20:21:35:00','YYYY-MM-DD:HH24:MI:SS'),interval=>'trunc(sysdate+1)+(21+7/12)/24',no_parse=>TRUE);
exec dbms_job.isubmit(job=>1338,what=>'PRO_5TH;',next_date=>to_date('2006-12-20:21:35:00','YYYY-MM-DD:HH24:MI:SS'),interval=>'trunc(sysdate+1)+(21+7/12)/24',no_parse=>TRUE);
exec dbms_job.isubmit(job=>1339,what=>'PRO_8TH;',next_date=>to_date('2006-12-20:21:35:00','YYYY-MM-DD:HH24:MI:SS'),interval=>'trunc(sysdate+1)+(21+7/12)/24',no_parse=>TRUE);
exec dbms_job.isubmit(job=>1340,what=>'PRO_7TH;',next_date=>to_date('2006-12-20:17:35:00','YYYY-MM-DD:HH24:MI:SS'),interval=>'trunc(sysdate+1)+(17+7/12)/24',no_parse=>TRUE);
exec dbms_job.isubmit(job=>1341,what=>'PRO_6TH;',next_date=>to_date('2006-12-20:17:35:00','YYYY-MM-DD:HH24:MI:SS'),interval=>'trunc(sysdate+1)+(17+7/12)/24',no_parse=>TRUE);
然后创建脚本删除JOB,
exec sys.dbms_ijob.remove(job=>1337);
exec sys.dbms_ijob.remove(job=>1338);
exec sys.dbms_ijob.remove(job=>1339);
exec sys.dbms_ijob.remove(job=>1340);
exec sys.dbms_ijob.remove(job=>1341);
再执行上面输出的脚本即可。