我正在使用Oracle数据库。我正在通过两个用户访问该数据库。它们是userA和userB。我已经在userA模式中创建了一些表,包和过程等。在这里,我想继续使用“ userB”并删除userA。
我从userA授予了userB的权限,并通过选择所有记录创建了一个具有单独名称的表。然后,我看到尚未创建触发器和索引。我想知道将表,包和过程与数据一起从一个用户复制到另一个用户的最佳方法。
答案 0 :(得分:1)
您可以复制表,方法是使用expdp
进行备份,然后使用带有impdp
/ remap_schema
选项的remap_tablespace
进行导入(this answer中的示例)。 / p>
您不能将此方法用于包,过程或触发器,因为impdp
documentation指出:
限制
- 映射可能不是100%完整的,因为某些架构引用是Import无法找到的。例如,“导入”将找不到嵌入在类型,视图,过程和程序包的定义体内的架构引用。
- 对于触发器,REMAP_SCHEMA仅影响触发器所有者。
要传输这些信息,您将必须编辑触发器/功能/过程/等的源代码。然后在新架构上对其进行重新编译,以使代码中的架构引用也得到更新。