1. 程式人生 > >Oracle redo 日誌損壞的幾種情況下的恢復

Oracle redo 日誌損壞的幾種情況下的恢復

 Oracle redo 日誌損壞的幾種情況下的恢復

第一:損壞的redo為非正在使用的redo log

1、歸檔模式,不是當前正在日誌損壞,資料庫開啟模式。

模擬損壞:
SQL> select * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---
         1          1        388   52428800        512          1 YES INACTIVE               5385552 27-OCT-13      5385555 27-OCT-13
         2          1        389   52428800        512          1 YES INACTIVE               5385555 27-OCT-13      5385558 27-OCT-13
         3          1        390   52428800        512          1 NO  CURRENT                5385558 27-OCT-13   2.8147E+14
         4          1        387   52428800        512          1 YES INACTIVE               5385548 27-OCT-13      5385552 27-OCT-13
SQL> !rm redo02.log
SQL> !ls -l
total 3647744
-rw-r-----. 1 

oracle oinstall   9977856 Oct 27 17:36 control01.ctl
-rw-r-----. 1 oracle oinstall 362422272 Oct 27 17:35 example01.dbf
-rw-r-----. 1 oracle oinstall  62922752 Oct 27 17:35 index_tablespace.dbf
-rw-r-----. 1 oracle oinstall  52429312 Oct 27 17:35 redo01.log
-rw-r-----. 1 oracle oinstall  52429312 Oct 27 17:35 redo03.log
-rw-r-----. 1 oracle oinstall  52429312 Oct 27 17:35 redo04.log
-rw-r-----. 1 oracle oinstall  52429312 Oct 25 16:45 redo4_1.log
-rw-r-----. 1 oracle oinstall 524296192 Oct 27 17:35 Rhys_Amy.dbf
-rw-r-----. 1 oracle oinstall 524296192 Oct 27 17:35 statspack.dbf
-rw-r-----. 1 oracle oinstall 671096832 Oct 27 17:35 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 796925952 Oct 27 17:35 system01.dbf
-rw-r-----. 1 oracle oinstall  44048384 Oct 27 16:18 temp01.dbf
-rw-r-----. 1 oracle oinstall 524296192 Oct 27 17:35 undotbs02.dbf
-rw-r-----. 1 oracle oinstall   5251072 Oct 27 17:35 users01.dbf
SQL> 
日誌提示錯誤:

ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Errors in file /opt/app/oracle/diag/rdbms/rhys/RHYS/trace/RHYS_arc2_1758.trc:
ORA-00313: open failed for members of log group 2 of thread 1
ORA-00312: online log 2 thread 1: '/opt/app/oracle/oradata/RHYS/redo02.log'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Master background archival failure: 313
日常出現錯誤,提示不能獲得該檔案狀態,資料無法進行日誌切換

解決辦法
1、注意不需要重啟資料庫,只需要把日誌清除即可。
SQL> alter database clear unarchived logfile group 2;
Database altered.
SQL> alter system switch logfile;
System altered.
SQL> 
SQL> !ls -l
total 3698948
-rw-r-----. 1 oracle oinstall   9977856 Oct 27 17:41 control01.ctl
-rw-r-----. 1 oracle oinstall 362422272 Oct 27 17:39 example01.dbf
-rw-r-----. 1 oracle oinstall  62922752 Oct 27 17:39 index_tablespace.dbf
-rw-r-----. 1 oracle oinstall  52429312 Oct 27 17:40 redo01.log
-rw-r-----. 1 oracle oinstall  52429312 Oct 27 17:41 redo02.log
-rw-r-----. 1 oracle oinstall  52429312 Oct 27 17:38 redo03.log
-rw-r-----. 1 oracle oinstall  52429312 Oct 27 17:38 redo04.log
-rw-r-----. 1 oracle oinstall  52429312 Oct 25 16:45 redo4_1.log
-rw-r-----. 1 oracle oinstall 524296192 Oct 27 17:39 Rhys_Amy.dbf
-rw-r-----. 1 oracle oinstall 524296192 Oct 27 17:39 statspack.dbf
-rw-r-----. 1 oracle oinstall 671096832 Oct 27 17:39 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 796925952 Oct 27 17:39 system01.dbf
-rw-r-----. 1 oracle oinstall  44048384 Oct 27 16:18 temp01.dbf
-rw-r-----. 1 oracle oinstall 524296192 Oct 27 17:39 undotbs02.dbf
-rw-r-----. 1 oracle oinstall   5251072 Oct 27 17:39 users01.dbf

