论坛一篇文章,我们可能经常遇到这样的错误,收藏起来.
今天一早很多数据库收到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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/8334342/viewspace-590963/