使用expdp和impdp迁移Oracle数据库

时间:2011-09-23 11:13:55

标签: oracle oracle11g database-migration impdp

是否需要使用表空间和/或用户(模式)准备目标数据库,以便将模式从一个数据库(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'
  1. 此错误是否告诉我newschema未定义?
  2. 我是否必须创建新用户?
  3. 我是否必须为这样的新用户创建表空间?
  4. 问题还与新PC上新安装的11g R2数据库有关。欢迎任何将数据库迁移到新安装的数据库的建议!

3 个答案:

答案 0 :(得分:5)

“是否需要使用表空间和/或用户(模式)准备目标数据库,以便将模式从一个数据库(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

有几个例子

答案 1 :(得分:1)

我认为有很多人来这里: ' UDI-00014:参数的无效值'错误,就像我一样。对于那些我的情况如下。

我有一个不同的场景,对我而言,它抱怨'remap_schema'参数。似乎我需要为以下值添加双引号:

之前(失败)

impdp user / password directory = 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

答案 2 :(得分:0)

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