2歸檔模式,不是當前正在日誌損壞,資料庫關閉模式。

演示過程:
SQL> set linesize 200
SQL> select * from v$log;
select * from v$log
*
ERROR at line 1:
ORA-01034: ORACLE not available
Process ID: 0
Session ID: 0 Serial number: 0

SQL> startup mount;
ORACLE instance started.
Total System Global Area  492707840 bytes
Fixed Size                  2254544 bytes
Variable Size             322963760 bytes
Database Buffers          163577856 bytes
Redo Buffers                3911680 bytes
Database mounted.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 3489
Session ID: 1 Serial number: 5
日誌提示:
Errors in file /opt/app/oracle/diag/rdbms/rhys/RHYS/trace/RHYS_ora_3489.trc:
ORA-00313: open failed for members of log group 1 of thread
ORA-00312: online log 2 thread 1: '/opt/app/oracle/oradata/RHYS/redo02.log'
Sun Oct 27 17:45:25 2013
ARC1 started with pid=21, OS id=3493
USER (ospid: 3489): terminating the instance due to error 313
Sun Oct 27 17:45:25 2013
System state dump requested by (instance=1, osid=3489), summary=[abnormal instance termination].
System State dumped to trace file /opt/app/oracle/diag/rdbms/rhys/RHYS/trace/RHYS_diag_3458_20131027174525.trc
Dumping diagnostic data in directory=[cdmp_20131027174525], requested by (instance=1, osid=3489), summary=[abnormal instance termination].
Instance terminated by USER, pid = 3489
解決辦法
在資料庫啟動的時候清除日誌,然後open資料庫:
SQL> startup mount;
ORACLE instance started.
Total System Global Area  492707840 bytes
Fixed Size                  2254544 bytes
Variable Size             322963760 bytes
Database Buffers          163577856 bytes
Redo Buffers                3911680 bytes
Database mounted.
SQL> alter database clear logfile group 2;
alter database clear logfile group 2
*
ERROR at line 1:
ORA-00350: log 2 of instance RHYS (thread 1) needs to be archived
ORA-00312: online log 2 thread 1: '/opt/app/oracle/oradata/RHYS/redo02.log'

SQL> alter database clear unarchived logfile group 2;
Database altered.
SQL> alter database open;
Database altered.
SQL> 

3、資料庫開啟模式,非歸檔模式,非當前日誌損壞

模擬過程:
SQL> archive log list;
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     402
Current log sequence           405
SQL> !rm redo02.log
SQL> !ls -l
total 3647744
-rw-r-----. 1 oracle oinstall   9977856 Oct 27 17:54 control01.ctl
-rw-r-----. 1 oracle oinstall 362422272 Oct 27 17:54 example01.dbf
-rw-r-----. 1 oracle oinstall  62922752 Oct 27 17:54 index_tablespace.dbf
-rw-r-----. 1 oracle oinstall  52429312 Oct 27 17:54 redo01.log
-rw-r-----. 1 oracle oinstall  52429312 Oct 27 17:54 redo03.log
-rw-r-----. 1 oracle oinstall  52429312 Oct 27 17:54 redo04.log
-rw-r-----. 1 oracle oinstall  52429312 Oct 25 16:45 redo4_1.log
-rw-r-----. 1 oracle oinstall 524296192 Oct 27 17:54 Rhys_Amy.dbf
-rw-r-----. 1 oracle oinstall 524296192 Oct 27 17:54 statspack.dbf
-rw-r-----. 1 oracle oinstall 671096832 Oct 27 17:54 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 796925952 Oct 27 17:54 system01.dbf
-rw-r-----. 1 oracle oinstall  44048384 Oct 27 16:18 temp01.dbf
-rw-r-----. 1 oracle oinstall 524296192 Oct 27 17:54 undotbs02.dbf
-rw-r-----. 1 oracle oinstall   5251072 Oct 27 17:54 users01.dbf
SQL> r
  1* alter system switch logfile
