ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 一次存储故障引起的数据库启动错误

一次存储故障引起的数据库启动错误

原创 Linux操作系统 作者:anycall2010 时间:2009-04-19 22:20:54 0 删除 编辑

论坛一篇文章,我们可能经常遇到这样的错误,收藏起来.

 今天一早很多数据库收到I/O错误报警,差不多都是以下格式,都是ORA-27072错误

ORA-00345: redo log write error block 72123 count 59
ORA-00312: online log 1 thread 1: '/mnt/dmp/backup2/redo1b.log'
ORA-27072: skgfdisp: I/O error

第一反应是存储出现问题,立即让负责这个存储的工程师检查,检查下来确定是存储的一个模块出现了问题

存储怎么解决问题的,这里就不详说。我想说的是存储问题解决以后,数据库重启时出现的问题以及怎样解决它,虽然最后无奈的使用重启服务器的方法来解决的,但以下方法也是一种解决问题的思路

在存储问题解决以后,I/O已经不出现报错了,这时候数据库已经不能使用shutdown immediate的方式关闭了,只能使用abort的方式关闭

SQL> shutdown abort
ORACLE instance shut down.
SQL> startup nomount
ORACLE instance started.

Total System Global Area  797513464 bytes
Fixed Size                   452344 bytes
Variable Size             251658240 bytes
Database Buffers          536870912 bytes
Redo Buffers                8531968 bytes
SQL> alter database mount
  2  ;
alter database mount
*
ERROR at line 1:
ORA-01102: cannot mount database in EXCLUSIVE mode

我从网上查到出现ORA-01102错误一般是由以下原因引起的
Oracle的共享内存段或信号量没有被释放;
Oracle的后台进程没有被关闭
用于锁内存的文件lk和sgadef.dbf文件没有被删除


删除lkDMP文件

