存储故障导致oracle 数据文件处于recover状态
环境:系统Linux 2.6.28.10 数据库版本:Oracle10g rac
故障描述:数据库连接不上,查看数据库日志ORA-00376: file 10 cannot be read at this time
ORA-01110: data file 10: '+DATA01/********'
故障分析:查看硬件共享存储,由于更换硬盘,raid降级,正在做数据同步。同步过程中有报错 unreadable sector(s) detected ,扇区有报错。应该就是由此导致的。
在系统里查看asm存储,
#export ORACLE_SID=+ASM1 #asmcmd >lsdg
共享磁盘状态是正常的,接着查看数据文件状态
set pagesize 999; set linesize 300; col name for a100; select file#,name,status from v$datafile;
10 +DATA01/********* RECOVER
数据文件10 status处于recover状态,其他的数据文件都是online状态
故障解决:先尝试将datafile 10 offline
alter database datafile 10 offline;
执行成功后查看datafile的状态,依然是recover状态,看日志刚才的offline命令确实也执行成功了。先不管,
继续尝试直接recover,如果不行考虑从备份中restore再recover。
rman target / recover datafile 10;
执行过程中观察有没有报错。这次是直接执行成功了,没有报错。接着使datafile online
alter database datafile 10 online;
执行成功后查看alert日志。已经恢复正常,不再报之前的错误。