探索ORACLE之RMAN_07 重做日志redu文件丢失恢复

探索ORACLE之RMAN_07 重做日志redu文件丢失恢复

作者:吴伟龙Name:Prodence Woo

QQ:286507175  msn:hapy-wuweilong@hotmail.com       

 

 

       重做日志文件记录了数据库的变更数据。一般重做日志文件的失败不会使数据库数据丢失,但是会影响数据库的恢复。重做日志分为两种状态当前联机重做日志和非当前的联机重做日志

4.1
非当前redo(联机重做日志)文件丢失恢复

 

数据库运行的时候,日志中报如下错误:

ORA-00313: openfailed for members of log group 1 of thread 1

ORA-00312: onlinelog 1 thread 1: '/DBData/WWL/redo01.log'

 

查看日志组,判断损坏的日志组是否为当前日志组

SQL> select * from v$log;

 

    GROUP#    THREAD# SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM

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

         1          1         32  31457280          1 YES INACTIVE               1063037 04-JUL-12

         3          1         34  31457280          1 NO  CURRENT                1118555 05-JUL-12

         2          1        33   31457280          1 YES INACTIVE               1086278 05-JUL-12

 

    
我们可以看到损坏的那组日志不是当前的日志,这个时候我么可以通过使用clear命令来重建该日志文件组。

 

通过重建来恢复非当前日志组,实现数据库的打开。

SQL> startup

ORACLE instancestarted.

 

Total SystemGlobal Area  100663296 bytes

Fixed Size                  1217884 bytes

Variable Size              88083108 bytes

DatabaseBuffers            8388608 bytes

Redo Buffers                2973696 bytes

Database mounted.

ORA-00313: openfailed for members of log group 1 of thread 1

ORA-00312: onlinelog 1 thread 1: '/DBData/WWL/redo01.log'

 

SQL>alter database clear logfile group 1;

Databasealtered.

 

重建完之后数据库可以打开了,至此恢复完成

SQL> alter database open;

Database altered.

 

 

4.2当前redo(联机重做日志)文件丢失恢复

数据库启动的时候报如下错误

SQL> startup

ORACLE instance started.

 

Total System Global Area 100663296 bytes

Fixed Size                 
1217884 bytes

Variable Size             88083108 bytes

Database Buffers           
8388608 bytes

Redo Buffers               
2973696 bytes

Database mounted.

ORA-00313: open failed for members of log group 1 ofthread 1

ORA-00312: online log 1 thread 1:'/DBData/WWL/redo01.log'

ORA-27037: unable to obtain file status

Linux Error: 2: No such file or directory

Additional information: 3

 

查看日志组,判断损坏的日志组是否为当前日志组

SQL> select * from v$log;

 

    GROUP#    THREAD# SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM

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

         1          1         35  31457280          1 NO  CURRENT                1139915 05-JUL-12

         3          1         34  31457280          1 YES INACTIVE               1118555 05-JUL-12

         2          1         33  31457280          1 YES INACTIVE               1086278 05-JUL-12

   
在这里可以看到损坏的为当前日志组,那么意味着会有在线数据丢失,因为重做日志里面当前状态里面存放的是是没有归档及写入到数据文件的活动数据,那么这种恢复必然是会导致数据的不同步,从而使数据丢失。

 

我们可以首先尝试清空日志组信息并重建的方式来进行恢复:

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 instanceWWL (thread 1)

ORA-00312: online log 1 thread 1:'/DBData/WWL/redo01.log'

 

如上方法不行,可以采取基于SCN,取消的方法来恢复数据库。

 

使用基于控制文件的redo恢复:

SQL> RECOVER DATABASE USING BACKUP CONTROLFILE;

ORA-00279: change 1139916 generated at 07/05/201221:49:48 needed for thread 1

ORA-00289: suggestion :/DBSoft/product/10.2.0/db_1/dbs/arch1_35_783449272.dbf

ORA-00280: change 1139916 for thread 1 is in sequence #35

 

Specify log: {<RET>=suggested | filename | AUTO |CANCEL}

auto

ORA-00308: cannot open archived log '/DBSoft/product/10.2.0/db_1/dbs/arch1_35_783449272.dbf'

ORA-27037: unable to obtain file status

Linux Error: 2: No such file or directory

Additional information: 3

 

 

ORA-00308: cannot open archived log'/DBSoft/product/10.2.0/db_1/dbs/arch1_35_783449272.dbf'

ORA-27037: unable to obtain file status

Linux Error: 2: No such file or directory

Additional information: 3

 

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 mount;

ORACLE instance started.

Total System Global Area 100663296 bytes

Fixed Size                 
1217884 bytes

Variable Size             88083108 bytes

Database Buffers           
8388608 bytes

Redo Buffers               
2973696 bytes

Database mounted.

 

SQL> alter system reset"_allow_resetlogs_corruption" scope = spfile sid = '*';

System altered.

 

SQL> alter database open resetlogs;

Database altered.

 

SQL> select instance_name,status from v$instance;

 

INSTANCE_NAME   STATUS

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

WWL             OPEN

 

SQL> select * from v$log;

 

    GROUP#    THREAD# SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM

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

         1          1          1  31457280          1 NO  CURRENT                1200799 06-JUL-12

         2          1          0  31457280          1 YES UNUSED                       0

         3          1          0  31457280          1 YES UNUSED                       0

 

SQL>

System altered.

 

SQL>

System altered.

 

SQL>

System altered.

 

SQL>

System altered.

 

