ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 通过降低表的高水位(HWM: High Water Mark) ,解决一生产系统故障

通过降低表的高水位(HWM: High Water Mark) ,解决一生产系统故障

原创 Linux操作系统 作者:dcswinner 时间:2012-02-10 15:04:31 0 删除 编辑

昨天系统运维的同事接到电话,说全国各地多出反映代收货款业务没做,数据未生成。系统其它方面都正常。然后请我分析看看关于这一块的数据库是否正常。客户一直在电话催着解决,项目经理也在顶着压力催着。

通过分析数据库,发现数据库上一直有两个和代收货款有关的sql在执行,insert语句,一个是delete语句。将这个两个语句capture出来分析,查看其执行计划,都很正常(抓出来的sql是含有绑定变量的)。想到可能由于绑定变量的原因,生成的执行计划不准确,特意代进去几个具体的值执行,发现执行时间都需要10秒左右,而这个sql的实时性要求非常高,需要在几毫秒内处理完,否则就会有数据积压,就会积压越来越多,越来越慢,这两个sql在系统中调用非常频繁,一直在循环执行,而这个sql都是按照主键来操作的,理应在几毫秒就可以完成。查看涉及到的表的数据量,只有几十行,即使select * from table_name也是很慢。因此这个应该是表的hwm很高导致的,因为这些表的delete,insert非常频繁。

因此需要立刻降低表的hwm。在oracle 10g中,影响最小的降低hwm的办法是收缩表:

alter table table_name shrink space;

(采用move操作需要重建索引,对生产系统影响有点大)。

操作完后,再执行上面的两个sql,确实做到了几毫秒执行完毕。

再查看代收货款相关表的数据,发现有些数据已经在处理了。过半个小时后,所有滞后的数据均已经处理完毕,客户关心的问题得到解决!

另外,如果表上有fbi(基于函数的索引),是不能对表进行shrink的。

相关链接:

http://blog.csdn.net/tianlesoftware/article/details/4707900

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12129601/viewspace-716021/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-04-03

  • 博文量
    61
  • 访问量
    485038