如何在 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 中的同一数据库上创建完整模式的副本的主要内容,如果未能解决你的问题,请参考以下文章