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

问题描述 投票:0回答:1

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

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

oracle oracle11g data-migration
1个回答
0
投票

您可以通过使用expdp进行备份,然后使用带有impdp / remap_schema选项的remap_tablespace进行导入来复制表(例如this answer中的示例。

由于impdp documentation指出,您不能对包,过程或触发器使用此方法:

限制

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

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

© www.soinside.com 2019 - 2024. All rights reserved.