System altered.
SQL> r
  1* alter system switch logfile
System altered.
SQL> r
  1* alter system switch logfile
System altered.
SQL> r
  1* alter system switch logfile
System altered.
SQL> r
  1* alter system switch logfile
System altered.
SQL> r
  1* alter system switch logfile
System altered.
SQL> r
  1* alter system switch logfile
System altered.
SQL> r
  1* alter system switch logfile

SQL> 
在執行dml語句,以及切換日誌都成功,但是資料庫啟動後報錯。
日誌檔案如下:
Errors in file /opt/app/oracle/diag/rdbms/rhys/RHYS/trace/RHYS_ora_3779.trc:
ORA-00313: open failed for members of log group 1 of thread 
ORA-00312: online log 2 thread 1: '/opt/app/oracle/oradata/RHYS/redo02.log'
USER (ospid: 3779): terminating the instance due to error 313
System state dump requested by (instance=1, osid=3779), summary=[abnormal instance termination].
System State dumped to trace file /opt/app/oracle/diag/rdbms/rhys/RHYS/trace/RHYS_diag_3749_20131027175926.trc
Dumping diagnostic data in directory=[cdmp_20131027175926], requested by (instance=1, osid=3779), summary=[abnormal instance termination].
Instance terminated by USER, pid = 3779
解決方案
只需要把損壞的日誌檔案清除日誌組即可。
SQL> startup mount;
ORACLE instance started.
Total System Global Area  492707840 bytes
Fixed Size                  2254544 bytes
Variable Size             322963760 bytes
Database Buffers          163577856 bytes
Redo Buffers                3911680 bytes
Database mounted.
SQL> alter database clear logfile group 2;
Database altered.
SQL> alter database open;
Database altered.
SQL> 

4、非歸檔模式、資料庫關閉、不是正在使用的日誌檔案損壞。

