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