由一条日志警告所做的调优分析(r3笔记第40天)

这个案例发生有段时间了,但是今天无意中看到当时的邮件,感觉还是收益匪浅,看来还是细节决定成败啊。从一些日志或trace 文件中的警告信息中我们可以发掘出潜在的问题。 当时系统中的用户数很小,所以每天都能抽时间看看日志记录,看有没有明显的问题。结果在grep的时候发现trace文件中有一些警告记录。 当时的库是10gR2的库,现在已经升级到了11gR2. /xxxx/oracle/xxxxx/oradmp/udump/xxxxx01_ora_15070.trc Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options ORACLE_HOME = /opt/app/oracle/xxxxxx/product/10.2.0 System name: Linux Node name: xxxx Release: 2.6.18-308.el5 Version: #1 SMP Fri Jan 27 17:17:51 EST 2012 Machine: x86_64 Instance name: xxxxxx Redo thread mounted by this instance: 1 Oracle process number: 472 Unix process pid: 15070, image: oracle@xxxxx (TNS V1-V3) *** 2013-03-29 20:18:54.711 *** ACTION NAME:() 2013-03-29 20:18:54.707 *** MODULE NAME:(OGG-ECC_ARCG-GLOPEN_DATA_SOURCE) 2013-03-29 20:18:54.707 *** SERVICE NAME:(SYS$USERS) 2013-03-29 20:18:54.707 *** SESSION ID:(5029.3122) 2013-03-29 20:18:54.707 WARNING:Could not increase the asynch I/O limit to 224 for SQL direct I/O. It is set to 128 WARNING:Could not increase the asynch I/O limit to 256 for SQL direct I/O. It is set to 128 WARNING:Could not increase the asynch I/O limit to 224 for SQL direct I/O. It is set to 128 *** 2013-03-29 22:25:26.506 WARNING:Could not increase the asynch I/O limit to 224 for SQL direct I/O. It is set to 128 WARNING:Could not increase the asynch I/O limit to 256 for SQL direct I/O. It is set to 128 WARNING:Could not increase the asynch I/O limit to 256 for SQL direct I/O. It is set to 128 WARNING:Could not increase the asynch I/O limit to 288 for SQL direct I/O. It is set to 128 从警告的信息可以看出,和IO相关,可能是什么参数的设置出问题了。查看MOS 发现有一篇相关的文章。 Warning:Could Not Increase The Asynch I/O Limit To XX For Sql Direct I/O (Doc ID 1302633.1) 其中给出的solution如下:

[root@xyz ~]# cat /proc/sys/fs/aio-max-nr 65536

SOLUTION

The aio-max-size kernel parameter doesn't exist in the 2.6.x Linux kernels. This feature is now "automatic" in the 2.6.x kernel, based on the physical capabilities of the disk device driver. This should mean that the Linux Kernel is ready to perform ASYNC I/O. All install requirements should be met. To ensure ASYNC I/O can be performed by Oracle Database you need to verify or set the following parameters in the Database:

sql> alter system set disk_asynch_io=true scope=spfile; sql> alter system set filesystemio_options=setall scope=spfile;

