ITPub博客

首页 > 数据库 > Oracle > 记一次数据库恢复-ORA-01194

记一次数据库恢复-ORA-01194

原创 Oracle 作者:abstractcyj 时间:2019-11-18 10:56:37 0 删除 编辑

尝试打开数据库时,发现打不开


SQL> alter database open resetlogs;

alter database open resetlogs

*

第 1 行出现错误:

ORA-01194: 文件 1 需要更多的恢复来保持一致性

ORA-01110: 数据文件 1: 'E:\APP\ADMINISTRATOR\ORADATA\YSORCL\SYSTEM01.DBF'



SQL> select log_mode from v$database;


LOG_MODE

------------

NOARCHIVELOG


SQL>

SQL> select name from v$datafile;


NAME

--------------------------------------------------------------------------------

E:\APP\ADMINISTRATOR\ORADATA\YSORCL\SYSTEM01.DBF

E:\APP\ADMINISTRATOR\ORADATA\YSORCL\SYSAUX01.DBF

E:\APP\ADMINISTRATOR\ORADATA\YSORCL\UNDOTBS01.DBF

E:\APP\ADMINISTRATOR\ORADATA\YSORCL\USERS01.DBF

E:\APP\ADMINISTRATOR\ORADATA\YSORCL\EXAMPLE01.DBF

E:\APP\ADMINISTRATOR\ORADATA\YSORCL\BI_DATA01.DBF

E:\APP\ADMINISTRATOR\ORADATA\YSORCL\YS_RP01.DBF

E:\APP\ADMINISTRATOR\ORADATA\YSORCL\YS_BI01.DBF

E:\APP\ADMINISTRATOR\ORADATA\YSORCL\YS_IND01.DBF

E:\APP\ADMINISTRATOR\ORADATA\YSORCL\BI_DATA02.DBF

E:\APP\ADMINISTRATOR\ORADATA\YSORCL\BI_DATA03.DBF


NAME

--------------------------------------------------------------------------------

E:\APP\ADMINISTRATOR\ORADATA\YSORCL\BI_DATA04.DBF


已选择12行。


SQL> select file#,to_char(checkpoint_change#,'999999999999') from v$datafile;


     FILE# TO_CHAR(CHECK

---------- -------------

         1     138620706

         2     138620706

         3     138620706

         4     138620706

         5     138620706

         6     138620706

         7     138620706

         8     138620706

         9     138620706

        10     138620706

        11     138620706


     FILE# TO_CHAR(CHECK

---------- -------------

        12     138620706


已选择12行。


SQL> select file#,online_status,to_char(change#,'999999999999') from v$recover_file;


未选定行


SQL> select file#,to_char(checkpoint_change#,'999999999999') from v$datafile_header;


     FILE# TO_CHAR(CHECK

---------- -------------

         1     138620706

         2     138620706

         3     138620706

         4     138620706

         5     138620706

         6     138620706

         7     138620706

         8     138620706

         9     138620706

        10     138620706

        11     138620706


     FILE# TO_CHAR(CHECK

---------- -------------

        12     138620706


已选择12行。


SQL> desc v$LOG

 名称                                      是否为空? 类型

 ----------------------------------------- -------- ----------------------------

 GROUP#                                             NUMBER

 THREAD#                                            NUMBER

 SEQUENCE#                                          NUMBER

 BYTES                                              NUMBER

 BLOCKSIZE                                          NUMBER

 MEMBERS                                            NUMBER

 ARCHIVED                                           VARCHAR2(3)

 STATUS                                             VARCHAR2(16)

 FIRST_CHANGE#                                      NUMBER

 FIRST_TIME                                         DATE

 NEXT_CHANGE#                                       NUMBER

 NEXT_TIME                                          DATE


SQL> select group#, first_change# from v$log;


    GROUP# FIRST_CHANGE#

---------- -------------

         1     138617722

         3     138620706

         2     138619288


SQL> select member from v$logfile;


MEMBER

--------------------------------------------------------------------------------

E:\APP\ADMINISTRATOR\ORADATA\YSORCL\REDO03.LOG

E:\APP\ADMINISTRATOR\ORADATA\YSORCL\REDO02.LOG

E:\APP\ADMINISTRATOR\ORADATA\YSORCL\REDO01.LOG


SQL> recover database using backup controlfile until cancel;

ORA-00279: 更改 138620706 (在 11/16/2019 05:19:55 生成) 对于线程 1 是必需的

ORA-00289: 建议:

E:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\YSORCL\ARCHIVELOG\2019_11_18\O1_MF_1_93

0_%U_.ARC

ORA-00280: 更改 138620706 (用于线程 1) 在序列 #930 中



指定日志: {<RET>=suggested | filename | AUTO | CANCEL}

E:\APP\ADMINISTRATOR\ORADATA\YSORCL\REDO03.LOG

已应用的日志。

完成介质恢复。

SQL>

SQL>

SQL> alter database open reset logs;

alter database open reset logs

                    *

第 1 行出现错误:

ORA-02288: 无效的 OPEN 模式



SQL> alter database open resetlogs;


数据库已更改。


SQL>

SQL> select open_mode, log_mode, name from v$database;


OPEN_MODE            LOG_MODE     NAME

-------------------- ------------ ---------

READ WRITE           NOARCHIVELOG YSORCL


SQL>

SQL>


这个数据库最初的问题是因为控制文件头冲突,重建了控制文件。重建之后,打开提示此错误。

问题关键在于找出控制文件与数据文件,重做日志文件的SCN。此处发现,v$datafile_header的checkpoint_change#与

重做日志文件组3的first_change#是匹配的。


如果还不行,估计只有大招:_allow_resetlogs_corruption= TRUE



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8520577/viewspace-2664565/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
曾从事java方向开发多年。近年已经转入数据库方向。主要擅长SQL优化,Oracle数据库问题诊断,Oracle备份与恢复等。服务于医药物流,医院等行业

注册时间:2010-01-26

  • 博文量
    602
  • 访问量
    1091585