最近数据库出现了如下的错误直接导致数据库宕机:
ORA-00202: controlfile: '/dev/rcontrol1_LV'
ORA-27091: skgfqio: unable to queue I/O
ORA-27072: skgfdisp: I/O error
IBM AIX RISC System/6000 Error: 12: Not enough space
Additional information: 35
数据库环境:oracle 9.2.0.5
操作系统:aix5300-05-06
先前类似错误也在此节点上出现过,那时是将v_pinshm设置为1(固定内存)后出现的,后来将v_pinshm重设为0,而目前该系统上v_pinshm仍然为1,应该是上次修改时没有设置重启后的值也为0,因此在前两天维护完系统重启后,该值又恢复为1,于是就又出现了上面的问题,因此最终解决方法如下:
vmo -p -o v_pinshm=0 -- 恢复v_pinshm为默认值
然后启动数据库
总结:看来在aix下将v_pinshm设置为1还是有一定风险的,特别时当sga_max_size设置过大时,数据库pin住了太多的内存,最终使得其他进程申请内存失败,在本例中应该是异步IO无法申请更多的内存,使得数据库控制文件无法读取,从而导致数据库宕机。因此,如果要将v_pinshm设置为1,sga_max_size不能设置太大,其实如果正确设置其他几个参数,如:lru_file_repage、minperm、maxperm,也可以保证sga的内存不被交换到换页空间中,这样即使在系统出现问题的时候,也不会使得数据库宕机,只是数据库在性能上会有一定的影响。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22170380/viewspace-707222/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22170380/viewspace-707222/