Then shutdown and startup the database and check if the warning reappears. An HCVE report (refer to Note 250262.1) should report no remaining issues If the above doesn't resolve the problem, then increase fs.aio-max-nr 关于查看aio的内容可以使用如下的方式来查看。 cat /proc/sys/fs/aio-max-nr /sbin/sysctl -a |grep aio 当时得到的值是 fs.aio-max-nr = 65536 fs.aio-nr = 65472 可能一般来说问题处理到这个地方就告一段落了。 这个问题当时是叫给一个资深的专家来做的调优,他又要了一些其他的信息。 最后给出的建议如下: - Increase fs.aio-max-nr as advised in my initial e-mail to 3145728 - Change Oracle filesystemio_options to “SETALL” (enable both asynch and direct IO) Following is suggested: - VXFS – change mount options to: mincache=direct,convosync=direct (Must be done along with the change of the Oracle filesystemio_options) - Enable ODM Pending upon the VXFS version – and True VXFS license supporting ODM (should be by default with VXFS 5.X) Enable Veritas ODM - by doing “ln –s /opt/VRTSodm/lib64/libodm.so $ORACLE_HOME/lib/libodm10.so” - Memory As server has sufficient memory – consult with DBAs if it is worthwhile increasing Oracle cache - Power Consider disabling power management savings for better response / latency (BIOS level) - Disable C-State RH 5.X do not support C-State (BIOS level) Kernel parameters: vm.min_free_kbytes = 32768 vm.dirty_expire_centisecs = 500 vm.dirty_ratio = 15 vm.dirty_writeback_centisecs = 100 vm.swappiness = 0 vm.hugetlb_shm_group = <set to group id of user Oracle) vm.nr_hugepages = 16384 # set hugepages to 32 GB - if total of Oracle instances cache grows beyond must increase it accordingly it is 2 MB pages) # any increase requires a reboot !! 其中关于huge page的部分还是有点意思。其中关于设置的Hugepage数还可以通过一个脚本来计算。 当时看得云里雾里,详细的学习了一下关于hugepage的设置,还是有所收获。 其实在官方文档中已经有详细的描述。hugepage的配置可以参考文档。 http://docs.oracle.com/cd/E11882_01/server.112/e10839/appi_vlm.htm#UNXAR396 发现官方文档还是很有权威性和价值的。 所以问题的分析和解决思路还是最重要的,可能大多数时候碰到问题都是头疼医头,脚疼医脚。处理问题还是没有从整体的情况来做,以点带面,能够举一反三才是问题处理的高手。

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2014-10-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

11g Dataguard中的snapshot standby特性(r8笔记第49天)

11g中的ADG特性本身已经非常有特色,促使很多对于10g中不太灵便的备库升级到11g,对于DBA是一大福利,那么还有一个福利就是snapshot standb...

31250
来自专栏微信公众号:Java团长

详解Intellij IDEA搭建SpringBoot

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而...

75140
来自专栏蓝天

零停重启程序工具Huptime研究

零停重启目标程序,比如一个网络服务程序,不用丢失和中断任何消息实现重新启动,正在处理的消息也不会中断和丢失,重启的方法是给目标程序的进程发SIGHUP信号。...

9110
来自专栏杨建荣的学习笔记

一个Oracle bug的手工修复(r6笔记第59天)

在上周五的时候,本来一个例行巡检,想扩充一些表空间,结果弄巧成拙,因为一个drop datafile的操作直接导致了一主两备的两个备库MRP直接抛出了ORA-6...

29450
来自专栏菩提树下的杨过

CQRS框架:AxonFramework 之 Hello World

Command Query Responsibility Segregation,CQRS 这个架构好象最近博客园里讨论得比较多,有几篇园友的文章很有深度,推荐...

48270
来自专栏大大的微笑

深入理解JVM原理之编译openjdk7

Java虚拟机种类很多例如:HotSpot 丶 JRockit 丶 J9等 我们一般用的就是HotSpot,如果我们电脑上装了JDK,可以运行java -ver...

29490
来自专栏杨建荣的学习笔记

缓慢的update语句性能分析(r6笔记第61天)

最近处理一个问题的时候,先是收到DB time升高的报警,然后查看DB time的情况发现,已经有近1000%的负载了。 ? 带着好奇心想看看到底是什么样的...

30350
来自专栏Objective-C

iOS-安装和使用 CocoaPods

51270
来自专栏蓝天

Redis模块开发示例

实现一个Redis module,支持两个扩展命令: 1) 可同时对hash的多个field进行incr操作; 2) incrby同时设置一个key的过期时...

12730
来自专栏杨建荣的学习笔记

关于exp statistics的问题和简单测试(82天)

在数据导出的时候,可能会碰到EXP-00091: Exporting questionable statistics.的问题,有时候会让人有点摸不到头脑,不知道...

23780

扫码关注云+社区

领取腾讯云代金券