You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle 11g R2中源schema不存在时impdp能否正常导入dump文件?

Oracle 11g R2 impdp 导入无日志dump文件问题解答

结论

按照你当前写的参数执行,无法正常导入dump内的所有对象。

核心原因

  1. remap_schema=源schema:目标schema的生效逻辑是:impdp读取dump文件中记录的原始导出schema名称,只有你填写的「源schema」值和dump内记录的原始schema名完全匹配时,才会把对应对象映射到目标schema下。你当前随意填写的源schemarx如果和dump实际导出的schema名不一致,该映射规则完全不会触发。
  2. 当remap规则不触发时,impdp会默认尝试把对象导入到和dump原始导出schema同名的数据库用户下,此时如果目标库不存在对应用户,会直接抛出ORA-39083: 对象创建失败, 出现错误: ORA-01918: 用户'xxx'不存在的报错,导入流程中断。
  3. 你当前写的参数文件本身还有两处会直接导致执行失败的错误:
    • directory参数填写的my directory带空格,Oracle数据库内创建的directory对象名不允许包含空格,需要和dba_directories视图中记录的实际目录对象名完全一致
    • 表存在处理参数拼写错误,正确参数名是table_exists_action,你写的table_exist_action少了字母s,执行时会直接报参数无效错误

正确操作步骤

  1. 先查询dump文件内的真实原始schema名,不需要实际导入数据,执行以下命令即可:
    impdp 你的导入用户/密码@数据库实例 directory=你实际创建的目录对象名 dumpfile=你的dump文件名.dmp sqlfile=dump_meta.sql full=y
    
    执行完成后会在对应directory指向的操作系统路径下生成dump_meta.sql文件,打开文件搜索CREATE USER、SCHEMA关键字,就能拿到dump导出时对应的原始schema名称。
  2. 提前在目标库创建好目标用户tbs,给用户分配对应表空间的无限配额,以及CREATE TABLE、CREATE SEQUENCE、CREATE PROCEDURE等导入需要的基础权限。
  3. 修正参数文件内容,参考如下:
    directory=你实际的目录对象名
    remap_schema=上一步查到的真实原始schema名:tbs
    table_exists_action=replace
    # 如果原始schema用了自定义表空间,建议追加remap_tablespace映射,避免表空间不存在报错
    # remap_tablespace=原始表空间名:目标表空间名
    
  4. 再执行impdp命令传入修正后的parfile即可正常导入。

补充说明:remap_schema指定的源schema不需要在目标数据库中提前存在,只要参数里填的源schema名和dump内记录的原始名一致,映射规则就能正常生效。


内容的提问来源于stack exchange,提问作者jack zh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.21 16:16:02