一次ASM小故障
Aug282012
下周五回公司技术分享,下午客户机房断电,开发人员按照我写的数据库服务器关闭流程正确关闭数据库服务器,今天早上我还没到客户现场,开发人员按照我写的数据库服务器开启流程打开了数据库,10点多我按照客户要求统计数据,遇到以下错误:
SQL> select count(*) from images where identifier like '04%'; select count(*) from images where identifier like '04%' * ERROR at line 1: ORA-01115: IO error reading block from file (block # ) ORA-01110: data file 15: '+PIC05/fhacdb/datafile/pic05.dbf' ORA-15078: ASM diskgroup was forcibly dismounted
此时ASM磁盘组并没有dismounted。
SQL> select NAME,STATE from v$asm_diskgroup; NAME STATE ------------------------------ ----------- ARCH MOUNTED DATA MOUNTED PIC01 MOUNTED PIC02 MOUNTED PIC03 MOUNTED PIC04 MOUNTED PIC05 MOUNTED PIC06 MOUNTED PIC07 MOUNTED PIC08 MOUNTED 10 rows selected.
本案例环境为OEL5.7 for 64 bit,ORACLE 11.2.0.2.0,利用UDEV绑定ASM磁盘,ASM实例开机自动启动,不知道是硬件挂载延迟,还是UDEV绑定磁盘有延迟,之前就遇到过ASM开机自动启动时,不能正确挂载全部的磁盘组,需手动重启后才会正确挂载磁盘组,今天遇到这个问题,我的直觉告诉我,这应该是由于ASM开机自动启动没有正确挂载磁盘引起的,问开发人员得知,他在打开数据库时并没有重启ASM实例,此时我对自己的猜测充满了信心,打算重启数据库,报错:
SQL> shutdown immediate ORA-01110: data file 15: '+PIC05/fhacdb/datafile/pic05.dbf' ORA-01115: IO error reading block from file 15 (block # 1) ORA-15078: ASM diskgroup was forcibly dismounted ORA-15078: ASM diskgroup was forcibly dismounted
shutdown immediate关闭不了,只好abort啦。
SQL> shutdown abort ORACLE instance shut down.
重启ASM实例后再次打开数据库,问题解决。
SQL> select count(*) from images where identifier like '04%'; COUNT(*) ---------- 2327698
这个库我已经搞了一年了,对这个库的脾气秉性都很了解,所以我相信自己的判断,很快解决了问题,如果这是我第一次接触的库,可能就会犹豫,不敢贸然关闭数据库(而且还是abort),可能会先去查找资料(可能会被一些帖子误导),这样就耽误了很多时间,有些时候直觉很重要,但是不建议打没把握的仗,万一出了问题,挂掉的可能就不只是数据库了。