Lab128
 高级Oracle®数据库调优及监控工具
128 咨询服务 
深圳, 中国  

Lab128. 软件概述.

性能调整及故障排查技术

image

Lab128支持三种主要的性能故障排查和调优技术:

  • 基于用户相应时间的调优 (ASH);
  • 先进的高频SQL统计数据调优(FSSS);
  • 系统范围的调优

下面对三种方式做进一步了解.

基于响应时间的调优

数据库系统的响应时间是用户提交一个SQL语句并接收到查询结果所经历的时间间隔. 对最终用户来说,响应时间是最重要的衡量指标,因为它是数据库性能的一个直观体现. 基于响应时间的调优目的在于提高用户操作数据库时返回查询结果集的速度.
使用Oracle等待事件接口(OWI)识别对系统响应时间影响最大的SQL语句, 对这些SQL语句在各个等待事件上所耗费的时间进行分析,找出系统瓶颈,根据结果进行进一步调优. 这个过程可能要重复几次,直到达到一个可以接受的目标. 这在Oracle 10g 中也被称为基于活动会话历史(ASH)的优化方法 (更详细信息). .

基于SQL语句性能统计数据的调优

这是一种新的调优方法, 是通过获取视图v$sql(在10g中是v$sqlstats)的快照来实现的.据我们所知目前还没有其它的工具可以实现这种技术; 任何时间段的快照差值都可以被提取分析, 这种技术在现实中具有很高的精确性及可用性; 它是活动会话历史统计的一个变通的方法, 对于需要快速响应的OLTP系统作用非常突出,而ASH对类似系统效率不高; SQL语句统计可以配合ASH使用极大的提高分析问题的效率. 也许您已经知道Oracle 10g中的AWR可以实现类似的功能, 每小时对视图V$SQL提取快照进行分析. 但在Lab128中缺省会每15秒钟提取v$sqlstats快照或每30秒钟提取v$sql快照, 具有更高的精度. 使用Lab128可以更精确的持续监控各个SQL语句的性能统计数据; 更容易的发现在系统出现CPU或磁盘及其它资源(AWR不会统计到的)出现瓶颈时关键的SQL语句。

收集SQL统计数据有很多挑战: 数据量的大小,SQL语句在系统中存在的时长,数据的解析和呈现方式。我们曾经联系Oracle官方是否会采用这个方案,他们的答案是这样做系统负载太高。幸运的是虽然这很困难但通过优秀的压缩和调整算法还是可以实现的。现在你可以通过Lab128使用这项最具前景的调优技术(请参考: "Oracle Tuning Using Frequent SQL Area Statistics Snapshots")

系统级别的调优

是基于对Oracle系统性能统计数据进行的,这是一种比较传统的系统性能调整方法, 在某些情况下不一定有效,比如通过统计数据发现的占用资源较高的SQL并不足以反映系统性能下降的原因;另一方面在某些情况下, 不同的SQL语句对系统响应时间有相同的影响,或者系统的性能问题影响了许多用户的正常使用,那么问题根源可能是系统级别的(比如某些系统参数设置过小).系统性能统计数据会暴露这类问题,可以据此进行调整.

Lab128支持所有以上介绍的数据库系统调优方法. Lab128快速提取由系统OWI和性能视图中收集的数据,信息被采集和组合成各种图形和图表, 提供直观和全面的Oracle性能的分析, 包括实时的和历史的数据. 对了, 我们已经提到过这些高级的调优技术也能使用在较早的8i/9i版本上吗?

全面稳定的Oracle性能数据采集.

Oracle调优和监控是以反映数据库性能数据的V$视图为基础的. 由于绝大多数的V$视图是累加值, 不太可能仅仅通过取得一次快照数据得到数据库系统的当前运行状态.取各个快照之间的差值才能反映快照之间数据库的活动状况; 通过采集一定时间间隔内的一系列快照, 我们可以得到这段时间内Oracle远行状况的动态变化.

以一定时间间隔提取的快照被称为时序快照.提取快照的时间间隔越短,所反映的Oracle的各项等待事件的情况就越精确,时序快照的采集率越高,时间精度就越高,我们的分析结果就会越精确. 事实上每次快照的提取都会对所监控的数据库系统产生一定的影响.尤其对Oracle,对V$视图的查询占用一定的系统资源.

