oracle实例crash,报错信息ORA-00600、ORA-27091、ORA-27072
【故障现象】
2015年2月8日,oracle10.2.0.4单实例数据库,突然CRASH,但进过重启运行恢复。检查alert.log日志发现如下"ORA-00600、ORA-27091、ORA-27072"报错信息。
Errors in file /home/db/oracle/admin/db1/bdump/db1_mmon_22544442.trc:
ORA-00600: internal error code, arguments: [kmgs_parameter_update_timeout_1], [27091], [], [], [], [], [], []
ORA-27091: unable to queue I/O
ORA-27072: File I/O error
IBM AIX RISC System/6000 Error: 9: Bad file number
Additional information: 7
Additional information: 4
Additional information: -1
【问题分析】
2014年10月进行双机切换,spfile为共享卷裸设备,切换前,备机上没有清理不应该存在的root权限的spfile文件,切换后,出现异常,oracle的数据裸设备文件的文件权限为301,且用户不为oracle。这些错误,使得数据库持续ORA-27072报错
【问题解决】
修改spfile为裸设备
# su - oracle
$ export ORACLE_SID=db1
-- Create a PFILE from your current SPFILE:
SQL> create pfile='/tmp/init.ora' from spfile;
SQL> ho more /tmp/init.ora
SQL> shutdown immediate
SQL> startup pfile='/tmp/init.ora';
SQL> ho ls -l /home/db/oracle/oradata/db1/rspfile_db1
lrwxrwxrwx 1 oracle dba 17 Jun 08 2013 /home/db/oracle/oradata/db1/rspfile_db1 -> /dev/recsv01l3110
SQL> create spfile='/home/db/oracle/oradata/db1/rspfile_db1' from pfile;
SQL> shutdown immediate
$ mv spfiledb1.ora spfiledb1.ora_OLD
$ vi initdb1.ora
增加spfile="/home/db/oracle/oradata/db1/rspfile_db1"
SQL> startup
SQL> show parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /home/db/oracle/oradata/db1/rspfile_db1
【总结】
实施过程中,在用pfile启动实例后,尝试alter system set spfile 失败,报错信息"ORA-02095: specified initialization parameter cannot be modified".
问题关键是,用pfile启动后,没有spfile时,无需修改spfile参数,也无法修改。应删除spfile文件,将pfile内容写成spfile='xxxx'后,启动实例后,修改spfile才允许。