模擬過程:
SQL> select * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
         1          1        450   52428800        512          1 NO  CURRENT                5388976 27-OCT-13   2.8147E+14
         2          1        449   52428800        512          1 NO  INACTIVE               5388970 27-OCT-13      5388976 27-OCT-13
         3          1        447   52428800        512          1 NO  INACTIVE               5388964 27-OCT-13      5388967 27-OCT-13
         4          1        448   52428800        512          1 NO  INACTIVE               5388967 27-OCT-13      5388970 27-OCT-13
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> !rm redo02.log
SQL> !ls -l
total 3647744
-rw-r-----. 1 oracle oinstall   9977856 Oct 27 18:06 control01.ctl
-rw-r-----. 1 oracle oinstall 362422272 Oct 27 18:06 example01.dbf
-rw-r-----. 1 oracle oinstall  62922752 Oct 27 18:06 index_tablespace.dbf
-rw-r-----. 1 oracle oinstall  52429312 Oct 27 18:06 redo01.log
-rw-r-----. 1 oracle oinstall  52429312 Oct 27 18:05 redo03.log
-rw-r-----. 1 oracle oinstall  52429312 Oct 27 18:05 redo04.log
-rw-r-----. 1 oracle oinstall  52429312 Oct 25 16:45 redo4_1.log
-rw-r-----. 1 oracle oinstall 524296192 Oct 27 18:06 Rhys_Amy.dbf
-rw-r-----. 1 oracle oinstall 524296192 Oct 27 18:06 statspack.dbf
-rw-r-----. 1 oracle oinstall 671096832 Oct 27 18:06 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 796925952 Oct 27 18:06 system01.dbf
-rw-r-----. 1 oracle oinstall  44048384 Oct 27 16:18 temp01.dbf
-rw-r-----. 1 oracle oinstall 524296192 Oct 27 18:06 undotbs02.dbf
-rw-r-----. 1 oracle oinstall   5251072 Oct 27 18:06 users01.dbf
SQL> startup 
ORACLE instance started.
Total System Global Area  492707840 bytes
Fixed Size                  2254544 bytes
Variable Size             322963760 bytes
Database Buffers          163577856 bytes
Redo Buffers                3911680 bytes
Database mounted.
ORA-03113: end-of-file on communication channel
Process ID: 4087
Session ID: 1 Serial number: 5
日誌告警
Additional information: 3
Errors in file /opt/app/oracle/diag/rdbms/rhys/RHYS/trace/RHYS_ora_4087.trc:
ORA-00313: open failed for members of log group 1 of thread 
ORA-00312: online log 2 thread 1: '/opt/app/oracle/oradata/RHYS/redo02.log'
USER (ospid: 4087): terminating the instance due to error 313
System state dump requested by (instance=1, osid=4087), summary=[abnormal instance termination].
System State dumped to trace file /opt/app/oracle/diag/rdbms/rhys/RHYS/trace/RHYS_diag_4057_20131027180649.trc
Dumping diagnostic data in directory=[cdmp_20131027180649], requested by (instance=1, osid=4087), summary=[abnormal instance termination].
Instance terminated by USER, pid = 4087
恢復方法
SQL> startup mount; 
ORACLE instance started.
Total System Global Area  492707840 bytes
Fixed Size                  2254544 bytes
Variable Size             322963760 bytes
Database Buffers          163577856 bytes
Redo Buffers                3911680 bytes
Database mounted.
SQL> alter database clear logfile group 2;
Database altered.
SQL> alter database open;
Database altered.
SQL> 
該方法與第三中方法一樣。
總結,對於不是當前使用的歸檔日誌損壞,歸檔模式需要使用alter database clear unarchived 命令清空日誌 組即可。對於非歸檔模式需要使用alter system clear 日誌檔案組即可。

第二、當前正在使用的日誌檔案損壞

1、歸檔模式,資料庫open狀態、當前正在使用的日誌檔案損壞

模擬過程:
QL> !ls -l
total 3698948
-rw-r-----. 1 oracle oinstall   9977856 Oct 27 18:27 control01.ctl
-rw-r-----. 1 oracle oinstall 362422272 Oct 27 18:10 example01.dbf
-rw-r-----. 1 oracle oinstall  62922752 Oct 27 18:10 index_tablespace.dbf
-rw-r-----. 1 oracle oinstall  52429312 Oct 27 18:26 redo01.log
-rw-r-----. 1 oracle oinstall  52429312 Oct 27 18:10 redo02.log
-rw-r-----. 1 oracle oinstall  52429312 Oct 27 18:10 redo03.log
-rw-r-----. 1 oracle oinstall  52429312 Oct 27 18:10 redo04.log
-rw-r-----. 1 oracle oinstall  52429312 Oct 25 16:45 redo4_1.log
-rw-r-----. 1 oracle oinstall 524296192 Oct 27 18:10 Rhys_Amy.dbf
-rw-r-----. 1 oracle oinstall 524296192 Oct 27 18:10 statspack.dbf
-rw-r-----. 1 oracle oinstall 671096832 Oct 27 18:26 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 796925952 Oct 27 18:26 system01.dbf
-rw-r-----. 1 oracle oinstall  44048384 Oct 27 16:18 temp01.dbf
-rw-r-----. 1 oracle oinstall 524296192 Oct 27 18:26 undotbs02.dbf
-rw-r-----. 1 oracle oinstall   5251072 Oct 27 18:10 users01.dbf
SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     447
Next log sequence to archive   450
Current log sequence           450
SQL> set linesize 200
SQL> select * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
         1          1        450   52428800        512          1 NO  CURRENT                5388976 27-OCT-13   2.8147E+14
         2          1          0   52428800        512          1 YES UNUSED                 5388970 27-OCT-13      5388976 27-OCT-13
         3          1        447   52428800        512          1 YES INACTIVE               5388964 27-OCT-13      5388967 27-OCT-13
         4          1        448   52428800        512          1 YES INACTIVE               5388967 27-OCT-13      5388970 27-OCT-13
