浅谈关于redo log file的故障处理

 

2        如果LGWR 至少能够访问一个组内成员,对组内可访问成员的写入将照常进行,LGWR 忽略组内的不可用成员。如果该组不活动,即检查点已完成,那么丢弃和添加一个新的联机日志成员就可以解决问题,否则如果该组是当前活动的日志组,则必须首先强制日志切换。

 

SQL> SELECT group#, sequence#, bytes, members, status

  2  FROM V$LOG;

    GROUP#  SEQUENCE#      BYTES    MEMBERS STATUS

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

         1        411    1048576          2 INACTIVE

         2        412    1048576          2 INACTIVE

         3        413    1048576          2 INACTIVE

         5        414    1048576          2 CURRENT

SQL> select * from  v$logfile

  2  ORDER BY GROUP#;

 

    GROUP# STATUS  MEMBER

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

         1         D:/ORACLE1/ORA81/ORADATA/TEST/REDO01.LOG

         1         E:/ORACLE1/ORA81/ORADATA/TEST/REDO04.LOG

         2         D:/ORACLE1/ORA81/ORADATA/TEST/REDO02.LOG

         2         E:/ORACLE1/ORA81/ORADATA/TEST/REDO05.LOG

         3         D:/ORACLE1/ORA81/ORADATA/TEST/REDO03.LOG

         3         E:/ORACLE1/ORA81/ORADATA/TEST/REDO06.LOG

         5         E:/ORACLE1/ORA81/ORADATA/TEST/REDO07.LOG

         5         E:/ORACLE1/ORA81/ORADATA/TEST/REDO08.LOG

8 rows selected

SQL>

 

为了模拟日志组中有一个成员损坏的情况,我们打开文本编辑器,并且破坏E:/ORACLE1/ORA81/ORADATA/TEST/REDO07.LOG文件,然后,我们看到:

 

SQL> select * from  v$logfile;

    GROUP# STATUS  MEMBER

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

         1         D:/ORACLE1/ORA81/ORADATA/TEST/REDO01.LOG

         2         D:/ORACLE1/ORA81/ORADATA/TEST/REDO02.LOG

         3         D:/ORACLE1/ORA81/ORADATA/TEST/REDO03.LOG

         1         E:/ORACLE1/ORA81/ORADATA/TEST/REDO04.LOG

         2         E:/ORACLE1/ORA81/ORADATA/TEST/REDO05.LOG

         3         E:/ORACLE1/ORA81/ORADATA/TEST/REDO06.LOG

         5 INVALID E:/ORACLE1/ORA81/ORADATA/TEST/REDO07.LOG

         5         E:/ORACLE1/ORA81/ORADATA/TEST/REDO08.LOG

8 rows selected

SQL>

 

但是这时候数据还可以忽略这个损坏的文件而正常使用。要修复这个文件,我们需要做:

SQL> shutdown

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> host

Microsoft Windows 2000 [Version 5.00.2195]

(C) 版权所有 1985-2000 Microsoft Corp.

E:/>COPY E:/ORACLE1/ORA81/ORADATA/TEST/REDO08.LOG E:/ORACLE1/ORA81/ORADATA/TEST/

REDO07.LOG

改写 E:/ORACLE1/ORA81/ORADATA/TEST/REDO07.LOG ? (Yes/No/All): YES

已复制         1 个文件。

 

上面这一步需要注意的是,如果新的日志文件的位置或文件名称需要改变(如,介质失效),则在数据库加载(Startup Mount)后需要对这个改变位置或名称的日志文件重命名,然后再打开数据,具体过程参见重新定位或者重命名联机重做日志文件

 

E:/>exit

SQL> startup

ORACLE 例程已经启动。

Total System Global Area   36214812 bytes

Fixed Size                    75804 bytes

Variable Size              19283968 bytes

Database Buffers           16777216 bytes

Redo Buffers                  77824 bytes

数据库装载完毕。

数据库已经打开。

SQL> select * from  v$logfile;

    GROUP# STATUS  MEMBER

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

         1         D:/ORACLE1/ORA81/ORADATA/TEST/REDO01.LOG

         2         D:/ORACLE1/ORA81/ORADATA/TEST/REDO02.LOG

         3         D:/ORACLE1/ORA81/ORADATA/TEST/REDO03.LOG

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值