我使用impdp将转储从OLD_SCHEMA
to导入NEW_SCHEMA
。除了 10 个包外,所有包看起来都很好,错误是它们引用了旧模式,即它们中的表名被附加了OLD_SCHEMA
. 即,OLD_SCHEMA.table_name
。我检查了它们看起来与正确包中相同的同义词。
有没有办法解决它?
要解决此问题,您有多种可能性,具体取决于您的需要。
REMAP_SCHEMA
在导入命令中使用该选项:
REMAP_SCHEMA=source_schema:target_schema
从您的包中删除模式名称并仅使用同义词。这限制了您在不同架构上拥有相同名称的对象。
有一个脚本来从所有包中提取源代码,用一些正则表达式重命名模式,并通过在新数据库上重新编译代码来重新注入源代码;提取来源,使用dbms_metadata.get_clob
; 然后它变得有点棘手,你必须更改文本的部分CLOB
,但它很有趣。