Oracle 19c中Data Pump导入时REMAP_DATAFILE参数失效问题
解决Oracle 19c PDB导入时REMAP_DATAFILE参数不生效的问题
针对你在将源库全量备份导入Oracle 19c PDB时遇到的REMAP_DATAFILE不生效、数据文件路径未被重映射的问题,可通过以下方式排查和解决:
一、确认参数语法与备份中的路径匹配
首先检查REMAP_DATAFILE的参数是否与备份文件中记录的源路径完全匹配:
- 用
SQLFILE生成预览DDL,查看CREATE TABLESPACE语句中的数据文件路径(比如你案例中的/opt/oracle/oradata/oradata/DB_SOURCE/DATOSLOB_01)。 - 确保
REMAP_DATAFILE的源路径前缀与备份中的路径完全一致,包括斜杠的使用。你的配置语法本身正确,但可尝试用单引号包裹路径避免特殊字符解析问题:REMAP_DATAFILE='/opt/oracle/oradata/oradata/DB_SOURCE/':'/opt/oracle/oradata/oradata/DB_TARGET/pdb_target/'
二、针对PDB导入的替代解决方案
由于19c部分版本存在PDB导入时REMAP_DATAFILE不生效的Bug,可采用手动干预方案:
- 预创建表空间
- 生成完整导入DDL:
impdp your_user/your_pass@pdb_target parfile=your_par.par SQLFILE=pre_create_ts.sql - 编辑
pre_create_ts.sql,将所有CREATE TABLESPACE语句中的数据文件路径替换为目标路径/opt/oracle/oradata/oradata/DB_TARGET/pdb_target/。 - 在目标PDB中执行修改后的DDL,提前创建好所有需要的表空间。
- 生成完整导入DDL:
- 仅导入数据
修改par文件,添加CONTENT=DATA_ONLY参数,跳过表空间创建步骤,直接导入数据到已创建的表空间:
然后重新执行导入命令。CONTENT=DATA_ONLY REMAP_DATAFILE=/opt/oracle/oradata/oradata/DB_SOURCE/:/opt/oracle/oradata/oradata/DB_TARGET/pdb_target/ # 其他原有参数...
三、检查并应用Oracle补丁
Oracle 19c中存在已知Bug(Bug 31704509),导致导入PDB时REMAP_DATAFILE无法正常工作,该Bug在19.11版本的Release Update (RU) 中已修复。如果你的数据库版本低于19.11,建议升级到最新的RU补丁包,以彻底解决该问题。
四、其他注意事项
- 确保Oracle用户对目标路径
/opt/oracle/oradata/oradata/DB_TARGET/pdb_target/拥有读写权限,避免文件创建时的权限问题。
内容的提问来源于stack exchange,提问作者Anthonyx82
相关产品推荐
相关产品推荐

