数据库巡检日志发现最近ASM频繁报“ORA-27090: Unable to reserve kernel resources for asynchronous disk I/O”错误。

查询网上及MOS资料,显示ORA-27090: Unable to reserve kernel resources for asynchronous disk I/O和操作系统aio设置相关。
根据MOS文章 ORA-27090 - Unable to Reserve Kernel Resources for Asynchronous Disk I/O (Doc ID 579108.1)显示因为aio-max-nr设置过低导致。
CAUSE
The “aio-max-nr” kernel limit is too low.
SOLUTION
The “aio-max-nr” kernel limit should be adjusted according to Oracle recommendations which are available in this document:
查看配置和使用情况:

发现已经使用的异步I/O数量已经等于设置的最大数量。因此这是一个导致报错的原因。
根据oracle官方文档 (Doc ID 579108.1)的建议,我们需要将数据库中的最大并行异步io的数量限制上调到3145728( aio-max-nr= 1048576)。由于该ORA错误在极高的io请求系统中才会爆发,很少有客户能达到这么高且频繁的io请求数量。
fs.aio-max-nr 的计算方式:
oracle: sqlplus / as sysdba
SQL> show parameter processes
processes integer 4000
3000*4096=16384000
asm: gird用户下: sqlplus / as sysasm
SQL> show parameter processes
processes integer 3240
2600*4096=13271040
fs.aio-max-nr = ORACLE+ASC=29655040
在root用户下修改Linux主机aio参数:
vim /etc/sysctl.conf
fs.aio-max-nr = 29655040
使修改生效:
sysctl -p
---验证是否生效
--GRID 用户执行
cluvfy comp sys -n all -p crs -verbose
--输出结果如下
Check: Kernel parameter for "aio-max-nr"
Node Name Current Configured Required Status Comment
---------------- ------------ ------------ ------------ ------------ ------------
test2 29655040 29655040 1048576 passed
test1 29655040 29655040 1048576 passed
Result: Kernel parameter check passed for "aio-max-nr"




