oracle未归档current redo损坏的恢复


如下例子:
----Session 1
SQL> conn zw/zw
Connected.

SQL> select count(1) from t;

  COUNT(1)
----------
     14041

SQL> delete from t where rownum < 1001;
1000 rows deleted.

SQL> commit;
Commit complete.

 

---Session 2

SQL> select * from v$log;

GROUP#   THREAD#  SEQUENCE#  BYTES  BLOCKSIZE MEMBERS ARC STATUS  FIRST_CHANGE# FIRST_TIM NEXT_CHANGE#      NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- --------
  1    1      13   52428800   512    1      NO  INACTIVE    1692121      29-DEC-15   1692124   29-DEC-15
  2    1      14   20971520   512    1      NO  INACTIVE    1692124      29-DEC-15   1692127   29-DEC-15
  3    1      15   52428800   512    1      NO  CURRENT    1692127      29-DEC-15   2.8147E+14
 
  
SQL> select * from v$logfile;

    GROUP# STATUS  TYPE    MEMBER                  IS_
---------- ------- ------- -------------------------------------------
  1    ONLINE  /u01/app/oracle/oradata/orcl/redo01.log       NO
  2    ONLINE  /u01/app/oracle/oradata/orcl/redo02.log       NO
  3    ONLINE  /u01/app/oracle/oradata/orcl/redo03.log       NO
 

---Session 3

[root@zw_test_26_75 ~]#  dd if=/dev/null of=/u01/app/oracle/oradata/orcl/redo03.log bs=512 count=10
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0.000112526 s, 0.0 kB/s

SQL> shutdown immediate
ORA-03113: end-of-file on communication channel
Process ID: 20455
Session ID: 145 Serial number: 3

SQL> recover database;
ORA-00283: recovery session canceled due to errors
ORA-00313: open failed for members of log group 3 of thread 1
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/orcl/redo03.log'
ORA-27048: skgfifi: file header information is invalid
Additional information: 12

SQL> recover database until cancel;
ORA-00279: change 1692127 generated at 12/29/2015 16:56:53 needed for thread 1
ORA-00289: suggestion :
/u01/app/oracle/product/11.2.0.4/db_1/dbs/arch1_15_899742732.dbf
ORA-00280: change 1692127 for thread 1 is in sequence #15

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00308: cannot open archived log
'/u01/app/oracle/product/11.2.0.4/db_1/dbs/arch1_15_899742732.dbf'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

ORA-00308: cannot open archived log
'/u01/app/oracle/product/11.2.0.4/db_1/dbs/arch1_15_899742732.dbf'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

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: '/u01/app/oracle/oradata/orcl/system01.dbf'

SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/u01/app/oracle/oradata/orcl/system01.dbf'

添加隐含参数
[oracle@zw_test_26_75 tmp]$ vi pfile.ora

*._allow_resetlogs_corruption=true
*._allow_error_simulation=true
~                             

SQL> startup mount pfile='/tmp/pfile.ora';
ORACLE instance started.

Total System Global Area  952020992 bytes
Fixed Size      2258960 bytes
Variable Size    314574832 bytes
Database Buffers   629145600 bytes
Redo Buffers      6041600 bytes
Database mounted.
SQL>

SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01092: ORACLE instance terminated. Disconnection forced
ORA-00600: internal error code, arguments: [2662], [0], [1692134], [0],
[1692312], [4194432], [], [], [], [], [], []
Process ID: 20866
Session ID: 145 Serial number: 3

SQL> recover database until cancel;
ORA-00283: recovery session canceled due to errors
ORA-16433: The database must be opened in read/write mode.

SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01139: RESETLOGS option only valid after an incomplete database recovery

打开失败


++++ 使用10015 event手工推进scn
 
SQL>  startup mount pfile='/tmp/pfile.ora';
ORACLE instance started.

Total System Global Area  952020992 bytes
Fixed Size      2258960 bytes
Variable Size    314574832 bytes
Database Buffers   629145600 bytes
Redo Buffers      6041600 bytes
Database mounted.
SQL>

SQL>  alter session set events '10015 trace name adjust_scn level 1';

Session altered.

 
SQL> alter database open;
Database altered.

SQL> select * from v$log;

GROUP#   THREAD#  SEQUENCE#  BYTES    BLOCKSIZE   MEMBERS ARC STATUS    FIRST_CHANGE# FIRST_TIM NEXT_CHANGE#  NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- --------------
  1    1      1      52428800  512  1     NO  INACTIVE    1692128       29-DEC-15     1712135   29-DEC-15
  2    1      2      20971520  512  1     NO  CURRENT    1712135       29-DEC-15    2.8147E+14
  3    1      0      52428800  512  1     YES UNUSED   0     0
 
 

SQL> alter system switch logfile;

System altered.

SQL> /

System altered.

SQL> /

System altered.

SQL>
System altered.

SQL>


----Session 1
SQL> conn zw/zw
Connected.

SQL> select count(1) from t;

  COUNT(1)
----------
     14041

SQL> delete from t where rownum < 1001;
1000 rows deleted.

SQL> commit;
Commit complete.

SQL> select count(1) from  t;

  COUNT(1)
----------
     13041
 
 
恢复后的

-----session 2

SQL> select count(1) from  t;

  COUNT(1)
----------
     13041