RDBMS :11.2.0.4
参考文档
ORA-27090 - Unable to Reserve Kernel Resources for Asynchronous Disk I/O (Doc ID 579108.1)
What value should kernel parameter AIO-MAX-NR be set to ? (Doc ID 2229798.1)
Receiving ASM traces for errors: ORA-27090, LINUX-X86_64 ERROR: 17: FILE EXISTS (Doc ID 1551921.1)
在检查数据库的日志时,发现asm的log中有以下告警
Sat Nov 26 09:01:08 2022
Errors in file /u01/app/gridbase/diag/asm/+asm/+ASM1/trace/+ASM1_ora_64390.trc:
ORA-27090: Unable to reserve kernel resources for asynchronous disk I/O
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Additional information: 128
Additional information: 436930534
Errors in file /u01/app/gridbase/diag/asm/+asm/+ASM1/trace/+ASM1_ora_64390.trc:
ORA-27090: Unable to reserve kernel resources for asynchronous disk I/O
Linux-x86_64 Error: 11: Resource temporarily unavailable
Additional information: 3
Additional information: 128
Sat Nov 26 09:01:08 2022
从trc文件中看不出来什么。另外在数据库的alert log中无告警。
以上三个MOS文档,都与参数fs.aio-max-nr有关,Oracle建议设置为fs.aio-max-nr= 3145728 ,而不是官方DOC中说的1048576.(MOS文档中,说官方的DOC里面,是个错误)
MOS中的说明:
NOTE:
Per bug Bug 13554729 - CORRECT FS.AIO-MAX-NR = 3145728
the published limit in the Oracle Documentation at Oracle® Database Quick Installation Guide is incorrect.
The Oracle documentation lists the minimum value as the max value.
另一个MOS文档中的说明:
We recommend setting aio-max-nr to 3145728 in case that ORA-27090 occurred.
The below document links provide the minimum values required for a good install and basic usage.
How to Complete Preinstallation Tasks Manually
Oracle® Database Quick Installation Guide
All these parameters are tunable, as per disclaimer:
The kernel parameter and shell limit values shown in the following section are minimum values only. For production database systems, Oracle recommends that you tune these values to optimize the performance of the system. See the operating system documentation for more information about tuning kernel parameters.
The minimum value suggested as per Oracle® Database Quick Installation Guide for aio-max-nr is 1048576 .
We recommend setting aio-max-nr to 3145728 in case that ORA-27090 occurred.
And the maximum of aio-max-nr parameter can be calculated by -
aio-max-nr =no of process per DB * no of databases * 4096
After deriving the value using this formula , you should still monitor the /proc/sys/fs/aio-nr value and also monitor I/O loading.
Points to know -
1) Number of processes per database is not background server process number, it's the number of background server process + user process.
2) Parameter aio-max-nr is a limitation of aio-nr, no impact was reported if you set it too high. But we should still monitor /proc/sys/fs/aio-nr value and tune this value.
设置后,从下面的内容,可以看到,原来设置的值太小。
[root@testdb01 ~]# cat /proc/sys/fs/aio-nr
1050112 <<<<< 这里,已经超过了原来的1048576
[root@hypdb01 ~]# cat /proc/sys/fs/aio-max-nr
3145728
[root@testdb01 ~]#
END。
另外,补充一个exadata中的参数设置,oracle已经将该参数默认设置了3145728
########### END DO NOT REMOVE Added by Oracle Exadata ###########
########### BEGIN DO NOT REMOVE Added by Oracle Exadata ###################### END DO NOT REMOVE Added by Oracle Exadata ###########
########### BEGIN DO NOT REMOVE Added by Oracle Exadata ###########
# 26540521 vm.min_free_kbytes to 1024MB# 18647941 ARP_ANNOUNCE=2 NEEDS TO ENSURE CORRECT ARP UPDATE
net.ipv4.conf.ib0.arp_announce = 2
net.ipv4.conf.ib1.arp_announce = 2########### END DO NOT REMOVE Added by Oracle Exadata ###########
########### BEGIN DO NOT REMOVE Added by Oracle Exadata ###################### END DO NOT REMOVE Added by Oracle Exadata ###########
########### BEGIN DO NOT REMOVE Added by Oracle Exadata ###################### END DO NOT REMOVE Added by Oracle Exadata ###########
########### BEGIN DO NOT REMOVE Added by Oracle Exadata ###########
fs.file-max = 13631488
fs.aio-max-nr = 3145728
kernel.pid_max = 400000
kernel.unknown_nmi_panic = 1
kernel.nmi_watchdog = 0
kernel.watchdog_thresh = 30
kernel.printk = 4 4 1 7
kernel.randomize_va_space = 2
# 30681435
vm.min_free_kbytes = 2097152
net.core.rmem_default = 4194304
net.core.wmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_max = 2097152########### END DO NOT REMOVE Added by Oracle Exadata ###########
########### BEGIN DO NOT REMOVE Added by Oracle Exadata ###################### END DO NOT REMOVE Added by Oracle Exadata ###########
########### BEGIN DO NOT REMOVE Added by Oracle Exadata ###########
END