数据库系统的诊断-性能分析的起点

在数据库系统的诊断中,通常须要综合分析两个方面的因素:

  • 主机系统的采样分析数据;

  • 数据库系统的采样分析数据。

其中主机的采样数据可以通过操作系统的相关工具来收集,IBM的Nmon(可以用于AIX和Linux)和Oracle的OSWatcher都是很不错的轻量级采样工具;数据库的采样分析数据则可以通过Oracle的Statspack或者AWR采样数据获得,前者需要手工部署,后者是Oracle Database 10g的新特性,默认即会启用,不间断收集数据库运行状况(默认每小时采样一次,采样数据保留7天)。

Nmon和OSWatcher

对于主机采样工具,Nmon与OSWatcher原理类似,都是通过系统级工具(如iostat、vmstat、netstat、mpstat、top等)进行指定间隔的采样,将采样数据记录到日志文件中,通过分析这些数据得到系统运行的性能曲线。

Nmon既可以独立运行,动态展示当前系统数据,也可以在后台自动收集系统运行数据,图18-1是Nmon直接运行可以看到Logo的展示页面:

ede508c06e0dc0c026c6ea70b56937a8.png
图18-1 Nmon直接运行下Logo的展示页面截图

对于Nmon收集的数据,IBM提供了NMON_ANALYSER工具,该工具以Nmon性能工具采样生成的文件作为输入,然后将它们转换为 Microsoft Excel 电子表格,并自动生成相应的图形,非常直观和方便,图18-2是一张Nmon生成的曲线截图,通过概要图可以看到系统整体的CPU、IO等负荷变化情况。

ee1cb249d469a2d879b9bac8cdcf68bc.png

图18-2 一张Nmon生成的曲线截图

而OSWatcher则是Oracle公司出品的一款系统性能监控工具,支持常见主流操作系统(Windows、Linux、AIX、HP-UX、Solaris等),图18-3是其有趣的Logo:

16a5ed93e9a4e8e9e1466aa58ea2aaae.png

图18-3 OSWatcher的Logo

OSWatcher在收集了采样数据之后同样可以生成图表曲线,用于展示系统性能变化,图18-4是使用这款工具生成的系统内存使用变化曲线:

ac01e10de27d76a59b77b14689792649.png
图18-4 OSWatcher生成的图表曲线

这两款工具原理简单,部署方便,对系统性能影响极小,如果没有其他的系统监控工具,完全可以考虑用它们收集至关重要的操作系统性能数据。

Statspack和AWR

Oracle Statspack 从Oracle8.1.6开始被引入Oracle,并马上成为DBA和Oracle专家用来诊断数据库性能的强有力工具。在数据库发布中,初始的Statspack并未安装,其安装必须在脚本$ORACLE_HOME/rdbms/admin目录下。对于Oracle 8.1.6,安装文件是一组以stat开头的文件,从Oracle 8.1.7开始,脚本名称以sp起始,值得一提的是Statspack完全是一个免费组件,在Oracle Database 10g中仍然存在。

通过Statspack对动态性能视图等进行连续采样,可以获得数据库运行的完整性能变化趋势。

从Oracle Database 10g开始,Oracle将这一功能进一步强化,推出了AWR(Automatic Workload Repository,自动工作负载库)功能,AWR默认每小时采样一次性能数据,记录在SYSAUX表空间中,数据默认保留7天。

而以AWR为基础推出的Oracle Database/Grid Control则更是从管理、监控工具上更上一层楼,通过Web形式的展现将数据库的运行状况全面展现出来,图18-5就是Grid Control的动态展示之一:

ea8e34691c5c5f6fb2605c8a84a2f406.png
图18-5 Grid Control的动态展示截图

ASH、AWR、ADDM等众多新的特性,结合Database/Grid Control展现出来,为Oracle Database 10g管理和监控数据库带来了极大的便利。

但是要注意的是Database/Grid Control并不是一个免费的工具,其中的很多功能都须单独付费(要单独付费的组件包括Diagnostics Pack、Tuning Pack、Change Management Pack、ConfigurationManagement Pack、Provisioning Pack for Database、Data Masking Pack等)。

Database/Grid Control中最常用的组件是Diagnostics Pack,这个组件提供自动的性能诊断和高级的系统监控功能,包含如下主要特点和功能:

  • Automatic Workload Repository;

  • Automatic Database Diagnostic Monitor(ADDM);

  • Active Session History (ASH);

  • Performance monitoring (database and host);

  • Event notifications: notification methods, rules, and schedules;

  • Event history and metric history (database and host);

  • Blackouts;

  • Dynamic metric baselines;

  • Monitoring templates;

  • Memory-access based performance monitoring;

  • Supporting functionality to perform per stream bottleneck detectionand per component top wait event analysis。

为了使用如上特性或功能,在授权上都须购买Diagnostic Pack,在Oracle Database 11g中,一个新的初始化参数被引入用于控制Diagnostic Pack和Tuning Pack的使用,这个参数是CONTROL_MANAGEMENT_ PACK_ACCESS,该参数有三个可选值。

1. DIAGNOSTIC+TUNING:指DiagnosticPack and Tuning Pack功能均启用;

2. DIAGNOSTIC:仅DiagnosticPack启用;

3. NONE:DiagnosticPack 和 Tuning pack 均被禁止。

这些Pack功能可以通过Enterprise Manager和命令行API调用来访问,当然这些访问同样需要License的授权。

但是存在一些例外,我们知道AWR的很多历史数据通过字典表来记录,可以通过查询这些字典来获得数据库系统运行的性能数据,但是需要了解的是,所有以DBA_HIST_开头的字典都需要License的授权,除了在Oracle Database 11g中,Oracle标示了以下例外:

DBA_HIST_SNAPSHOT,DBA_HIST_DATABASE_INSTANCE;
DBA_HIST_SNAP_ERROR, DBA_HIST_SEG_STAT;
DBA_HIST_SEG_STAT_OBJ, DBA_HIST_UNDOSTAT。

也就是说这些视图可以免费使用。当然这些都只是授权上的约束,在初始安装后,这些功能都被启用。

在有了主机系统和数据库的连续采样数据之后,我们就可以对整个系统的运行状况进行全面的分析了,不仅可以更清晰地了解数据库的正常运行指标,更可以在数据库出现问题时快速定位与解决。

文章来源:《OracleDBA手记1》第18章表碎片及分页查询优化 作者:盖国强

配图来源:http://www.elmbsol.com/wp-content/uploads/2012/09/design-and-implement.jpg

回复“手记1”可下载本书前三篇内容:DBA工作手记/诊断案例篇/SQL调优篇(建议复制链接至电脑端)

61b24f96f0b66ef1e61a9399a67a57d3.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值