Linux平台下如何监控Oracle数据库的性能

2014-11-24 17:17:24 · 作者: · 浏览: 0

本文试验及问题取证的环境:


RedHat6.2 + Oracle8.1.6.1.0


RedHat7.1 Web server(Apache1.3.20+PHP4.06) + Oracle8.1.7.0.0


为方便问题的讨论, 应用系统已做简化, 竞争方仅包括一个Pro*C的daemon程序作为C/S模式的服务端, 和由Apache+PHP所支持的WEB网站业务。


首先, 最简单的情况莫过于单个SQL语句的分析, SQL语句的优化也是数据库优化的一个最直接最立竿见影的因素。SQL语句的性能监控从监控工具来说大致可分为由高级语言提供和由Oracle本身提供, 高级语言以典型的应用C 语言和WEB开发语言PHP为例, C语言中可以用gettimeofday函数来在某一数据库操作之前和之后分别获取一个时间值, 将两个时间值之差做为衡量该数据库操作的效率, 在PHP中, 也可以用gettimeofday, 操作方法当然与C语言中有所不同。当然, PHP中也有其它一些函数可以达到同样的时间精度, 关于时间精度的考虑, 不能简单以大小衡量微秒级的时间数值, 因为时钟中断的时间间隔从根本上决定了时间计算所能达到的精度, 此外,操作系统本身对进程的时间片分配, 及进程切换的开销等因素也在一定程度上影响时间数据的意义。所以, 以下时间的计算最理想的情况是对同一操作在尽可能避免缓存的情况下进行多次的循环操作,取总的时间值加以平均, 从而得到比较接近真实情况的时间值。C语言的例子: