使用expdp和impdp迁移Oracle数据库

使用expdp和impdp迁移Oracle数据库,oracle,oracle11g,database-migration,impdp,Oracle,Oracle11g,Database Migration,Impdp,为了成功地将模式从一个数据库(11GR1)迁移到另一个数据库(11GR2),目标数据库是否需要准备表空间和/或用户(模式) 目前我只能使用11GR1数据库进行测试。我的测试是导出模式并将其导入同一数据库中的新模式 expdp system/systempass schemas=oldschema 之后,我尝试使用以下工具导入它: impdp system/systempass expdat.dmp remap_schema=oldschema:newschema 但这导致了错误: UDI-0

为了成功地将模式从一个数据库(11GR1)迁移到另一个数据库(11GR2),目标数据库是否需要准备表空间和/或用户(模式)

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

expdp system/systempass schemas=oldschema
之后,我尝试使用以下工具导入它:

impdp system/systempass expdat.dmp remap_schema=oldschema:newschema
但这导致了错误:

UDI-00014: invalid value for parameter, 'attach'
  • 此错误是否告诉我未定义
    newschema
  • 我必须创建一个新用户吗
  • 我必须为这样的新用户创建表空间吗
  • 这些问题还与新电脑上新安装的11g R2数据库有关。欢迎提出将数据库迁移到新安装数据库的建议

    “要成功地将架构从一个数据库(11g R1)迁移到另一个数据库(11g R2),目标数据库是否需要准备表空间和/或用户(架构)

    表空间-是的。用户-否


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

    impdp username/password DUMPFILE=<filename> [and then whatever other parameters you need for your import]
    
    impdp username/password DUMPFILE=[然后输入所需的任何其他参数]
    
    由于您正在进行“迁移”,我假设这是一个完整的导入/导出,在这种情况下,您可能需要:

    impdp username/password DUMPFILE=<filename> FULL=Y
    
    impdp用户名/密码DUMPFILE=FULL=Y
    

    关于您当前在同一db内的测试,我建议您退房:


    对于两个示例

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

    我知道很多人来这里是为了: “UDI-00014:参数值无效”错误,与我一样。对于这些人,我的情况如下

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

    之前(失败)

    impdp user/password directory=dump\u dir dumpfile=myfile.dmp remap\u schema=my\u schema:my\u schema remap\u tablespace=my\u schema:my\u schema logfile=mylog.log

    之后(已工作)


    impdp user/password directory=dump\u dir dumpfile=myfile.dmp remap\u schema=“my\u schema”:“my\u schema”remap\u tablespace=“my\u schema”:“my\u schema”logfile=mylog.log

    谢谢,我没有看到错误的参数,我确信是其他原因造成的。以防万一:我遇到这个问题是因为我在写转储文件名,但丢失了“dumpfile=”在路上的某个地方。
    impdp username/password DUMPFILE=<filename> FULL=Y