近期的alert日志中碰到了ORA-27090的錯誤信息。其錯誤提示為Unable to reserve kernel resources for asynchronous disk I/O。依據這個提示來看是跟異步I/O相關的內核參數問題。
以下是這個問題的描寫敘述與解決。
1、故障錯誤信息
Wed Sep 10 09:58:17 CST 2014
Errors in file /u01/app/oracle/admin/orclls/bdump/orclls_p000_47020.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: 65536
Wed Sep 10 09:58:17 CST 2014
Errors in file /u01/app/oracle/admin/orclls/bdump/orclls_p002_47024.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: 65536
2、故障分析
#調用oerr,沒有獲得比較有價值的信息,例如以下:
suse11b:oracle:orcl102 > oerr ora 27090
27090, 00000, "Unable to reserve kernel resources for asynchronous disk I/O"
// *Cause: The system call to reserve kernel resources for asynchronous I/O
// has failed.
// *Action: Check errno
#進一步查看trace文件。注,當前數據庫版本號為10.2.0.5。OS為suse 11 sp3
suse11a:oracle:orcl101 > more /u01/app/oracle/admin/orclls/bdump/orclls_p002_47024.trc
/u01/app/oracle/admin/orclls/bdump/orclls_p002_47024.trc
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
ORACLE_HOME = /u01/app/oracle/product/10.2/db_1
System name: Linux
Node name: suse11a
Release: 3.0.76-0.11-default
Version: #1 SMP Fri Jun 14 08:21:43 UTC 2013 (ccab990)
Machine: x86_64
Instance name: orclls
Redo thread mounted by this instance: 1
Oracle process number: 35
Unix process pid: 47024, image: oracle@suse11a (P002)
*** SERVICE NAME:() 2014-09-10 09:58:17.159
*** SESSION ID:(1072.1) 2014-09-10 09:58:17.159
*** 2014-09-10 09:58:17.159
KCRP: blocks claimed = 0, eliminated = 0
----- Recovery Hash Table Statistics ---------
Hash table buckets = 32768
Longest hash chain = 0
Average hash chain = 0/0 = 0.0
Max compares per lookup = 0
Avg compares per lookup = 0/0 = 0.0
----------------------------------------------
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: 65536
----- Recovery Hash Table Statistics ---------
Hash table buckets = 32768
Longest hash chain = 0
Average hash chain = 0/0 = 0.0
Max compares per lookup = 0
Avg compares per lookup = 0/0 = 0.0
----------------------------------------------
#從trace文件里也沒有獲得比較有價值的信息
3、故障解決
#依據ORA-27090: MESSAGE 27090 NOT FOUND; (文檔 ID 579108.1)文檔。我們改動內核參數fs.aio-max-nr
#因為此數據庫為RAC環境下,因此同一時候調整了2個節點,以下為調整后的情形。
suse11a:~ # grep max-nr /etc/sysctl.conf
#fs.aio-max-nr = 1048576
fs.aio-max-nr = 3145728
suse11b:~ # grep max-nr /etc/sysctl.conf
#aio-max-nr = 1048576
fs.aio-max-nr = 3145728
suse11a:~ # sysctl -p
suse11b:~ # sysctl -p
#配置完成后能夠通過cluvy校驗
#幾日后觀察alert日志,未發現該類錯誤。
Check: Kernel parameter for "aio-max-nr"
Node Name Current Configured Required Status Comment
---------------- ------------ ------------ ------------ ------------ ------------
suse11a 3145728 3145728 1048576 passed
suse11b 3145728 3145728 1048576 passed
Result: Kernel parameter check passed for "aio-max-nr"