[oracle@s1dmp04 ~]# cd $ORACLE_HOME/dbs
[oracle@s1dmp04 ~/dbs]# ls -l
total 6540
lrwxrwxrwx    1 oracle   oinstall       39 Jun 28  2004 initdmp.ora -> /opt/oracle/admin/dmp/pfile/initdmp.ora
lrwxrwxrwx    1 oracle   oinstall       39 Jun  3  2004 initdmp.ora.old -> /opt/oracle/admin/dmp/pfile/initdmp.ora
-rw-r--r--    1 oracle   oinstall    12920 Mar  9  2002 initdw.ora
-rw-r--r--    1 oracle   oinstall     8385 Mar  9  2002 init.ora
-rw-rw----    1 oracle   oinstall       24 Apr 11 08:54 lkDMP
-rwSr-----    1 oracle   oinstall     1536 Jan 14  2008 orapwdmp
-rw-r-----    1 oracle   oinstall  6643712 Apr 18 12:05 snapcf_dmp.f
-rw-r-----    1 oracle   oinstall     3584 Apr 19 09:53 spfiledmp.ora
[oracle@s1dmp04 ~/dbs]# rm lk*
rm: remove `lkDMP'? y

SQL> alter database mount;
alter database mount
*
ERROR at line 1:
ORA-00205: error in identifying controlfile, check alert log for more info

再检查Oracle共享内存段和后台进程

[root@s1dmp04 ~]# ps -ef  | grep ora_
oracle    3271     1  0  2008 ?        00:02:29 ora_lgwr_dmp
oracle    3273     1  0  2008 ?        00:08:59 ora_ckpt_dmp
oracle    5405  5097  0 13:11 pts/2    00:00:00 grep ora_
[root@s1dmp04 ~]# ipcs

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status      
0x01055a52 32769      root      764        1024       0                       
0x01055a56 65538      root      764        44         2                       
0x01055a57 98307      root      764        25         2                       
0x01055a58 131076     root      764        25         2                       
0x01055a4e 163845     root      764        532        1                       
0x01055a55 196614     root      764        3780       1                       
0x01055a59 229383     root      764        4          1                       
0x01055a5d 294921     root      764        100        1                       
0x01055a60 327690     root      764        480        1                       
0x00000000 458764     oracle    640        801112064  15         dest         

------ Semaphore Arrays --------
key        semid      owner      perms      nsems      status      

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages   

[root@s1dmp04 root]# ipcrm shm 458764
resource(s) deleted
[root@s1dmp04 root]# ipcs

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status      
0x00000064 0          root      600        1712       2379                    
0x01055a52 32769      root      764        1024       0                       
0x01055a56 65538      root      764        44         2                       
0x01055a57 98307      root      764        25         2                       
0x01055a58 131076     root      764        25         2                       
0x01055a4e 163845     root      764        532        1                       
0x01055a55 196614     root      764        3780       1                       
0x01055a59 229383     root      764        4          1                       
0x7a058eeb 262152     root      660        4          1                       
0x01055a5d 294921     root      764        100        1                       
0x01055a60 327690     root      764        480        1                       
0x7a051606 360459     root      660        8          1                       
0x00000000 458764     oracle    640        801112064  15         dest         

------ Semaphore Arrays --------
key        semid      owner      perms      nsems      status      
0x00000000 65537      root      600        1         
0x00000000 360450     root      600        1         
0x00000000 425987     root      600        1         
0x00000000 491525     root      600        1         
0x00000000 524294     root      600        1         
0x00000000 622599     root      600        1         

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages   
0x6d0559a1 0          root       660        0            0           
今天一早很多数据库收到I/O错误报警,差不多都是以下格式,都是ORA-27072错误

ORA-00345: redo log write error block 72123 count 59
ORA-00312: online log 1 thread 1: '/mnt/dmp/backup2/redo1b.log'
ORA-27072: skgfdisp: I/O error

第一反应是存储出现问题,立即让负责这个存储的工程师检查,检查下来确定是存储的一个模块出现了问题

存储怎么解决问题的,这里就不详说。我想说的是存储问题解决以后,数据库重启时出现的问题以及怎样解决它,虽然最后无奈的使用重启服务器的方法来解决的,但以下方法也是一种解决问题的思路

在存储问题解决以后,I/O已经不出现报错了,这时候数据库已经不能使用shutdown immediate的方式关闭了,只能使用abort的方式关闭

SQL> shutdown abort
ORACLE instance shut down.
SQL> startup nomount
ORACLE instance started.

Total System Global Area  797513464 bytes
Fixed Size                   452344 bytes
Variable Size             251658240 bytes
Database Buffers          536870912 bytes
Redo Buffers                8531968 bytes
SQL> alter database mount
  2  ;
alter database mount
*
ERROR at line 1:
ORA-01102: cannot mount database in EXCLUSIVE mode

我从网上查到出现ORA-01102错误一般是由以下原因引起的
Oracle的共享内存段或信号量没有被释放;
Oracle的后台进程没有被关闭
用于锁内存的文件lk和sgadef.dbf文件没有被删除


删除lkDMP文件

[oracle@s1dmp04 ~]# cd $ORACLE_HOME/dbs
[oracle@s1dmp04 ~/dbs]# ls -l
total 6540
lrwxrwxrwx    1 oracle   oinstall       39 Jun 28  2004 initdmp.ora -> /opt/oracle/admin/dmp/pfile/initdmp.ora
lrwxrwxrwx    1 oracle   oinstall       39 Jun  3  2004 initdmp.ora.old -> /opt/oracle/admin/dmp/pfile/initdmp.ora
-rw-r--r--    1 oracle   oinstall    12920 Mar  9  2002 initdw.ora
-rw-r--r--    1 oracle   oinstall     8385 Mar  9  2002 init.ora
-rw-rw----    1 oracle   oinstall       24 Apr 11 08:54 lkDMP
-rwSr-----    1 oracle   oinstall     1536 Jan 14  2008 orapwdmp
-rw-r-----    1 oracle   oinstall  6643712 Apr 18 12:05 snapcf_dmp.f
-rw-r-----    1 oracle   oinstall     3584 Apr 19 09:53 spfiledmp.ora
[oracle@s1dmp04 ~/dbs]# rm lk*
rm: remove `lkDMP'? y

SQL> alter database mount;
alter database mount
*
ERROR at line 1:
ORA-00205: error in identifying controlfile, check alert log for more info

再检查Oracle共享内存段和后台进程

