有关触发器(ORA-39083,ORA-00942)的Oracle IMPDP REMAP_SCHEMA问
可以使用Oracle数据泵导入工具(IMPDP.EXE)使用REMAP_SCHEMA选项将一个模式导入另一个模式.但是,存在一个问题,即触发器未正确重新映射.这导致触发器根本没有创建错误,如下所示: ORA-39083: Object type TRIGGER failed to create with error: ORA-00942: table or view does not exist Failing sql is: CREATE TRIGGER "**NEW_SCHEMA**"."METER_ALARMS_BI" BEFORE INSERT ON **OLD_SCHEMA**.METER_ALARMS ... 原因是因为create SQL仍然引用OLD_SCHEMA.它确实在Oracle文档中说:
恕我直言,这是甲骨文的一个警察,但这是另一个讨论! 根据Oracle Metalink说明750783.1,解决方法是:
impdp system/****** directory=test_dp DUMPFILE=export_schemas.dmp remap_schema=u1:u2 sqlfile=script.sql
这不是一个好方法,特别是如果你有许多失败的对象,并希望在数据库的现场升级中自动化组合多个模式的过程. 有没有人找到更好的方法来做到这一点?如果要在现场使用,我需要一个必须100%可靠的解决方案.我可以解析生成的SQL文件,但可以100%正确吗?是否有一些方法可以拦截IMPDP执行的CREATE SQL语句并在导入时动态更正?可以直接修补DMP文件吗? 你可以看一下DBMS_METADATA有一个REMAP_SCHEMA选项.不确定它是否比DATAPUMP更好用(我怀疑DATAPUMP会在封面下使用DBMS_METADATA).但是“后处理”输出会更容易. (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |