操作系统是CentOS 5.11

数据库 10.2.0.5.0

晚上查看数据库,发现数据库报错查看相关的trace文件内容如下:

*** SERVICE NAME:(SYS$BACKGROUND) 2017-12-23 20:48:16.958
*** SESSION ID:(363.1) 2017-12-23 20:48:16.958
*** 2017-12-23 20:48:16.958
Start recovery for domain 0, valid = 0, flags = 0x1
ORA-27090: Unable to reserve kernel resources for asynchronous disk I/O
Linux-x86_64 Error: 4: Interrupted system call
Additional information: 3
Additional information: 6
Additional information: 65536
*** 2017-12-23 20:48:17.056
Warning: recovery process cannot use async I/O
*** 2017-12-23 20:48:17.220
KCRP: blocks claimed = 2, eliminated = 0
----- Recovery Hash Table Statistics ---------
Hash table buckets = 131072
Longest hash chain = 1
Average hash chain = 2/2 = 1.0
Max compares per lookup = 0
Avg compares per lookup = 0/2 = 0.0
----------------------------------------------
ORA-27090: Unable to reserve kernel resources for asynchronous disk I/O
Linux-x86_64 Error: 4: Interrupted system call
Additional information: 3
Additional information: 128
Additional information: 65536
----- Recovery Hash Table Statistics -------:
Hash table buckets = 131072
Longest hash chain = 1
Average hash chain = 2/2 = 1.0
Max compares per lookup = 1
Avg compares per lookup = 4/4 = 1.0
----------------------------------------------

在网上找了很多帖子,终于找到了一个很有用的帖子:

转自http://blog.csdn.net/hemiao1987/article/details/46044049

内容如下:

数据库从库报错:

Errors in file /home/oracle/admin/emspda/bdump/emspda2_p003_23499.trc:
ORA-27090: Unable to reserve kernel resources for asynchronous disk I/O
Linux-x86_64 Error: 4: Interrupted system call
Additional information: 3
Additional information: 128
Additional information: 65536

通过资料查询发现是因为/etc/sysctl.conf里面的fs.aio-max-nr设置的问题,在redhat 5版本上,这个值默认是65536

http://docs.oracle.com/cd/E11882_01/install.112/e24326/toc.htm#BHCCADGD

此文章中提到,aio-max-nr 的值不应小于1048576。

https://support.oracle.com/epmos/faces/ui/km/SearchDocDisplay.jspx?_afrLoop=433636510624081&type=DOCUMENT&id=579108.1&displayIndex=1&_afrWindowMode=0&_adf.ctrl-state=pxg2yomrf_157

这篇oracle的文章提到fs.aio-max-nr应设置为3145728。为了避免出现问题,将这一参数设置为3145728(反正大了没事。。)

proc 文件系统包含了两个虚拟文件,它们可以用来对异步 I/O 的性能进行优化:

  • /proc/sys/fs/aio-nr 文件提供了系统范围异步 I/O 请求现在的数目。

  • /proc/sys/fs/aio-max-nr 文件是所允许的并发请求的最大个数

在一个程序中如果涉及到磁盘的IO操作时,有两种情况
1. 程序等待IO操作完成,CPU再接下来处理程序的其他部分(等待IO的时间段内,CPU处于Idle Waiting状态)。
2. 程序不等待IO操作完成,允许CPU处理接下来的其他任务(或者理解为允许CPU处理接下来的不依赖于IO完成的任务)。
显然,第一种情况,CPU的资源白白的浪费了,也就是同步IO。第二种情况更有利于CPU的充分利用,这就是异步IO(asynchronous IO)

我们知道aio-nr是所有当前活动的异步IO进程上下文的总和,其值最多不能超过aio-max-nr的设定值。并且数据库是在机房意外断电的情况下突然关闭的,关闭的一瞬间有大量的事务正在运行,所以重新启动的时候必然有大量的回滚与已提交但没有写入到数据文件的数据要开始写入,这时候的IO量是非常大的,由于启用了异步IO,此时大量的上下文切换达到了操作系统设定的最大值,于是oracle就停止响应了。查询metalink了解到oracle已证实这是一个BUG,官方建议fs.aio-max-nr的值设置为1M或以上可以解决此问题。

解决办法:

 echo "fs.aio-max-nr = 3145728" >> /etc/sysctl.conf

重启oracle服务

参考连接

http://blog.csdn.net/lordcoohoo/article/details/8135152