[root@s1dmp04 ~]# ps -ef  | grep ora_
oracle    3271     1  0  2008 ?        00:02:29 ora_lgwr_dmp
oracle    3273     1  0  2008 ?        00:08:59 ora_ckpt_dmp
oracle    5405  5097  0 13:11 pts/2    00:00:00 grep ora_
[root@s1dmp04 ~]# ipcs

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status      
0x01055a52 32769      root      764        1024       0                       
0x01055a56 65538      root      764        44         2                       
0x01055a57 98307      root      764        25         2                       
0x01055a58 131076     root      764        25         2                       
0x01055a4e 163845     root      764        532        1                       
0x01055a55 196614     root      764        3780       1                       
0x01055a59 229383     root      764        4          1                       
0x01055a5d 294921     root      764        100        1                       
0x01055a60 327690     root      764        480        1                       
0x00000000 458764     oracle    640        801112064  15         dest         

------ Semaphore Arrays --------
key        semid      owner      perms      nsems      status      

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages   

[root@s1dmp04 root]# ipcrm shm 458764
resource(s) deleted
[root@s1dmp04 root]# ipcs

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status      
0x00000064 0          root      600        1712       2379                    
0x01055a52 32769      root      764        1024       0                       
0x01055a56 65538      root      764        44         2                       
0x01055a57 98307      root      764        25         2                       
0x01055a58 131076     root      764        25         2                       
0x01055a4e 163845     root      764        532        1                       
0x01055a55 196614     root      764        3780       1                       
0x01055a59 229383     root      764        4          1                       
0x7a058eeb 262152     root      660        4          1                       
0x01055a5d 294921     root      764        100        1                       
0x01055a60 327690     root      764        480        1                       
0x7a051606 360459     root      660        8          1                       
0x00000000 458764     oracle    640        801112064  15         dest         

------ Semaphore Arrays --------
key        semid      owner      perms      nsems      status      
0x00000000 65537      root      600        1         
0x00000000 360450     root      600        1         
0x00000000 425987     root      600        1         
0x00000000 491525     root      600        1         
0x00000000 524294     root      600        1         
0x00000000 622599     root      600        1         

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages   
0x6d0559a1 0          root       660        0            0           

[root@s1dmp04 root]# ps -ef | grep ora_
oracle    3271     1  0  2008 ?        00:02:29 ora_lgwr_dmp
oracle    3273     1  0  2008 ?        00:08:59 ora_ckpt_dmp
root      5605  5552  0 13:13 pts/2    00:00:00 grep ora_
[root@s1dmp04 root]# kill -9 3271
[root@s1dmp04 root]# kill -9 3273
[root@s1dmp04 root]# ps -ef | grep ora_
oracle    3271     1  0  2008 ?        00:02:29 ora_lgwr_dmp
oracle    3273     1  0  2008 ?        00:08:59 ora_ckpt_dmp
root      5617  5552  0 13:13 pts/2    00:00:00 grep ora_


从上面的操作可以看出,Oracle的共享内存段不能被清除,后台进程也不能被杀掉,在这种情况下,我只有重启这台服务器来解决问题
重启数据库后,一切正常

[root@s1dmp04 root]# ps -ef | grep ora_
oracle    3271     1  0  2008 ?        00:02:29 ora_lgwr_dmp
oracle    3273     1  0  2008 ?        00:08:59 ora_ckpt_dmp
root      5605  5552  0 13:13 pts/2    00:00:00 grep ora_
[root@s1dmp04 root]# kill -9 3271
[root@s1dmp04 root]# kill -9 3273
[root@s1dmp04 root]# ps -ef | grep ora_
oracle    3271     1  0  2008 ?        00:02:29 ora_lgwr_dmp
oracle    3273     1  0  2008 ?        00:08:59 ora_ckpt_dmp
root      5617  5552  0 13:13 pts/2    00:00:00 grep ora_


从上面的操作可以看出,Oracle的共享内存段不能被清除,后台进程也不能被杀掉,在这种情况下,我只有重启这台服务器来解决问题
重启数据库后,一切正常

原地址:http://www.itpub.net/viewthread.php?tid=1153750&pid=13390240&page=1&extra=#pid13390240

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8334342/viewspace-590963/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-06-24

  • 博文量
    182
  • 访问量
    568726