SQL> !rm redo01.log
SQL> !ls -l
total 3647744
-rw-r-----. 1 oracle oinstall   9977856 Oct 27 18:28 control01.ctl
-rw-r-----. 1 oracle oinstall 362422272 Oct 27 18:10 example01.dbf
-rw-r-----. 1 oracle oinstall  62922752 Oct 27 18:10 index_tablespace.dbf
-rw-r-----. 1 oracle oinstall  52429312 Oct 27 18:10 redo02.log
-rw-r-----. 1 oracle oinstall  52429312 Oct 27 18:10 redo03.log
-rw-r-----. 1 oracle oinstall  52429312 Oct 27 18:10 redo04.log
-rw-r-----. 1 oracle oinstall  52429312 Oct 25 16:45 redo4_1.log
-rw-r-----. 1 oracle oinstall 524296192 Oct 27 18:10 Rhys_Amy.dbf
-rw-r-----. 1 oracle oinstall 524296192 Oct 27 18:10 statspack.dbf
-rw-r-----. 1 oracle oinstall 671096832 Oct 27 18:28 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 796925952 Oct 27 18:28 system01.dbf
-rw-r-----. 1 oracle oinstall  44048384 Oct 27 16:18 temp01.dbf
-rw-r-----. 1 oracle oinstall 524296192 Oct 27 18:28 undotbs02.dbf
-rw-r-----. 1 oracle oinstall   5251072 Oct 27 18:10 users01.dbf
SQL> 
日誌資訊提示:
Additional information: 3
Errors in file /opt/app/oracle/diag/rdbms/rhys/RHYS/trace/RHYS_arc2_4228.trc:
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: '/opt/app/oracle/oradata/RHYS/redo01.log'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Master background archival failure: 313
解決方法
由於這個時候,雖然當前日誌是正在被使用的,但是我們可以先進行切換日誌之後,然後執行clear操作。
SQL> alter system checkpoint;
System altered.
SQL> !rm redo01.log;
SQL> alter system checkpoint;
System altered.
SQL> alter database clear unarchived logfile group 1;
alter database clear unarchived logfile group 1
*
ERROR at line 1:
ORA-01624: log 1 needed for crash recovery of instance RHYS (thread 1)
ORA-00312: online log 1 thread 1: '/opt/app/oracle/oradata/RHYS/redo01.log'
SQL> alter database switch logfile;
alter database switch logfile
                      *
ERROR at line 1:
ORA-02000: missing ALL keyword
SQL> alter system switch logfile;
System altered.
SQL> select * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
         1          1        458   52428800        512          1 NO  INACTIVE               5397246 27-OCT-13      5397347 27-OCT-13
         2          1        459   52428800        512          1 NO  CURRENT                5397347 27-OCT-13   2.8147E+14
         3          1        456   52428800        512          1 YES INACTIVE               5397237 27-OCT-13      5397240 27-OCT-13
         4          1        457   52428800        512          1 YES INACTIVE               5397240 27-OCT-13      5397246 27-OCT-13
SQL> alter database clear unarchived logfile group 1;
Database altered.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> 
SQL> startup
ORACLE instance started.
Total System Global Area  492707840 bytes
Fixed Size                  2254544 bytes
Variable Size             322963760 bytes
Database Buffers          163577856 bytes
Redo Buffers                3911680 bytes
Database mounted.
Database opened.
SQL> 

