oracle包在迁移到新模式后引用旧模式

时间:2014-06-12 12:59:41

标签: oracle plsql oracle11g impdp

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

有没有办法解决它?

1 个答案:

答案 0 :(得分:0)

要解决此问题,您可以根据需要提供多种可能性。

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

     REMAP_SCHEMA=source_schema:target_schema
    

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

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