另一个考虑因素是需要提取的统计数据的数量和统计指标.传统的方法是只提取最重要的几个视图,如 v$sysstat, v$system_event等. 那么除了这些统计数据以外, 还有那些需要被采集呢? 根据问题的性质和范围, 很多工具软件的手册上都会列明最重要的统计数据. 但是如果问题的性质和范围不确定呢? 为什么不收集所有可用的数据呢?

这样两个因素-采集什么以及采集频率-经常是许多Oracle数据库监控产品需要考虑去折中的问题焦点; Lab128所采用的方法是非常独特的: 它采集所有Oracle的各个V$视图所收集的所有统计数据, v$sysstat, v$system_event, v$filestat, v$rollstat, v$latch, 以及更多其他视图; 一共有1000多个统计数据需要跟踪, 而且有些还存在多个值(如v$system_event, v$latch, v$filestat以及其他一些视图中的数据). Lab128的另外一个特点是6-12秒的高数据分析频率.数据分析频率是受限于查询V$视图对系统的性能影响. 6-12秒的数据分析频率是比较理想的值, 对被监控系统性能影响很小. 为了 减少这方面的影响, Lab128可以自动降低分析频率.

Lab128 将采集到的数据压缩后存放在由一块客户端内存区域组成的数据库中. 在缺省的情况下,Lab128在自有的内存数据库中为每一个实例分配4M的空间, 这个大小可以存储约10个小时的统计数据, 包括超过1000个视图, 以6秒为间隔的分析频率. 现在一般的个人电脑都配置有256M以上的内存, 建议增加这个缺省值. 例如设置为100M, 则可以保留大概一周的统计数据.,约有500万条记录, 以64位精度存储, 能够即时提取和分析. 所有这些都需要有非常高效的压缩技术:Lab128使用独有的无损压缩算法, 提供极高的压缩率及高速的随机数据访问.

活动会话历史 (ASH) 数据采集.

基于响应时间的调优使用Oracle等待事件接口(OWI)- v$system_event, v$session_event, v$session_wait, v$event_name 等视图. Oracle 10g 扩展了OWI, 将v$session_wait 并入到v$session, 增加了v$active_session_history视图. 强调基于OWI调优方法的重要性.更准确地说, v$active_session_history是一系列v$session视图快照集, 针对系统中的活动进程,以一定的时间间隔采集而得到; Lab128使用类试的采集方法, 虽然不是直接基于v$active_session_history视图, 所以与早期版本兼容. 这里请注意 v$active_session_history是Oracle 10g Diagnostic Pack 的一部分, 需要购买ODP 使用版权. 因此Lab128可以节省使用ASH的版权费用而实现了同样的功能.

ASH数据采集完成后, Lab128通过基于图形界面的进程浏览器集成了系统级别的等待事件信息以及ASH统计数据. 你可以很容易的识别在任何时间段内数据库资源的使用瓶颈, 最耗时的SQL语句, 不同等待事件的细节,SQL语句的文本及其他相关详细信息都会直接显示在工作窗口中.

SQL性能数据采集.

基于SQL语句性能统计数据的调优是建立于对视图v$sql的快照之上的。Oracle 10g Release 2 引入另一个更具扩展性的视图v$sqlstats其可能在将来取代v$sql。v$sqlstats包含最后一行更改的时间标记使得增量查询成为可能并进一步减少网络流量。SQL性能数据的采集有很多挑战:数据量的大小,SQL语句驻留在SQL Aera的时间长短,采集数据的处理和展现等。当我们咨询Oracle公司是否有计划将这一方法集成到数据库时,得到的回答是这样做代价会非常高昂。当然,不是不可能。高比率的数据压缩以及灵活的算法可以实现这个目标。通过Lab128您现在可以使用这项技术,并且由于它的高效性,这将会是未来Oracle调优最重要的方法。

对Oracle性能数据的分析提供空前的灵活性.

原始数据不经过预处理, 量化, 以及可视化是没有实际意义的.Lab128完成这几项工作的同时, 让使用者可以定义和改变数据处理过程的关键特性. 要了解这一点, 先看一下原始性能数据处理的过程:

- 因为查询时的响应时间问题, 要以精确的时间间隔收集连续的快照是非常困难的原始数据需要被处理成以’标准’时间间隔表现的形式, 统计数据被’标准’化后, 有助于 快照之间的对比性.

- 就如先前提到过的,大部分Oracle的V$视图提供的是累计值, 提取的快照需要被及时分类及处理.

