使用 expdp 和 impdp 迁移 Oracle 数据库

Posted

技术标签:

【中文标题】使用 expdp 和 impdp 迁移 Oracle 数据库【英文标题】:Migrating Oracle Database with expdp and impdp 【发布时间】:2011-11-23 14:15:48 【问题描述】:

目标数据库是否需要准备好表空间和/或用户(模式)才能成功地将模式从一个数据库 (11g R1) 迁移到另一个数据库 (11g R2)?

目前我只能使用 11g R1 数据库进行测试。我的测试是导出一个架构并将其导入到同一数据库中的一个新架构中。

expdp system/systempass schemas=oldschema

之后我尝试使用以下命令导入它:

impdp system/systempass expdat.dmp remap_schema=oldschema:newschema

但这会导致错误:

UDI-00014: invalid value for parameter, 'attach'
    此错误是否告诉我 newschema 未定义? 我必须创建一个新用户吗? 我必须为这样的新用户创建表空间吗?

这些问题还与新 PC 上新安装的 11g R2 数据库有关。欢迎任何将数据库迁移到新安装的数据库的建议!

【问题讨论】:

【参考方案1】:

“目标数据库是否需要准备好表空间和/或用户(模式)才能成功地将模式从一个数据库 (11g R1) 迁移到另一个数据库 (11g R2)?”

表空间 - 是的。用户 - 没有。


UDI-00014: invalid value for parameter, 'attach'

我认为调用impdp时参数的顺序不正确。应该是以下形式:

impdp username/password DUMPFILE=<filename> [and then whatever other parameters you need for your import]

由于您正在进行“迁移”,我假设它是一个完整的 imp/exp,在这种情况下您可能想要:

impdp username/password DUMPFILE=<filename> FULL=Y

关于你当前在同一个数据库中的测试,我建议你签出:

http://psoug.org/reference/datapump.html

举几个例子

【讨论】:

谢谢,我没有看到错误的参数我确信是其他原因。 以防万一:我遇到了这个问题,因为我正在编写转储文件名,但在某处丢失了“dumpfile=”。【参考方案2】:

我想很多人来这里是为了: 'UDI-00014: invalid value for parameter' 像我一样的错误。对于那些我的情况如下。

我有一个不同的场景,对我来说它抱怨“remap_schema”参数。看来我需要为以下值添加双引号:

之前(失败)

impdp 用户/密码目录=dump_dir dumpfile=myfile.dmp remap_schema=my_schema:my_schema remap_tablespace=my_schema:my_schema logfile=mylog.log

之后(工作)

impdp 用户/密码目录=dump_dir dumpfile=myfile.dmp remap_schema="my_schema":"my_schema" remap_tablespace="my_schema":"my_schema" logfile=mylog.log

【讨论】:

【参考方案3】:

如果您在导入期间没有使用 ATTACH 参数,则打开一个新的命令行窗口并运行导入,它现在应该可以工作了。对我来说,环境变量是相同的,但现在它是如何工作的。

【讨论】:

以上是关于使用 expdp 和 impdp 迁移 Oracle 数据库的主要内容,如果未能解决你的问题,请参考以下文章

Oracle11g数据库迁移到Oracle12C的PDB(使用impdp/expdp)

Oracle数据迁移expdp/impdp

数据库迁移expdp impdp 与 OGg 搭建

Oracl基础知识

expdp impdp 参数

oracle数据库迁移expdp/impdp(分享四)