rman convert database 是唯一能直接跨平台物理迁移整库的方式,必须满足字节序一致、数据库 open read only、平台名严格匹配 v$transportable_platform 中的 platform_name(大小写、空格、连字符全敏感)三个硬条件,缺一不可;否则报 rman-06136 或 ora-1126 等错误。

RMAN CONVERT DATABASE 是唯一能直接跨平台物理迁移整库的方式,但必须满足字节序一致、数据库 OPEN READ ONLY、平台名严格匹配三个硬条件,缺一不可。
为什么 CONVERT DATABASE 总是报 RMAN-06136 或 ORA-01126
这不是权限或路径问题,而是数据库状态错了。RMAN 需要读取数据字典里的表空间、文件路径、块大小等元信息,这些只有在 OPEN READ ONLY 下才稳定可读。很多人误以为 MOUNT 就够了,结果 RMAN 在 MOUNT 下根本解析不了 DB_FILE_NAME_CONVERT 中的源路径,报错 RMAN-03002 并附带模糊提示。
正确顺序只能是:
SHUTDOWN IMMEDIATESTARTUP MOUNTALTER DATABASE OPEN READ ONLY
如果应用连接未断开、有未提交事务,OPEN READ ONLY 会失败 —— 这时得先清理会话,不能硬上。
TO PLATFORM 'xxx' 的值怎么填才不报 RMAN-06004
它不是操作系统名称,也不是你凭经验写的缩写。必须从源库查:
SELECT PLATFORM_NAME FROM V$TRANSPORTABLE_PLATFORM WHERE ENDIAN_FORMAT = (SELECT ENDIAN_FORMAT FROM V$DATABASE);
返回结果里哪个值就用哪个,大小写、空格、括号、连字符一个都不能少。例如:
- ✅
Linux x86 64-bit - ❌
linux x86_64(大小写错 + 缺空格 + 缺连字符) - ❌
Windows x64(漏了Microsoft和ia (32-bit)或x64后缀)
如果目标平台没出现在查询结果里,说明 Oracle 不支持该组合,CONVERT DATABASE 直接不可用 —— 别浪费时间改参数重试。
迁移后 STARTUP 报 ORA-01113 或 ORA-01244 怎么办
因为 CONVERT DATABASE 只处理 .dbf 数据文件,完全不碰控制文件、重做日志、临时文件、密码文件。你拿到的只是一堆转换好的数据文件 + 一个 transport.sql 脚本 + 一个 PFILE。
必须在目标端手动执行:
- 提前创建好所有目录(
$ORACLE_BASE/admin/$ORACLE_SID、oradata、fast_recovery_area等) - 用
transport.sql中的CREATE CONTROLFILE语句重建控制文件,注意把所有DATAFILE和LOGFILE路径改成目标主机的实际路径 - 执行
RECOVER DATABASE USING BACKUP CONTROLFILE,否则控制文件和数据文件 SCN 对不上
最容易被忽略的是:RECOVER DATABASE USING BACKUP CONTROLFILE 这一步不能跳,也不能用 RECOVER DATABASE 替代 —— 因为控制文件是新建的,没有历史 SCN 记录,必须显式指定“用备份控制文件恢复”。











