暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

20230601_控制文件恢复为什么提示ORA-01589 must use RESETLOGS or NORESETLOGS

适用范围

Oracle Database - Enterprise Edition - Version 11.2.0.4.0 and later

问题概述

### 1. 控制文件异常损坏,数据库异常宕机 ERROR at line 1: ORA-00210: cannot open the specified control file ORA-00202: control file: '/oradata/db11/db11/control01.ctl' ORA-27041: unable to open file ### 2. 使用bacukp controlfile恢复 RMAN> restore controlfile from '/home/oracle/backup/ctl,bkp'; Starting restore at 16-JUN-23 using channel ORA_DISK_1 channel ORA_DISK_1: restoring control file channel ORA_DISK_1: restore complete, elapsed time: 00:00:01 output file name=/oradata/db11/db11/control01.ctl output file name=/oradata/db11/db11/control02.ctl Finished restore at 16-JUN-23 RMAN> ### 3. 数据库启动报错 SQL> alter database open; alter database open * ERROR at line 1: ORA-01589: must use RESETLOGS or NORESETLOGS option for database open SQL> SQL> alter database open resetlogs; alter database open resetlogs * ERROR at line 1: ORA-01194: file 1 needs more recovery to be consistent ORA-01110: data file 1: '/oradata/db11/db11/system01.dbf' SQL> alter database open noresetlogs; alter database open noresetlogs * ERROR at line 1: ORA-01610: recovery using the BACKUP CONTROLFILE option must be done SQL> recover database; ORA-00283: recovery session canceled due to errors ORA-01610: recovery using the BACKUP CONTROLFILE option must be done SQL>

问题原因

### 1. 重建控制文件前v$log信息 SQL> GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME NEXT_CHANGE# NEXT_TIME ---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ------------------- ------------ ------------------- 1 1 19 52428800 512 1 YES INACTIVE 1111348 2023-06-16 15:01:00 1111356 2023-06-16 15:01:02 3 1 18 52428800 512 1 YES INACTIVE 1111344 2023-06-16 15:00:57 1111348 2023-06-16 15:01:00 2 1 20 52428800 512 1 NO CURRENT 1111356 2023-06-16 15:01:02 2.8147E+14 SQL> ### 2. 重建控制文件后v$log信息 SQL> GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME NEXT_CHANGE# NEXT_TIME ---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ------------------- ------------ ------------------- 1 1 25 52428800 512 1 NO INACTIVE 1111442 2023-06-16 15:02:50 1111446 2023-06-16 15:02:51 3 1 27 52428800 512 1 NO CURRENT 1111474 2023-06-16 15:03:56 2.8147E+14 2 1 26 52428800 512 1 NO INACTIVE 1111446 2023-06-16 15:02:51 1111474 2023-06-16 15:03:56 SQL> ### 3. 小结 Oracle会使用v$log的信息进行数据库恢复,v$log中的信息是从控制文件中获取的,使用old controlfile中v$log的信息不准确,造成数据库恢复失败。

解决方案

建议通过重建控制文件,更新控制文件中v$log信息 SQL> alter database backup controlfile to trace as '/home/oracle/ctl.txt'; Database altered. SQL> SQL> startup nomount force SQL> @cr_ctl.sql SQL> recover database; Media recovery complete. SQL> alter database open; Database altered. SQL> SQL> @add_tmpfile.sql

参考文档

Open Database failed - DATAFILE NEEDS MORE RECOVERY TO BE CONSISTENT ORA-1194 ORA-1547 ORA-1110 (Doc ID 1528788.1) OERR: ORA-283 "recovery session canceled due to errors" Reference Note (Doc ID 18352.1)
最后修改时间:2023-07-04 09:16:51
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论