2、歸檔模式,資料庫open狀態、當前正在使用的日誌檔案損壞,並且正常關閉資料庫。

模擬過程:
SQL> startup
ORACLE instance started.
Total System Global Area  492707840 bytes
Fixed Size                  2254544 bytes
Variable Size             322963760 bytes
Database Buffers          163577856 bytes
Redo Buffers                3911680 bytes
Database mounted.
Database opened.
SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     0
Next log sequence to archive   459
Current log sequence           459
SQL> select * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
         1          1          0   52428800        512          1 YES UNUSED                 5397246 27-OCT-13      5397347 27-OCT-13
         2          1        459   52428800        512          1 NO  CURRENT                5397347 27-OCT-13   2.8147E+14
         3          1        456   52428800        512          1 YES INACTIVE               5397237 27-OCT-13      5397240 27-OCT-13
         4          1        457   52428800        512          1 YES INACTIVE               5397240 27-OCT-13      5397246 27-OCT-13
SQL> !rm redo02.log;
SQL> !ls -ltr
total 3647744
-rw-r-----. 1 oracle oinstall  52429312 Oct 25 16:45 redo4_1.log
-rw-r-----. 1 oracle oinstall  44048384 Oct 27 19:21 temp01.dbf
-rw-r-----. 1 oracle oinstall  52429312 Oct 27 19:26 redo01.log
-rw-r-----. 1 oracle oinstall  52429312 Oct 27 19:26 redo03.log
-rw-r-----. 1 oracle oinstall  52429312 Oct 27 19:26 redo04.log
-rw-r-----. 1 oracle oinstall 796925952 Oct 27 19:26 system01.dbf
-rw-r-----. 1 oracle oinstall 671096832 Oct 27 19:26 sysaux01.dbf
-rw-r-----. 1 oracle oinstall   5251072 Oct 27 19:26 users01.dbf
-rw-r-----. 1 oracle oinstall 362422272 Oct 27 19:26 example01.dbf
-rw-r-----. 1 oracle oinstall 524296192 Oct 27 19:26 statspack.dbf
-rw-r-----. 1 oracle oinstall 524296192 Oct 27 19:26 Rhys_Amy.dbf
-rw-r-----. 1 oracle oinstall  62922752 Oct 27 19:26 index_tablespace.dbf
-rw-r-----. 1 oracle oinstall 524296192 Oct 27 19:26 undotbs02.dbf
-rw-r-----. 1 oracle oinstall   9977856 Oct 27 19:27 control01.ctl
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area  492707840 bytes
Fixed Size                  2254544 bytes
Variable Size             322963760 bytes
Database Buffers          163577856 bytes
Redo Buffers                3911680 bytes
Database mounted.
ORA-03113: end-of-file on communication channel
Process ID: 5110
Session ID: 1 Serial number: 5

SQL> select open_mode from v$database;
ERROR:
ORA-03114: not connected to ORACLE

SQL> exit
解決辦法,只需要進行啟動到mount狀態下,然後clear損壞日誌即可。
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[[email protected] RHYS]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Sun Oct 27 19:28:33 2013
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Connected to an idle instance.
SQL> startup mount;
ORACLE instance started.
Total System Global Area  492707840 bytes
Fixed Size                  2254544 bytes
Variable Size             322963760 bytes
Database Buffers          163577856 bytes
Redo Buffers                3911680 bytes
Database mounted.
SQL> alter database clear unarchived logfile group 2;
Database altered.
SQL> alter database open;
Database altered.
SQL> 

3、歸檔模式,資料庫open狀態、當前正在使用的日誌檔案損壞,並且異常關閉資料庫。