【ORA】ORA-27090: Unable to reserve kernel resources for asynchronous disk I/O的更多相关文章

  1. ORA-27090: Unable to reserve kernel resources for asynchronous disk I/O

    2019-08-19T09:27:33.225584+08:00Slave encountered ORA-27090 exception during crash recoveryRecovery ...

  2. 【Maven】在pom.xml文件中使用resources插件的小作用

    在spring boot创建web项目打包为jar包的过程中,是不会把webapp目录下的页面也打包进去的,这个时候接触到了maven的 resources插件. ================== ...

  3. 【Oracle】ORA 01810 格式代码出现两次-转

    一.Oracle中使用to_date()时格式化日期需要注意格式码 如:select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mm:ss') fr ...

  4. 【SQLYOG】SSH ERROR:UNABLE TO OPEN CONNECTION:GETHOSTBYNAME:UNKNOWN ERROR牵引出来的一系列问题

    出现这个问题很蹊跷,SQLyog管理过一二十台的mysql服务器或者vps,连接一直没有问题,各种服务商的都没问题,也包括阿里云的.可昨天偏偏一台阿里云的服务器本地通过SQLyog去连接它的时候报这样 ...

  5. 【Android】Genymotion 模拟器 Unable to create virtual device

    安装 Genymotion 模拟器的时候报了这个错误,如下: 后来找到了解决方法,见下图: 在 Setting -> Network, 勾选 Use HTTP Proxy, HTTP Proxy ...

  6. 【linux】CentOS: Sudo: unable to initialize policy plugin

    背景: 在centos7 下 使用sudo 命令对www用户生成ssh秘钥 .报错 解决办法: yum remove sudo yum install sudo 在执行就ok了

  7. 【mongo】Can't take a write lock while out of disk space错误

    今天遇到了这个错误,各种无法操作.找了很久的方案,都没用.最终发现,原来是我虚拟机硬盘满了......清除了些没用的东西,就恢复了.

  8. 【练习】sqlnet.ora

    在SQLNET.ora文件中设置以下参数可以实现IP访问限制: $ pwd/u01/app/oracle/product/10.2.0/db_1/network/admin$ vi sqlnet.or ...

  9. 【ORA】ORA-00371: not enough shared pool memory

    今天rac中有一个节点asm实例起不来包了ora-000371的错误,错误贴在下面: [oracle@rac2 dbs]$ srvctl start asm -n rac2 PRKS-1009 : F ...

随机推荐

  1. MySQL PXC集群安装配置

    1.关闭防火墙 [root@node04 ~]#systemctl disable firewalld [root@node04 ~]#systemctl stop firewalld [root@n ...

  2. rhel 7 multipath服务启动报错

    配置多路径服务,启动多路径multipathd.service的时候出现下面报错: [root@rac2 ~]# systemctl status multipathd.service multipa ...

  3. hadoop_MapReduce_idea上打jar包,在虚拟机上运行

    打包前的介绍和准备工作 指定主类可以在运行jar包的时候不用输入要运行哪一个类,直接就可以运行了 指定主类 编辑jar 的信息 修改jar包的名称 build Complete!!! MapReduc ...

  4. js上 十三、函数初步-2

    13-1.函数的参数 函数的本质: ü 函数的作用,代码重用,编写一个函数,就是为了解决一类问题. ü 函数每次调用,都有一个结果,那么结果和什么相关呢?y = x , y = x2,y = sin( ...

  5. QEMU网络模式(一)——bridge

    网络配置 QEMU支持的网络模式 qemu-kvm主要向客户机提供了4种不同模式的网络. 1)基于网桥(bridge)的虚拟网卡; 2)基于NAT的虚拟网络 3)QEMU内置的用户模式网络(user ...

  6. NET 5 爬虫框架/抓取数据

    爬虫大家或多或少的都应该接触过的,爬虫有风险,抓数需谨慎.  爬虫有的是抓请求,有的是抓网页再解析 本着研究学习的目的,记录一下在 .NET Core 下抓取数据的实际案例.爬虫代码一般具有时效性,当 ...

  7. 现代JavaScript—ES6+中的Imports,Exports,Let,Const和Promise

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者.原文出处:https://www.freecodecamp.org/news/learn-modern-jav ...

  8. Selenium多浏览器测试

    在浏览器的兼容性测试中,会测试产品在不同浏览器上的兼容性,比较主流的浏览器有IE.Firefox.Chrome,Opera,Safari等.还有其它如360.QQ.遨游.百度等浏览器都是基于IE或者c ...

  9. Flash Player的终章——赠予它的挽歌

    本文由葡萄城技术团队原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 12月28日消息,微软已经确认Windows 10在下一次更新时将自动删除F ...

  10. [LeetCode]501. Find Mode in Binary Search Tree二叉搜索树寻找众数

    这次是二叉搜索树的遍历 感觉只要和二叉搜索树的题目,都要用到一个重要性质: 中序遍历二叉搜索树的结果是一个递增序列: 而且要注意,在递归遍历树的时候,有些参数如果是要随递归不断更新(也就是如果递归返回 ...