0

我使用将转储从OLD_SCHEMAto导入NEW_SCHEMA。除了 10 个包外,所有包看起来都很好,错误是它们引用了旧模式,即它们中的表名被附加了OLD_SCHEMA. 即,OLD_SCHEMA.table_name。我检查了它们看起来与正确包中相同的同义词。

有没有办法解决它?

4

1 回答 1

0

要解决此问题,您有多种可能性,具体取决于您的需要。

  • REMAP_SCHEMA在导入命令中使用该选项:

    REMAP_SCHEMA=source_schema:target_schema
    

  • 从您的包中删除模式名称并仅使用同义词。这限制了您在不同架构上拥有相同名称的对象。

  • 有一个脚本来从所有包中提取源代码,用一些正则表达式重命名模式,并通过在新数据库上重新编译代码来重新注入源代码;提取来源,使用dbms_metadata.get_clob; 然后它变得有点棘手,你必须更改文本的部分CLOB,但它很有趣。

于 2016-08-04T08:22:46.710 回答