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

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

cmd 登录:  sqlplus / as sysdba

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\ORCL\SYSTEM01.DBF
E:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF
E:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF
E:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF
E:\APP\ADMINISTRATOR\ORADATA\ORCL\EXAMPLE01.DBF
E:\APP\ADMINISTRATOR\ORADATA\ORCLZNCZ_QP.DBF

已选择6行。

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

 FILE# TO_CHAR(CHECK
---------- -------------
         1      30872257
         2      30872257
         3      30872257
         4      30872257
         5      30872257
         6      30872257

已选择6行。

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

 

 FILE# TO_CHAR(CHECK

---------- -------------
         1      30872257
         2      30872257
         3      30872257
         4      30872257
         5      30872257
         6      30872257

已选择6行。

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> alter database open reset logs;

alter database open reset logs

                    *

第 1 行出现错误:

ORA-02288: 无效的 OPEN 模式

SQL> alter database open resetlogs;

数据库已更改。

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

OPEN_MODE            LOG_MODE     NAME

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

READ WRITE           NOARCHIVELOG YSORCL

SQL>

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

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

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

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

在这里尝试了多次没解决,关键:

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语句 select member from v$logfile; 的结果中, 选择文件最大的一个执行

 

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值