今天启动本地Oracle数据库发现如下报错:
ORA-00354: 损坏重做日志块标头
ORA-00353: 日志损坏接近块 35696 更改 12913198 时间 04/12/2020 08:27:58
ORA-00312: 联机日志 1 线程 1: 'D:\APP\HENRY\ORADATA\ORACLE11G\REDO01.LOG'
,网上也搜了很多解决办法,但是都不好使。有没有实用的解决方案? 不想重建数据库
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_
3 ONLINE D:\APP\HENRY\ORADATA\ORACLE11G\REDO03.LOG NO
2 ONLINE D:\APP\HENRY\ORADATA\ORACLE11G\REDO02.LOG NO
1 ONLINE D:\APP\HENRY\ORADATA\ORACLE11G\REDO01.LOG NO
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME NEXT_CHANGE# NEXT_TIME
1 1 658 52428800 512 1 NO ACTIVE 12905266 12-4月 -20 12915126 12-4月 -20
3 1 657 52428800 512 1 NO INACTIVE 12879320 11-4月 -20 12905266 12-4月 -20
2 1 659 52428800 512 1 NO CURRENT 12915126 12-4月 -20 2.8147E+14
典型的在线日志文件损坏
(1)在oracle中,只要数据文件,在线日志和归档日志,这两者有一个是完好的,都能恢复出来;
(2)首先,必须你的数据文件是完好的,也只能恢复到你数据文件的scn,日志全部不能要了;
(3)其次,重建控制文件,希望你的控制文件有trace备份;
(4)再次,create controlfile,重建控制文件,reset logfiles;
(5)将数据库resetlogs方式打开,注意,这必然是有数据损失的。
我也不知道怎么处理瞎捣鼓好了:
不完全恢复
先加入隐含参数
SQL> alter system set "_allow_resetlogs_corruption"=true scope=spfile ;
系统已更改。
SQL> alter system set "_allow_terminal_recovery_corruption"=true scope=spfile ;
系统已更改。
SQL> shutdown abort ;
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 6764429312 bytes
Fixed Size 2188568 bytes
Variable Size 3875539688 bytes
Database Buffers 2868903936 bytes
Redo Buffers 17797120 bytes
数据库装载完毕。
SQL> recover database until cancel;
ORA-00279: 更改 12905266 (在 04/12/2020 06:00:06 生成) 对于线程 1 是必需的
ORA-00289: 建议: D:\APP\HENRY\FLASH_RECOVERY_AREA\ORACLE11G\ARCHIVELOG\2020_04_13\O1_MF_1_658_%U_.ARC
ORA-00280: 更改 12905266 (用于线程 1) 在序列 #658 中
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
ORA-10879: error signaled in parallel recovery slave
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: 'D:\APP\HENRY\ORADATA\ORACLE11G\SYSTEM01.DBF'
SQL> recover database until cancel;
ORA-00279: 更改 12905266 (在 04/12/2020 06:00:06 生成) 对于线程 1 是必需的
ORA-00289: 建议: D:\APP\HENRY\FLASH_RECOVERY_AREA\ORACLE11G\ARCHIVELOG\2020_04_13\O1_MF_1_658_%U_.ARC
ORA-00280: 更改 12905266 (用于线程 1) 在序列 #658 中
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00308: cannot open archived log 'D:\APP\HENRY\FLASH_RECOVERY_AREA\ORACLE11G\ARCHIVELOG\2020_04_13\O1_MF_1_658_%U_.ARC'
ORA-27041: unable to open file
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
ORA-00308: cannot open archived log 'D:\APP\HENRY\FLASH_RECOVERY_AREA\ORACLE11G\ARCHIVELOG\2020_04_13\O1_MF_1_658_%U_.ARC'
ORA-27041: unable to open file
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
ORA-10879: error signaled in parallel recovery slave
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: 'D:\APP\HENRY\ORADATA\ORACLE11G\SYSTEM01.DBF'
SQL> recover database until cancel;
ORA-00275: 已经开始介质恢复
SQL> recover database until cancel;
ORA-00275: 已经开始介质恢复
SQL> alter database open resetlogs ;
alter database open resetlogs
*
第 1 行出现错误:
ORA-00603: ORACLE server session terminated by fatal error
ORA-00600: internal error code, arguments: [2662], [0], [12907363], [0], [12912894], [12583040], [], [], [], [], [], []
ORA-00600: internal error code, arguments: [2662], [0], [12907362], [0], [12912894], [12583040], [], [], [], [], [], []
ORA-01092: ORACLE instance terminated. Disconnection forced
ORA-00600: internal error code, arguments: [2662], [0], [12907360], [0], [12912894], [12583040], [], [], [], [], [], []
进程 ID: 9724
会话 ID: 127 序列号: 3
重启Oracle服务重新开启终端连接数据库 启动数据库
收起