分析诊断某电信公司省核心业务库异常故障
今早一到办公室,首先打开工作QQ和邮箱,这是我一直以来的习惯,邮箱一打开,除了几封不相关的邮件,部门老大有封邮件,让我协助帮忙解决某省某电信公司某项目数据库服务器的异常问题,并随邮件发来了AWR报告,其实,昨天这件事情我知道一个同事在处理,他是在外驻场的DBA,他当时谈到了job堆积问题,我也顺便和他聊了两句,以为是他们那边的问题,原来是另外一个省电信公司的服务器,后来讨论了两句,也没当回事,没想到老大最后找到了我,只能开工。
下了AWR报告,大体看了下,其中有两个问题引起了我的注意,第一是enqueue:tx等待超长,达到了3s之多;另一个是关于log_buffer的问题,但不是很严重。接着往下看,发现和这个enqueue:tx等待是一张数据库登录信息相关的表,也就是每次用户的登录和注销,都会在这个表里留下信息,后来捕捉到对这张表操作的两个语句,又获取了表中记录多达上千万条,而且该表上没有任何索引,这就可以理解了,该表在每次用户登录或注销时,都会引起操作,登录时是insert还好,糟糕的是注销时update操作,因为没索引,这会引起对该表的fts,如果有用户登录注销比较频繁,那么就会引起很大的性能问题,难怪现场人员描述最近多次卡死,CPU跑满的现象。后来查了半天,也没查到引起这两个操作的原因,分析是建立了系统级的触发,现场人员说没有(没有远程,是我提要求他们查),请求应用人员协助,结果,他们都说不认识这张表。随着这个表数据的增加,系统性能会越来越差,没办法,最后写出了处理意见,除了处理这张表外,还有两条关于job参数和log_buffer的意见,提交了,暂时这样,回头再慢慢查怎么回事,如果处理了这个表后,问题不再发生,应该就是这张表的事情。
----------------------------------------------------------
《高性能SQL调优精要与案例解析》
blog1:http://www.cnblogs.com/lhdz_bj
blog2:http://blog.itpub.net/8484829
blog3:http://blog.csdn.net/tuning_optmization