使用expdp和impdp迁移Oracle数据库

Chr*_*mer 4 oracle database-migration oracle11g impdp

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

目前我只能用11g R1数据库进行测试.我的测试是导出一个模式并将其导入同一数据库中的新模式.

expdp system/systempass schemas=oldschema
Run Code Online (Sandbox Code Playgroud)

之后我试着用以下方法导入它:

impdp system/systempass expdat.dmp remap_schema=oldschema:newschema
Run Code Online (Sandbox Code Playgroud)

但这会导致错误:

UDI-00014: invalid value for parameter, 'attach'
Run Code Online (Sandbox Code Playgroud)
  1. 这个错误告诉我newschema没有定义吗?
  2. 我是否必须创建新用户?
  3. 我是否必须为这样的新用户创建表空间?

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

cag*_*boy 5

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

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


UDI-00014: invalid value for parameter, 'attach'
Run Code Online (Sandbox Code Playgroud)

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

impdp username/password DUMPFILE=<filename> [and then whatever other parameters you need for your import]
Run Code Online (Sandbox Code Playgroud)

由于你正在进行"迁移",我认为它是一个完整的imp/exp,在这种情况下你可能想要:

impdp username/password DUMPFILE=<filename> FULL=Y
Run Code Online (Sandbox Code Playgroud)

关于您在同一个数据库中的当前测试,我建议您退房:

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

举几个例子