我的团队和我正在帮助客户对他们今天的Oracle 11g R2(11.2.0.4)数据库进行解决问题,我们注意到它在90秒和120秒之间完成了检查点。任何了解Oracle的任何人都知道这是数据库等待在线切换在线重做日志文件并继续处理事务时的永恒。这导致了对客户的大量性能不理解,这是可以理解的。但它并没有花很长时间弄清楚问题是什么并解决它。字面上更改数据库中的单个参数,并将实例Turbo收费的性能重新启动超过10倍。
首先让我们掩盖一些问题的一些症状,并在我为您提供我们用于解决性能问题的参数之前给您一些背景。另请注意,这与底层基础架构无关,它纯粹是一个数据库级别设置。在Oracle 12c中不会发生此问题。
麻烦的第一个迹象是数据负载花了很长时间,并且存储延迟似乎非常高。然后,AWR报告中有一个条目,说76%的数据库等待时间是由日志文件切换(CheckPoint不完整)引起的。检查点本身花了超过90秒才能完成。在此期间,数据库有效暂停并没有处理任何事务,因为它超出了在线重做日志文件空间,直到检查点完成。在数据负载和性能测试期间,我们注意到数据库磁盘只有一个或两个优秀的IO。
那是什么造成这个问题?即使安装了正确的库,也不会配置数据库以使用异步或直接IO。我根据非常低的IO和少量IO并发性疑似这一点。要确认此怀疑,我们将从SQLPlus中ran显示参数filesystemio_options。输出如下:
名称类型值----------------------------------------------------------------- Filesystemio_Options字符串不幸运的是,这对此相当直接。使用命令ALTER SYSTEM SET FILESYSTEMIO_OPTIONS = setall scope = spfile;然后通过关闭并重新启动实例(您计划这一段时间用于生产数据库的维护期间)。
在进行这种改变之后,IO延迟显着下降,IOPS增加,IO并发增加,性能比以前更好。客户非常高兴,同时我们必须展示我们的支持程度。这是一个解决这个问题的团队努力,一旦客户与我们联系,它就并不需要我们很长时间来解决它。
最后一个词虽然Oracle 11g需要这种简单的变化,但12C不需要它。如果它自动在操作系统中可用,则Oracle Database 12c将使用异步或直接IO。
这最初已发布到LongWhiteClouds.com,并通过许可复制。原文可以在http://longwhiteclouds.com/2014/11/21/turbo-charge-oracle-database-io-performance/找到。