SQL> select * from v$log;

 

    GROUP#    THREAD#  SEQUENCE#     BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM

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

         1          1         17  31457280          1 YES INACTIVE               1241271 06-JUL-12

         2          1         18  31457280          1 YES INACTIVE               1241273 06-JUL-12

         3          1         19  31457280          1 NO  CURRENT                1241275 06-JUL-

 

时间: 2025-01-30 17:05:58

探索ORACLE之RMAN_07 重做日志redu文件丢失恢复的相关文章

探索ORACLE之RMAN_07整个业务表空间丢失恢复

探索ORACLE之RMAN_07整个业务表空间丢失恢复 作者:吴伟龙   Name:Prodence Woo QQ:286507175  msn:hapy-wuweilong@hotmail.com   1.     整个业务表空间丢失恢复 注意:以下的所有实验,都是基于上面的全库备份来做的恢复. 2.1 删除wwl表空间的所有数据文件 [root@wwldb ~]# cd /DBData/WWL/ [root@wwldb WWL]# rm -rf wwl* [root@wwldb WWL]#

探索ORACLE之RMAN_07恢复

探索ORACLE之RMAN_07恢复 作者:吴伟龙   Name:Prodence Woo QQ:286507175  msn:hapy-wuweilong@hotmail.com   备份的终极目的是为了更好的将数据恢复和还原过来,在前面的章节中我们已经重点谈完了RMAN的备份,实际上也穿插的谈了些复杂的完整恢复.当然在这节我们将会由浅入深的详细谈谈在几种不同情况下的数据库恢复. 1.     数据文件的丢失恢复 1.1    在wwl表空间上创建5张表,并添加数据. SQL> create

探索ORACLE之RMAN_07控制文件丢失恢复

探索ORACLE之RMAN_07控制文件丢失恢复 作者:吴伟龙   Name:Prodence Woo QQ:286507175  msn:hapy-wuweilong@hotmail.com 1.     控制文件(controlfile)丢失恢复 基于控制文件的复合多路径性,它的丢失分为两种,一种是其中某个控制文件的损坏或丢失,另外一种是所有控制文件均丢失.基于第一种情况,只需把好的控制文件复制一份在损坏或丢失的那个控制文件路径下即可.第二种情况下则需要通过备份信息来对控制文件进行恢复或手工

探索ORACLE之RMAN_07 参数文件丢失恢复

探索ORACLE之RMAN_07 参数文件丢失恢复 作者:吴伟龙   Name:Prodence Woo QQ:286507175  msn:hapy-wuweilong@hotmail.com   Oracle数据库的参数文件有两种一种是pfile(初始化参数文件),还有一种是spfile(服务器初始化参数文件):实际上spfile是pfile衍生过来的一新参数文件,应用9i以后的版本,在9i之前的版本都不支持,只支持pfile:而且pfile是不能通过oracle命令来进行备份的,只有spf

探索ORACLE之RMAN_07单个数据文件丢失恢复

探索ORACLE之RMAN_07单个数据文件丢失恢复 作者:吴伟龙   Name:Prodence Woo QQ:286507175  msn:hapy-wuweilong@hotmail.com   备份的终极目的是为了更好的将数据恢复和还原过来,在前面的章节中我们已经重点谈完了RMAN的备份,实际上也穿插的谈了些复杂的完整恢复.当然在这节当中我们将会由浅入深的详细谈谈在几种不同情况下的数据库恢复. 1.     数据文件的丢失恢复 1.1    在wwl表空间上创建5张表,并添加数据. SQ

探索ORACLE之RMAN_07 system表空间丢失恢复

探索ORACLE之RMAN_07 system表空间丢失恢复 作者:吴伟龙   Name:Prodence Woo QQ:286507175  msn:hapy-wuweilong@hotmail.com     1.     SYSTEM表空间数据文件丢失恢复 注意:以下的所有实验,都是基于上面的全库备份来做的恢复. 3.1 删除system表空间的所有数据文件. [oracle@wwldb WWL]$ rm -rf syste* [oracle@wwldb WWL]$ exit   3.2

探索ORACLE之RMAN_07 磁盘损坏数据丢失恢复

探索ORACLE之RMAN_07 磁盘损坏数据丢失恢复 作者:吴伟龙   Name:Prodence Woo QQ:286507175  msn:hapy-wuweilong@hotmail.com             有的时候在企业里面难免会出现由于磁盘损坏而导致数据库的故障乃至数据的丢失,那么这个时候,那么这个时候数据的备份就显得尤为的重要.在这一节我们重点讨论下由于装载数据文件,redo日志文件,controlfile控制文件的磁盘损坏的数据恢复.   6.1 通过强制卸载磁盘模拟数据

undo表空间文件丢失恢复(3)--无备份无redo的情况下恢复

undo表空间的数据文件丢失,如果没有备份的情况下,而且redo也不可用,这个时候就要采用隐藏参数来恢复,下边给出一个例子.   undo表空间文件丢失恢复(1)--有备份的情况下恢复:http://blog.itpub.net/26736162/viewspace-1458654/ undo表空间文件丢失恢复(2)--无备份有redo的情况下恢复:http://blog.itpub.net/26736162/viewspace-1458663/   [oracle@rhel6_lhr ~]$

undo表空间文件丢失恢复(4)--无备份无recover的情况下恢复

  undo表空间的数据文件丢失,如果没有备份的情况下,而且丢失的undo文件可以置为offline状态后(注意是offline不是recover状态),则可以如下恢复,下边给出一个例子.   undo表空间文件丢失恢复(1)--有备份的情况下恢复:http://blog.itpub.net/26736162/viewspace-1458654/ undo表空间文件丢失恢复(2)--无备份有redo的情况下恢复:http://blog.itpub.net/26736162/viewspace-1