又一次REDO损坏恢复

现象描述

上午:9:52在切换归档时掉电:
  Thread 1 advanced to log sequence 14574 (LGWR switch)

  Current log# 3 seq#   14574 mem# 0: /home/oracle/app/oracle/oradata/orcl/redo03.log

Sun Sep 22 09:52:20 2019

Archived Log entry 14327 added for thread 1 sequence 14573 ID   0x5b557622 dest 1:

在下午启动时报错:

ALTER DATABASE OPEN

Errors in file /home/oracle/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_55829.trc:

ORA-01113: file 1 needs media recovery

ORA-01110: data file 1:   '/home/oracle/app/oracle/oradata/orcl/system01.dbf'

ORA-1113 signalled during: ALTER DATABASE OPEN...

Sun Sep 22 16:53:32 2019

Errors in file /home/oracle/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_m000_55832.trc:

ORA-00314: log 1 of thread 1, expected sequence#   14575 doesn't match 14572

ORA-00312: online log 1 thread 1:   '/home/oracle/app/oracle/oradata/orcl/redo01.log'

Errors in file /home/oracle/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_m000_55832.trc:

ORA-00314: log 2 of thread 1, expected sequence#   14576 doesn't match 14573

ORA-00312: online log 2 thread 1:   '/home/oracle/app/oracle/oradata/orcl/redo02.log'

Errors in file /home/oracle/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_m000_55832.trc:

ORA-00322: log 3 of thread 1 is not current copy

ORA-00312: online log 3 thread 1:   '/home/oracle/app/oracle/oradata/orcl/redo03.log'

分析过程及处理

检查alert_sid.log日志,发现已经进行过异常恢复

关数据库,备份所有数据文件,REDOCONTROL到另一个目录

检查文件坏块

dbv   file=/home/oracle/app/oracle/oradata/orcl/sysaux01.dbf blocksize=8192

dbv   file=/home/oracle/app/oracle/oradata/orcl/system01.dbf blocksize=8192

dbv   file=/home/oracle/app/oracle/oradata/orcl/undotbs01.dbf blocksize=8192

…………………………….

dbv file=/home/oracle/app/oracle/oradata/orcl/TIP_AREA_CONTROL_temp.DBF   blocksize=8192

检查文件头和文件SCN

select file#,checkpoint_change# from v$datafile_header;

FILE# CHECKPOINT_CHANGE#

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

1 365579306

2 365579306

3 365579306

4 365579306

5 365579306

6 365579306

7 365579306

8 365579306

9 365579306

10 365579306

11 365579306

12 365579306

 

select file#,checkpoint_change# from v$datafile;

 

FILE# CHECKPOINT_CHANGE#

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

1 365579302

2 365579302

3 365579302

4 365579302

5 365579302

6 365579302

7 365579302

8 365579302

9 365579302

10 365579302

11 365579302

12 365579302

尝试非常规手段恢复

alter system set   control_files='/home/oracle/app/oracle/oradata/orcl/control01.ctl'   scope=spfile;

alter system set undo_management =manual scope=spfile;

alter system set undo_tablespace =system   scope=spfile;

alter system   set "_allow_resetlogs_corruption"=TRUE scope=spfile;

RECOVER   DATABASE until cancel;

alter database open resetlogs 报错:

Mon Sep 23 00:31:08 2019

Media Recovery failed with error 16433

Recovery Slave PR00 previously exited with exception   283

ORA-283 signalled during: ALTER DATABASE RECOVER   DATABASE until cancel ...

Incident 2693065 created, dump file:   /home/oracle/app/oracle/diag/rdbms/orcl/orcl/incident/incdir_2693065/orcl_ora_37627_i2693065.trc

ORA-00600: internal error code, arguments: [2662], [0],   [365579314], [0], [365598509], [12583040], [], [], [], [], [], []

六 建控制文件

CREATE CONTROLFILE SET DATABASE "orcl"   RESETLOGS FORCE LOGGING NOARCHIVELOG

MAXLOGFILES 5

MAXLOGMEMBERS 3

MAXDATAFILES 100

MAXINSTANCES 1

MAXLOGHISTORY 226

LOGFILE

GROUP 1   '/home/oracle/app/oracle/oradata/orcl/redo01.log' SIZE 50M,

GROUP 2   '/home/oracle/app/oracle/oradata/orcl/redo02.log' SIZE 50M,

GROUP 3   '/home/oracle/app/oracle/oradata/orcl/redo03.log' size 50M

DATAFILE

'/home/oracle/app/oracle/oradata/orcl/system01.dbf',

'/home/oracle/app/oracle/oradata/orcl/users01.dbf',

'/home/oracle/app/oracle/oradata/orcl/undotbs01.dbf',

'/home/oracle/app/oracle/oradata/orcl/TIP_TIP_PROJECT.DBF',

'/home/oracle/app/oracle/oradata/orcl/TIP_AREA_CONTROL.DBF',

'/home/oracle/app/oracle/oradata/orcl/sysaux01.dbf',

'/home/oracle/app/oracle/oradata/orcl/OA_HY.DBF',

'/home/oracle/app/oracle/oradata/orcl/yzb_data.dbf',

'/home/oracle/app/oracle/oradata/orcl/ogg01.dbf',

'/home/oracle/app/oracle/oradata/orcl/GUARDGATEWAY.DBF',

'/home/oracle/app/oracle/oradata/tipoa3_data.DBF',

'/home/oracle/app/oracle/oradata/oa3.DBF'

CHARACTER SET ZHS16GBK

;

调整 SCN


SQL> oradebug poke   0x06001AE70 4 365998509

BEFORE: [06001AE70, ) = 00000000

AFTER: [06001AE70, 06001AE74) = 15D0B1AD

oradebug poke 0x06001AE74 4 365998509

SQL> oradebug dumpvar sga kcsgscn_

kcslf kcsgscn_ [06001AE70, 06001AEA0) = 15D0B1AD 15D0B1AD 00000000   00000000 00000000 00000000 00000000 00000000 00000000 00000000 6001AX50   00000000

oradebug poke 0x06001AE70 8 366998509

alter database open resetlogs;

 

至此打开成功


猜你喜欢

转载自blog.51cto.com/snowhill/2440797