oracle job的迁移
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,因为JOB的内容是写死的,如果使用remap导入到别的用户下,其log_user等还是原来的,再加上job的id是固定的,很可能和当前库有冲突,所以建议取出job的ddl。dbms_metadata.
千家信息网最后更新 2026年11月01日oracle job的迁移
因为JOB的内容是写死的,如果使用remap导入到别的用户下,其log_user等还是原来的,再加上job的id是固定的,很可能和当前库有冲突,所以建议取出job的ddl。
dbms_metadata.get_ddl是不可以的。不行你们试试就知道了。
所以我写了个plsql
set serveroutput on size 100000set termout onset feedback offclear screenspool /opt/soft/bak/make_jobs.sqlprompt -- exporting jobsbegin<< export_jobs >>declare subtype job_type is user_jobs.JOB%type ; subtype max_text_type is varchar2( 8191 char ) ; type job_tab_type is table of job_type index by pls_integer ; type sql_tab_type is table of max_text_type index by pls_integer ; job_tab job_tab_type ; sql_tab sql_tab_type ; job pls_integer ; what pls_integer ; next_date pls_integer ; interval pls_integer ; no_parse pls_integer ; procedure get_jobs is begin select j.JOB bulk collect into job_tab from user_jobs j order by 1 ; end get_jobs ; procedure format( x pls_integer ) is sqlx max_text_type := null ; begin sqlx := 'begin' || chr(10); job := instr( sql_tab(x), '(job=>' ) ; sqlx := sqlx || substr( sql_tab(x), 1, job-1 ) || chr(10) ; what := instr( sql_tab(x),',what=>' ) ; sqlx := sqlx || substr( sql_tab(x), job, what-job ) || chr(10) ; next_date := instr( sql_tab(x),',next_date=>' ) ; sqlx := sqlx || substr( sql_tab(x), what, next_date-what ) || chr(10) ; interval := instr( sql_tab(x),',interval=>' ) ; -- sqlx := sqlx || substr( sql_tab(x), next_date, interval-next_date ) || chr(10) ; sqlx := sqlx || q'|,next_date=>'01-JAN-3000'|' || chr(10) ; no_parse := instr( sql_tab(x),',no_parse=>' ) ; sqlx := sqlx || substr( sql_tab(x), interval, no_parse-interval ) || chr(10) ; sqlx := sqlx || ',no_parse=>TRUE' || chr(10) || ');' || chr(10) ; sqlx := sqlx || 'commit;' || chr(10) || chr(10) ; sqlx := sqlx || 'end;' || chr(10) || '/' || chr(10) ; sql_tab(x) := sqlx; end format ; begin get_jobs; if job_tab.count > 0 then for i in 1 .. job_tab.count loop sql_tab(i) := ' '; sys.dbms_job.user_export ( job => job_tab(i) , mycall => sql_tab(i) ); format(i) ; dbms_output.put_line( sql_tab(i) ) ; end loop ; else dbms_output.put_line( '-- Nothing to do.' ) ; end if ;end export_jobs;end;/spool off
然后呢,用这个得到输出重建job。如果你遇到
ORA-00001: unique constraint (SYS.I_JOB_JOB) violated
就说明job列重复了,这时候你有两种方法,一个是重置job,改个没人用的。
另一种就是删了现在的job重建。
删除语法是
exec dbms_job.remove(25);
如果删除时遇到如下:
ORA-23421: job number 387 is not a job in the job queue
很有可能是因为你的用户不是job的owner。
select job,log_user,priv_user,schema from dba_jobs where job=25;
然后切换过去再删除,同理,建立也必须使用当前用户。
用户
不行
内容
就是
建议
方法
语法
还是
冲突
切换
输出
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
精品咖啡豆
百单网互联网科技有限公司怎么样
礼当家互联网科技
顺玮阁互联网科技
猫创互联网科技
四川狮子座互联网科技
互联网科技有限公司 翻译
互联网科技公司需要的职位
剑昆互联网络科技有限公司临桂
阿里互联网科技公司
中化能源互联网科技招聘
互联网金融中的现代科技
厦门比较好的科技互联网公司
广州千川互联网科技有限公司
互联网领先科技宣传片
山东大美朱楼互联网科技有限公司
九思连强互联网电子科技有限公司
科技互联网行业投资研究
西安左小互联网科技有限公司
利用互联网等科技手段
智能科技公司是互联网公司吗
互联网科技的发展
智网互联网科技
重庆科技学院互联网
开启互联网科技时代小说
湖南一路畅行互联网科技
链环科技传统企业怎么转型互联网
好易买互联网科技
10位科技互联网大佬
中国主要互联网科技公司