早上巡检realsync时发现数据库宕掉了,查看alert发现如下报错:
Thu Dec 18 22:26:18 2014
KCF: read, write or open error, block=0x72d online=1
file=1 ‘/oradata/****/temp01.dbf‘
error=27063 txt: ‘IBM AIX RISC System/6000 Error: 28: No space left on device
Additional information: -1
Additional information: 131072‘
Errors in file /u01/app/diag/rdbms/**/***/trace/sjjz_dbw1_418098.trc:
Errors in file /u01/app/diag/rdbms/**/**/trace/sjjz_dbw1_418098.trc:
ORA-63999: data file suffered media failure
ORA-01114: IO error writing block to file 1025 (block # 1837)
ORA-01110: data file 1025: ‘/oradata/**/temp01.dbf‘
ORA-27063: number of bytes read/written is incorrect
IBM AIX RISC System/6000 Error: 28: No space left on device
Additional information: -1
Additional information: 131072
DBW1 (ospid: 418098): terminating the instance due to error 63999
从报错No space left on device,怀疑系空间不足导致的,df查看果然/oradata文件系统剩余空间为0,占用率为100%;
进一步查看temp01.dbf数据库文件属性:
1 /oradata/sjjz/temp01.dbf 1 TEMP 30408704 3712 ONLINE 1 YES 34359721984 4194302 80 29360128 3584
autoextensible为yes,即可以自动对数据文件进行扩展,最大空间为34359721984,31GB。
当io写入时发现已经没有空间写入了,instance abort!
在bing中查询这个ora-63999,果然发现oracle 11g存在这个问题,是由一个隐藏的启动参数决定的,
隐藏参数‘_datafile_write_errors_crash_instance’是在Oracle 11.2.0.1开始导入的,
主要的机能是在,数据文件(sysytem以外表空间)I/O读写错误被发现时,对实例的down进行管理。
Oracle 11.2.0.1 的初始值是
_datafile_write_errors_crash_instance = FALSE
数据文件(sysytem以外表空间)I/O读写错误被发现时,在归档模式下,发生错误的数据文件
被OFFLINE,实例不会down。
Oracle 11.2.0.2开始初始值变成TRUE
_datafile_write_errors_crash_instance = TRUE
因为I/O错误,数据文件读写失败被发现时,ORA-63999错误出力,实例down。
后又查看一篇文章:http://blog.itpub.net/23718752/viewspace-1122411
这个作者说这是oracle11g一个bug,从11.2.0.2就解决了,但是我这个系统是oracle 11.2.0.4,按照文章作者的说明从11.2.0.2在归档模式下不会出现instance abort,我这个数据库是非归档模式的,这个就需要验证下了,有时间在验证下,到时把结果在补充上来。