- 许多性能指标如Buffer Hit ratio是从不同的统计数据中得来的,因此这些快照之间必须进行数学计算. 因为Lab128使用内存数据库, 通过特殊的语法访问内存数据, 并定义相关算法.用户可以检查对一个特殊的指标使用了什么样的计算方法, 通过定义不同计算方法用户也可以定义自己的指标 .

- Lab128 有很多预先定义的图表帮助分析不同类型的性能数据,并进行相关比较.用户也可以定义自己的统计图表,而不使用系统预定义的, 目前没有其他的Oracle工具提供这样的灵活性.

通过直观的用户界面提供先进的实时监控功能.

了解Oracle系统过去的远行状况是很重要的,同样重要的是清楚系统当前运行状态和正在进行的工作.Lab128跟踪Oracle系统的最新状态, 以一种智能的方式仅对用户当前可见的部分进行刷新. 通过使用这种技术,Lab128以一种低成本的方式提供了丰富的图形界面;.当用户切换到新的工作区时,相关的详细信息马上被刷新.Lab128的开发团队认为应用程序的可用性与方便性与它设计上的先进性同样重要.软件使用困难,就很少有人会考虑使用它.用户界面大量使用hotlinks及drill-down技术使仅需要几次鼠标点击即可得到最复杂的细节. 这给繁忙的DBA在察看内部进程,追查问题,或者仅仅想学习和了解系统运行状况时带来了极大的方便. 某些Lab128的实时监控功能例如” Block Buffer Explorer", 所有其他类似工具都没有提供.

简单的安装和维护.

安装过程只是拷贝可执行文件然后执行它就可以了,当然事实上,你还需要一个帮助文件如果你对它的使用不是很熟的话.Lab128不使用注册表, 所有的配置信息存放在文本文件内,与执行文件在同一目录.建议建立一个固定目录,比如, d:\Program Files\Lab128, 保留相关的文件在此目录. 需要卸载时只需删掉这个目录就可以了.

出众的性能.

任何一个监控工具的性能包括两个方面,对被监控系统的性能影响,以及用户界面的响应速度.
Lab128的开发基于这样一个理念,对Oracle实例的影响降到最低.为了达到这一目标Lab128开发了很多技术.简单的对两个或更多个视图进行查询并在本地通过应用程序本身进行连接操作,而不是在Oracle服务器端进行连接.同样的, Lab128访问过的数据都存储在本地的缓冲池内以避免再次访问时再次查询. 为了减少对Oracle服务器的资源占用,Lab128不使用数据库存储任何数据(比如Quest公司的监控工具使用的段及分区的数据会存放在数据库中), 这些数据会存放在本地而不需要通过每次查询数据库获取(就象其他工具需要通过PL/SQL进行二进制查询).例如,Lab128的Block Buffer Explorer功能从视图v$bh获取数据, 但所有的数据累加计算过程是由本地应用程序完成的. 许多其他的处理也是这样进行的.

谈到可用性,用户界面的响应速度是最受关注的. 有一些实现类似功能的工具是用Java写成的,但是他们极其缓慢的运行速度使其不适合日常使用. Lab128使用C++编写, 配合高效的数据处理算法使其能很好完成大数据量的处理和存储. 采用高效的数据处理引擎而占用极少的资源, 采用多线程技术使前端用户操作不受影响. 因此Lab128即使在一个CPU处理器频率为90M的计算机上也能运行的很好. 它占用很少的系统资源, 对其他应用程序的运行基本上没有影响.

Lab128不是什么.

Lab128有很多功能, 是一款优秀的监控工具,但目前它还不具有告警功能. Lab128需要很多的用户交互操作, 因为它主要用于高级调优以及成千上万的统计数据分析. 这个工具不是用来做Oracle数据库管理的, 虽然你可以使用SQL Central工具集成一些SQL语句进行一些数据库管理的工作. 最后, 这个工具并不会提供建议或问题解决方案.Lab128所做的就是信息收集. 我们尊重你的经验和你对所使用数据库应用的理解. 我们相信根据Lab128收集到的信息去做出你自己的决定是确保数据库系统高性能运行的最佳方式. 

 

请参考: Lab128 特性.   Lab128 - 设计原理.
Lab128 使用界面:  Lab128 使用界面.
下载试用版本: Lab128 下载.

  Copyright © 128 咨询服务