ORA-01610: recovery using the BACKUP CONTROLFILE option must be done

一:版本信息

操作系统版本 AIX 6109

数据库版本  11.2.0.3(PSU5)

 

二:错误描述

  同事在做数据库恢复演练的时候recover database时报如下错误:

SQL> recover database;
ORA-00283: recovery session canceled due to errors
ORA-01610: recovery using the BACKUP CONTROLFILE option must be done
##他跟我咨询的时候,我首先想到的就是他恢复出来的控制文件肯定是比恢复出来的数据文件旧,于是我就查了一下他们的scn

1.System Checkpoint SCN

SQL> set line 200 pages 2000;
SQL> col checkpoint_change# format 999,999,999,999;
SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
   241,086,682,217
2.Datafile Checkpoint SCN

SQL>  select name,checkpoint_change# from v$datafile;

NAME                                               CHECKPOINT_CHANGE#
-------------------------------------------------- ------------------
/data01/egcmcdb/datafile/system.dbf                   241,086,682,217
/data01/egcmcdb/datafile/sysaux.dbf                   241,086,682,217
/data01/egcmcdb/datafile/undotbs1.dbf                 241,086,682,217
/data01/egcmcdb/datafile/users.dbf                    241,086,682,217
/data01/egcmcdb/datafile/tbs_channel01.dbf            241,086,682,217
/data01/egcmcdb/datafile/tbs_channel02.dbf            241,086,682,217
/data01/egcmcdb/datafile/tbs_channel03.dbf            241,086,682,217
/data01/egcmcdb/datafile/tbs_channel_bak01.dbf        241,086,682,217
/data01/egcmcdb/datafile/tbs_channel_bak02.dbf        241,086,682,217
/data01/egcmcdb/datafile/undotbs02.dbf                241,086,682,217
/data01/egcmcdb/datafile/uk01.dbf                     241,086,682,217
/data01/egcmcdb/datafile/uk02.dbf                     241,086,682,217
3.Start SCN号

SQL> select name,checkpoint_change# from v$datafile_header;

NAME                                               CHECKPOINT_CHANGE#
-------------------------------------------------- ------------------
/data01/egcmcdb/datafile/system.dbf                   241,086,340,779
/data01/egcmcdb/datafile/sysaux.dbf                   241,086,340,779
/data01/egcmcdb/datafile/undotbs1.dbf                 241,086,340,779
/data01/egcmcdb/datafile/users.dbf                    241,086,340,820
/data01/egcmcdb/datafile/tbs_channel01.dbf            241,086,340,820
/data01/egcmcdb/datafile/tbs_channel02.dbf            241,086,340,820
/data01/egcmcdb/datafile/tbs_channel03.dbf            241,086,340,779
/data01/egcmcdb/datafile/tbs_channel_bak01.dbf        241,086,340,820
/data01/egcmcdb/datafile/tbs_channel_bak02.dbf        241,086,340,779
/data01/egcmcdb/datafile/undotbs02.dbf                241,086,340,779
/data01/egcmcdb/datafile/uk01.dbf                     241,086,340,820
/data01/egcmcdb/datafile/uk02.dbf                     241,086,340,820
4.End SCN (Stop SCN)号

SQL> select name,last_change# from v$datafile;

NAME                                               LAST_CHANGE#
-------------------------------------------------- ------------
/data01/egcmcdb/datafile/system.dbf
/data01/egcmcdb/datafile/sysaux.dbf
/data01/egcmcdb/datafile/undotbs1.dbf
/data01/egcmcdb/datafile/users.dbf
/data01/egcmcdb/datafile/tbs_channel01.dbf
/data01/egcmcdb/datafile/tbs_channel02.dbf
/data01/egcmcdb/datafile/tbs_channel03.dbf
/data01/egcmcdb/datafile/tbs_channel_bak01.dbf
/data01/egcmcdb/datafile/tbs_channel_bak02.dbf
/data01/egcmcdb/datafile/undotbs02.dbf
/data01/egcmcdb/datafile/uk01.dbf
/data01/egcmcdb/datafile/uk02.dbf

##从上面可以看到他恢复出来的控制文件的scn是大于各个数据文件的scn号的,那么为什么会报这个错,一时真没想起来


三.问题原因

问题原因可以参考OERR: ORA 1610 recovery using the BACKUP CONTROLFILE option must be done (Doc ID 19007.1)

Cause:  Either an earlier database recovery session specified BACKUP 
        CONTROLFILE or the control file was recreated with the RESETLOGS 
        option.
        Only BACKUP CONTROLFILE recovery is allowed, and it must be followed 
        by resetting the online redo log files when the database is next 
        opened.
Action: Perform recovery using the BACKUP CONTROLFILE option.

##有两个原因会导致恢复的时候出现该错误,第一个是你的恢复出来的控制文件比恢复出来的数据文件旧,第二个是你的控制文件使用resetlogs选项重建过。(问了一下这个库是从其他的地方迁过来的,做过resetlogs,所以问题原因清楚了)


四.解决方案

解决方法就是 recovery using the BACKUP CONTROLFILE option.




ORA-00283ORA-01610 错误都与恢复操作有关。 ORA-00283 错误表示恢复会话因为错误而被取消。这个错误通常是由于恢复过程中出现了其他错误,导致恢复过程无法继续而被取消。 ORA-01610 错误表示使用 BACKUP CONTROLFILE 选项的恢复必须已经完成。这个错误通常是由于在执行恢复操作之前没有备份好控制文件,或者备份的控制文件不完整所致。 针对这两个错误,你可以尝试以下步骤进行恢复: 1. 确认恢复操作的日志文件,可以使用命令 `SELECT * FROM V$RECOVERY_FILE_STATUS` 来查看恢复操作的日志文件,并检查是否存在错误。 2. 如果日志文件正常,可以尝试使用命令 `RECOVER DATABASE` 来继续恢复操作。如果恢复过程中出现了其他错误,可以根据错误提示进一步修复。 3. 如果备份的控制文件不完整或者备份之前没有备份控制文件,可以使用备份控制文件的方式进行恢复。可以使用命令 `STARTUP NOMOUNT PFILE=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/init.ora;` 将数据库启动到 nomount 状态,然后使用命令 `RESTORE CONTROLFILE FROM '/backup/controlfile.bak';` 恢复控制文件。 4. 在完成控制文件恢复之后,可以使用命令 `ALTER DATABASE MOUNT;` 将数据库挂载到 mount 状态,然后使用命令 `RECOVER DATABASE;` 恢复数据库。 需要注意的是,在进行恢复操作时,一定要备份好数据库文件,并且在操作过程中要小心谨慎,以免造成数据的进一步损害。同时,也要注意在恢复操作之前备份好控制文件等重要的数据库文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

渔夫数据库笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值