模擬過程:
SQL> set linesize 200;
SQL> select * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
         1          1        460   52428800        512          1 NO  CURRENT                5397348 27-OCT-13   2.8147E+14
         2          1          0   52428800        512          1 YES UNUSED                 5397347 27-OCT-13      5397348 27-OCT-13
         3          1        456   52428800        512          1 YES INACTIVE               5397237 27-OCT-13      5397240 27-OCT-13
         4          1        457   52428800        512          1 YES INACTIVE               5397240 27-OCT-13      5397246 27-OCT-13
SQL> !rm redo01.log
SQL> !ls -l
total 3647744
-rw-r-----. 1 oracle oinstall   9977856 Oct 27 19:32 control01.ctl
-rw-r-----. 1 oracle oinstall 362422272 Oct 27 19:29 example01.dbf
-rw-r-----. 1 oracle oinstall  62922752 Oct 27 19:29 index_tablespace.dbf
-rw-r-----. 1 oracle oinstall  52429312 Oct 27 19:29 redo02.log
-rw-r-----. 1 oracle oinstall  52429312 Oct 27 19:29 redo03.log
-rw-r-----. 1 oracle oinstall  52429312 Oct 27 19:29 redo04.log
-rw-r-----. 1 oracle oinstall  52429312 Oct 25 16:45 redo4_1.log
-rw-r-----. 1 oracle oinstall 524296192 Oct 27 19:29 Rhys_Amy.dbf
-rw-r-----. 1 oracle oinstall 524296192 Oct 27 19:29 statspack.dbf
-rw-r-----. 1 oracle oinstall 671096832 Oct 27 19:29 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 796925952 Oct 27 19:29 system01.dbf
-rw-r-----. 1 oracle oinstall  44048384 Oct 27 19:21 temp01.dbf
-rw-r-----. 1 oracle oinstall 524296192 Oct 27 19:29 undotbs02.dbf
-rw-r-----. 1 oracle oinstall   5251072 Oct 27 19:29 users01.dbf
SQL> shutdown abort;
ORACLE instance shut down.
SQL> 
解決辦法
這時候我們有兩種辦法,一種是使用備份進行恢復,另一種是使用隱含引數。介紹第二種:
SQL> set verify off
SQL> @getsp.sql
Enter value for par: allow_resetlogs_
KSPPINM                                            KSPPSTVL             KSPPDESC
-------------------------------------------------- -------------------- ------------------------------------------------------------
_allow_resetlogs_corruption                        FALSE                allow resetlogs even if it will cause corruption
SQL> 
該引數是在資料庫 不一致的情況下,重置日誌檔案。
SQL> alter system set "_allow_resetlogs_corruption"=true scope=spfile;
System altered.
SQL> shutdown immediate
ORA-01109: database not open

Database dismounted.
ORACLE instance shut down.
SQL> startup;     
ORACLE instance started.
Total System Global Area  492707840 bytes
Fixed Size                  2254544 bytes
Variable Size             322963760 bytes
Database Buffers          163577856 bytes
Redo Buffers                3911680 bytes
Database mounted.
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: '/opt/app/oracle/oradata/RHYS/redo01.log'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
SQL> set linesize 200
SQL> select * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
         1          1        460   52428800        512          1 NO  CURRENT                5397348 27-OCT-13   2.8147E+14
         4          1        457   52428800        512          1 YES INACTIVE               5397240 27-OCT-13      5397246 27-OCT-13
         3          1        456   52428800        512          1 YES INACTIVE               5397237 27-OCT-13      5397240 27-OCT-13
         2          1          0   52428800        512          1 YES UNUSED                 5397347 27-OCT-13      5397348 27-OCT-13
SQL> alter database open resetlogs;
Database altered.
SQL> 
重建例項然後使用expdpimpdp,將資料匯出在匯入資料庫
SQL> create directory expdp as '/opt/app/oracle/oradata';
Directory created.
然後匯出資料重建資料庫,在匯入資料。
總結:對於當前正在使用的日誌的損壞,一般通過備份來修復,如果不行只能採用第二種設定隱含引數_allow_resetlogs_corruption來恢復。