如何在 oracle 中的同一数据库上创建完整模式的副本

Posted

技术标签:

【中文标题】如何在 oracle 中的同一数据库上创建完整模式的副本【英文标题】:How to create copy of full schema on same database in oracle 【发布时间】:2015-01-03 07:46:37 【问题描述】:

我想在同一个数据库上创建架构的完整副本。最好的技术是什么?

我的想法很少:

    Datapump Over Db 链接 网络链接上的 IMPDP EXPDP 然后是 IMPDP。

每种技术的优点和/或缺点是什么?

【问题讨论】:

【参考方案1】:

试试这个:

Copy schema into same database

我进行了测试,它确实有效。但是您必须像 cmets 中提到的那样创建一个公共链接。

如果您创建一个重新映射表空间的 .par 文件,您可以重复使用它。当然还有一些搜索替换。

别忘了把转换格式放在 .par 文件中:

TRANSFORM=oid:n

否则可能会出错。

【讨论】:

很有趣,但那个解决方案让我害怕 链接失效【参考方案2】:

您不需要花哨的网络链接或任何东西,只需要 expdp/impdp 命令。 首先导出你想要的架构:

expdp fromUser/fromPword schemas=sourceSchema directory=DUMPDIR dumpfile=dump.dmp logfile=explog.txt

提示:确保该用户能够写入 DUMPDIR 或您所称的任何内容

然后使用remap_schema 参数重新导入架构:

impdp toUser/toPword directory=DUMPDIR dumpfile=dump.dmp logfile=implog.txt remap_schema=fromUser:toUser

如果你真的想使用 network_link 参数(所以你不会因为某种原因创建转储文件),那么我建议阅读this 或this。 也可以在here 找到有关您问题的重要信息。

【讨论】:

这对我有用,尽管我在权限方面遇到了一些困难,最终通过使用 sysdba 登录运行命令解决了这些问题 - schemas / remap_schema 参数仍然告诉导出/导入什么。当你可以使用默认值时,可以省略目录参数,请参阅orafaq.com/wiki/Datapump#Create_database_directories。 @Matthias 不要将 EXP/IMP 作为 SYS。 :) 在上面运行 impdp 命令的示例中,是否假定您已经创建了新的“toUser”模式?还是命令会处理这个问题?

以上是关于如何在 oracle 中的同一数据库上创建完整模式的副本的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 10g中如何创建表

Oracle 10g中如何创建表

Oracle Dataguard

使用 JDBC 连接位于同一服务器上不同数据库中的 2 个 Oracle 表中的数据

Oracle数据库对象_约束

Spring Batch - 如何在不同的模式上创建元数据表?