磁盘阵列掉电 oracle数据库,掉电导致磁盘坏,非归档下的redo全部丢失,数据库打开的恢复失败...

1、环境

OS:sun solaris

Database version:8.1.7

数据文件存放路径:/u01/oradata/bjtb/; /u02/oradata/bjtb/

数据库为非归档

2、问题

raid5坏两个盘,oracle的文件存放路径/u01,/u02都挂不上

更换硬盘后,/u01可挂上,/u02仍然不可以

/u02中存放的文件有:8个普通的数据文件,全部的redo日志文件

3、处理过程

$sqlplus / as sysdba失败

$sqlplus /nolog

Sql>conn / as sysdba成功

Sql>startup失败,无法mount

Alert文件中显示其中一个控制文件在/u02下

Vi$ORACLE_HOME/dbs/initbjtb.ora

删掉/u02下的控制文件的路径,仅保留另外两个控制文件即可

Sql>shutdown immediate

Sql>startup可以mount,但是有数据文件在/u02上,因此无法打开数据库

Sql>alter database backup controlfile to trace;

Udump下查看生成的trace文件,发现一半的数据文件都在/u02下,全部redo也在/u02下

还好这些都是普通的数据文件,offline后数据库应该是可以起来的,只是会丢掉很多数据。尝试恢复。

Sql>alter database open;

报数据文件3找不到

Sql>alter database datafile 3 offline drop;

根据提示,offline drop掉的数据文件有3,4,6,7,10,13,14,15

Sql>alter database open;

报redo日志找不到

Sql>alter database rename file ‘/u02/oradata/bjtb/redo01.log’ to ‘/u02/oradata/bjtb/redo01.log’;

报新文件’/u02/oradata/bjtb/redo01.log’找不到

尝试在重建控制文件的脚本中修改此路径,重建控制文件失败。于是

$touch /u02/oradata/bjtb/redo01.log

$touch /u02/oradata/bjtb/redo02.log

$touch /u02/oradata/bjtb/redo03.log

Sql>alter database rename file ‘/u02/oradata/bjtb/redo01.log’ to ‘/u02/oradata/bjtb/redo01.log’;

Sql>alter database rename file ‘/u02/oradata/bjtb/redo01.log’ to ‘/u02/oradata/bjtb/redo02.log’;

Sql>alter database rename file ‘/u02/oradata/bjtb/redo01.log’ to ‘/u02/oradata/bjtb/redo03.log’;

成功

Sql>alter database open;

报错:需要resetlogs或resetlogs

Sql>alter database open resetlogs;

报错:需要介质恢复

Sql>recover database until cancel;

Cancel

需要更多恢复,文件system01.dbf错

4、分析

因为故障的原因是掉电引起的,因此,导致了有些看起来是好的文件,它的checkpoint也不一致,如果日志信息还存在,那么还有可能通过日志中的记录把文件的checkpoint一致,但是,我们的redo log全部丢失,而且数据库还是在noarchivelog模式下,无法让它的checkpoint一致,数据库无法打开。只能通过备份恢复,而且还必须是完全备份。

5、建议

此次问题最大的原因在于同时有两块硬盘损坏,因此对于系统的硬件,也需要定期做检查。

数据库方面,建议最好将数据库设置成归档模式,而且需要定期对数据库备份、维护。

对于redo log,每个日志组最好有两个成员,并且两个成员分别放在不同的目录下。目前我们的redo log的三个日志组,每个日志组都是一个成员。单一redo log的丢失或损坏故障很容易恢复,但是如果碰到像我们现在的情况:断电故障,非归档,日志全部丢失。在这种情况下,如果不幸断电时有文件的checkpoint不一致,那么就没有办法将其写一致,只能靠备份恢复了。所以,redo log的安全性也很重要。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值