oracle job的迁移
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,因为JOB的内容是写死的,如果使用remap导入到别的用户下,其log_user等还是原来的,再加上job的id是固定的,很可能和当前库有冲突,所以建议取出job的ddl。dbms_metadata.
千家信息网最后更新 2025年01月20日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安全错误
数据库的锁怎样保障安全
mysql数据库log
作文网络安全与我
sql数据库的msdtc
数据库不完全链接
威海商城软件开发解决方案
网络安全卡片怎么做
对网络技术员的采访
专业手机软件开发公司
数据库被格式化
基本数据库英语单词
中文数据库的检索与应用论文
数据库外模式例子
恒生软件开发公司联系电话
云服务器空间怎么扩容
永劫无间测试服连接不到服务器
pwr服务器是什么意思
电子数据库啥意思
中国国家网络安全宣传周是为了
涉乙软件开发资质证书
达梦数据库导入多个文件
软件开发必须学习的知识
怎么查服务器硬盘的mac
数据库先查询后更新
在数据库中数据有高级与低级之分
网络安全小诗8句
信息网络安全的提案
域服务器修改密码日志审记
网络安全都做些什么
数据库类型boolean
软件开发可以学习什么