将表,包和过程从一种模式复制到Oracle中的另一种模式

时间:2019-10-18 08:55:17

标签: oracle oracle11g data-migration

我正在使用Oracle数据库。我正在通过两个用户访问该数据库。它们是userA和userB。我已经在userA模式中创建了一些表,包和过程等。在这里,我想继续使用“ userB”并删除userA。

我从userA授予了userB的权限,并通过选择所有记录创建了一个具有单独名称的表。然后,我看到尚未创建触发器和索引。我想知道将表,包和过程与数据一起从一个用户复制到另一个用户的最佳方法。

1 个答案:

答案 0 :(得分:1)

您可以复制表,方法是使用expdp进行备份,然后使用带有impdp / remap_schema选项的remap_tablespace进行导入(this answer中的示例)。 / p>

您不能将此方法用于包,过程或触发器,因为impdp documentation指出:

  

限制

     
      
  • 映射可能不是100%完整的,因为某些架构引用是Import无法找到的。例如,“导入”将找不到嵌入在类型,视图,过程和程序包的定义体内的架构引用。
  •   
  • 对于触发器,REMAP_SCHEMA仅影响触发器所有者。
  •   

要传输这些信息,您将必须编辑触发器/功能/过程/等的源代码。然后在新架构上对其进行重新编译,以使代码中的架构引用也得到更新。