|
本帖最后由 vage 于 2012-6-29 16:34 编辑
好帖。
lorikyo 的 加索引,加hint,收集统计信息 , 言简意赅。
众大神对压缩表的讨论让我涨了见识。
看来11G还真是搞出不少新特性,要加快学习了。
我也总结一下系统调优的三板斧:
1、发现问题
通常有人说慢,然后查看AWR、确定大概方向。如果是SQL问题,按照lorikyo的三板斧,调优SQL。如果不是SQL问题,可以进一步查看ASH中等待事件。
2、分析问题
以等待事件为入手点,在测试库中模拟问题。可以使用10046,也可以使用DTrace+GDB,确定等待事件的原因。
3、解决问题
找到原因,通常都可以有解决方案。
说个以前碰到的例子,不过不是调优,但和我说的三板爷比较粘近:
第一步:发现问题:
有客户反应,从某天开始,每天11点半左右,会有短时间连接不到数据库。查看数据库资料,发现多项指标在问题时间段有一分钟左右的突增,如下图:
![]()
图片链接是http://space.itpub.net/321157/viewspace-734158
如图所示,很多指标先降后增。
第二步:分析问题
各项资料指标下降,可能在降的时候,数据库很多操作被什么原因阻塞住了,当阻塞没有时,被阻塞的操作突然执行成功,导致很多指标冲高。
接下来的工作,就是查看等待事件了。根据等待事件,就可以判断出来当时的阻塞是什么原因。
由于是9i,没有ASH可看,到第二天11点多、问题重现时查看等待事件,结果,没有发现啥可疑的等待事件。
既然没有等待事件,就说明在问题出现时刻,多项资料指标下降的原因不是Oracle。
如果根本原因不是Oracle,很有可能就是网络了。
我们把目光转向使用同一交换机的一批MySQL上,经过MySQL DBA的定位,果然,在11点多同一时刻,MySQL有通过网络大量传送数据。
原因找到了,MySQL向外传送大量数据,占用了大量带宽,导致用户无法连接到Oracle。
第三步:解决问题
将MySQL迁移到其他交换机。问题解决。 |
|