MRP0异常关闭需先查trace定位根因,常见ORA-01111/01110/01157表明存在UNNAMED占位文件;确认v$datafile中UNNAMED条目后,根据是否需保留数据选择CREATE DATAFILE或OFFLINE DROP修复,并确保standby_file_management=AUTO、db_file_name_convert配置完整。
进程异常关闭不是“重启就能好”的问题,直接执行
很可能秒退,根本起不来——因为底层文件状态已损坏,强行启动只会重复报错。
查
的 trace 文件定位真实错误点
崩溃时写的 trace 文件(路径在告警日志开头的
行里)比 alertlog 更细,能暴露具体卡在哪一步。常见关键线索包括:
- 出现
、
、
组合:说明控制文件里存在
占位文件,但磁盘上没对应物理文件
- 出现
或
:指向实际写文件失败,大概率是目录不存在、权限不对或 ASM diskgroup 未挂载
- 出现
或反复
:说明归档有 gap,MRP 被阻塞在等缺失日志,不是文件问题而是传输断了
别只扫一眼 trace 就关掉——重点看最后 20 行的 call stack,找第一个非 ORA-00600 的错误,那才是根因。
确认
中是否存在
条目
是症状,不是原因。先验证它是否真实存在:
- 在备库 mount 状态下运行:
- 如果返回结果不为空(如
),说明控制文件已“登记”了一个无法访问的文件
- 此时
必然起不来,因为 recovery 过程中会尝试打开这个文件,而它根本不存在
注意:
条目不会自动消失,即使主库后来删掉了对应表空间——备库控制文件仍保留该记录,必须人工干预。
手动修复
文件的两种路径
修复方式取决于你能否在备库创建对应文件:
- 如果磁盘空间、目录权限、ASM diskgroup 都 OK:
用
再执行
让 MRP 从断点续应用
- 如果主库已删该表空间,且你确认备库不需要该数据:
先
(42 是上面查出的
)
再
(此时数据库可读写,但该文件逻辑丢失)
后续若需完全清理,需重建控制文件或做完整恢复
切记:不要在 open 状态下直接删
对应的控制文件条目——v$controlfile_record_section 不可直接修改,硬删会破坏控制文件结构。
oracle知识库
oracle知识库下载
下载
启动前务必检查
和路径映射
很多
反复崩溃,是因为参数没对齐:
-
必须为
,否则新增文件不会自动创建
-
必须覆盖主库所有数据文件路径,漏一条就可能生成
- 检查
- 若用 ASM,确认
在备库指向有效的、已
的 diskgroup
最易被忽略的是:RAC 环境下,
必须在所有节点生效;哪怕一个实例没 reload,它的 LGWR 传过来的 redo 仍会触发备库文件创建失败。
mrp0alter database recover managed standby database disconnect from sessionMRP0MRP0Errors in file ...ORA-01111ORA-01110ORA-01157UNNAMEDORA-27040ORA-19502ORA-16055FAL request failedv$datafileUNNAMEDUNNAMEDSELECT file#, name FROM v$datafile WHERE name LIKE '%UNNAMED%';/u01/app/oracle/product/12.1.0/dbhome_1/dbs/UNNAMED00042MRP0UNNAMEDUNNAMEDALTER DATABASE CREATE DATAFILE '/path/to/UNNAMED00042' AS '/real/path/to/datafile01.dbf';RECOVER DATABASEALTER DATABASE DATAFILE 42 OFFLINE DROP;file#ALTER DATABASE OPEN;UNNAMEDstandby_file_managementMRP0standby_file_managementAUTOdb_file_name_convertUNNAMEDSELECT * FROM v$parameter WHERE name IN ('standby_file_management', 'db_file_name_convert');db_create_file_destMOUNTEDdb_file_name_convert