1.ASM磁盘组出现:
_DROPPED_001_DATA MISSING
asmcmd lsdg
结果中:offline_disk 列出现1;即磁盘掉线。
同时ASM的日志中可以看到:
NOTE: cache closing disk 1 of grp1:(not open) DATA2
select name,failgroup,mount_status,state,path from v$asm_disk ;
从结果来看:我可以判断:
(1)/dev/mapper/mpatha 这个磁盘还没有加入到磁盘中。
(2) _DROPPED_002_DATA 磁盘掉线。这只是推测。
目前来看数据库宕机了。
2.检查磁盘组的情况。
我们发现:磁盘有:
/dev/mapper/asmdisk0 OCR 盘 OCR_0000
/dev/mapper/asmkdsk1 DATA_0000
/dev/mapper/asmkdsk2 DATA 盘: DATA_0001
/dev/mapper/mpatha 听说这块盘之前已经被加入到集群中了,但是但是目前没有这块磁盘的信息,它不属于任何一个组。
/dev/mapper/mpathb DATA 磁盘:DATA_0003
通过排除,并未发现有磁盘掉线。那么 _DROPPED_002_DATA 到底是哪块盘?
asmcmd lsdg 通过查看磁盘组的冗余情况:OCR 是EXTERNAL 冗余。
DATA 磁盘是NORMAL 冗余,但是只有2块盘:/dev/mapper/asmkdsk1,/dev/mapper/asmkdsk2;
我们知道NORMAL 冗余最少需要3块盘。但是这里使用了两块盘做NORMAL冗余。所以这里出现的:_DROPPED_002_DATA 的掉线信息是因为缺少第三块盘。Oracle认为第三块盘掉线了,但实际上它本身不存在。
3.将 /dev/mapper/mpatha 磁盘加入到磁盘组。
SQL> alter diskgroup data add disk '/dev/mapper/mpatha' ;
alter diskgroup data add disk '/dev/mapper/mpatha' ;
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15033: disk '/dev/mapper/mpatha' belongs to diskgroup "DATA"
果然,mpatha 磁盘已经加入过DATA磁盘组了。由于这里是NORMAL冗余,其他盘中数据的完整副本。所以清理这块盘的磁盘头信息,并将其重新加入。
(1)操作系统执行。
dd if=/dev/zero of=/dev/mapper/mpatha bs=8k count=256
sqlplus / as sysasm
alter diskgroup data add disk '/dev/mapper/mpatha' ;
果然重新假如成功。
4.重启数据库。
两个节点;
sqlplus / as sysdba
startup
果然两个节点都可以正常启动。
从这里可以看出,在NORMAL冗余模式下,只要有两块盘正常,则即使第三块盘掉线,系统也能够正常运行。至此,掉线的磁盘加入了。原来 _DROPPED_002_DATA 这个是NORMAL冗余oracle为其分配的磁盘号,但是磁盘并不存在,所以残留这个信息。暂时没有办法清理,但是目前不影响数据库的正常运行。DATA盘已经有四块盘了。