Oracle 12c使用RMAN时间点恢复执行alter database open resetlogs报错求助
Oracle 12c RMAN恢复后执行
alter database open resetlogs报ORA-03113/ORA-03114错误 问题背景
在Oracle 12c环境中,通过RMAN执行时间点恢复以找回2023年11月17日09:44误删的表,完成restore和recover后,执行alter database open resetlogs时触发连接中断错误。具体操作步骤如下:
$ rman target=/ RMAN> shutdown immediate; RMAN> startup mount; RMAN> run { set until time "to_date('17/11/2023 09:40:00', 'DD/MM/YYYY HH24:MI:SS')"; restore database; recover database; }
随后执行:
RMAN> alter database open resetlogs;
触发的错误信息:
RMAN> alter database open resetlogs; RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of sql statement command at 11/17/2023 09:55:53 ORA-03113: end-of-file on communication channel Process ID: 116719 Session ID: 1339 Serial number: 7632 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== ORA-03114: not connected to ORACLE RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of sql statement command at 11/17/2023 09:55:53 ORA-03113: end-of-file on communication channel Process ID: 116719 Session ID: 1339 Serial number: 7632
解决思路
1. 优先查看alert日志定位根因
ORA-03113/ORA-03114只是连接中断的表象,真正的故障原因藏在alert日志里:
- 登录SQL*Plus执行
show parameter background_dump_dest;获取alert日志路径 - 查看日志中
alter database open resetlogs前后的条目,重点关注数据文件损坏、日志文件异常、SCN不匹配这类关键错误
2. 验证RMAN恢复过程是否完整
- 回溯RMAN执行
restore和recover时的输出,确认所有数据文件、归档日志都成功恢复,没有报错或警告 - 执行
RMAN> report schema;检查所有数据文件的状态和时间点是否符合预期
3. 换SQL*Plus执行open resetlogs
断开当前RMAN会话,用SQL*Plus以sysdba身份连接重试:
sqlplus / as sysdba SQL> alter database open resetlogs;
如果同样报错,SQL*Plus的输出和alert日志会提供更直接的故障线索
4. 检查服务器与实例状态
- 用
ps -ef | grep ora_pmon_<你的实例名>确认PMON进程是否存活,判断实例是否异常终止 - 检查服务器CPU、内存、磁盘空间,特别是数据文件、日志文件所在磁盘是否已满
5. 确认恢复时间点与备份可用性
- 核对恢复时间点
17/11/2023 09:40:00是否合理,确保存在该时间点之前的完整备份,以及之后到删除操作前的所有归档日志 - 执行
RMAN> list backup of database;和RMAN> list archivelog all;验证备份和归档的完整性
6. 处理数据文件损坏的情况
如果alert日志提示某数据文件损坏,可尝试离线丢弃该文件(仅适用于非关键数据文件):
SQL> alter database datafile '<损坏文件的完整路径>' offline drop; SQL> alter database open resetlogs;
之后需要重新创建该数据文件,并从备份中恢复对应数据
内容的提问来源于stack exchange,提问作者Tony92
相关产品推荐
相关产品推荐

