ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle大量排序操作引发的内存不足问题

oracle大量排序操作引发的内存不足问题

原创 Linux操作系统 作者:skuary 时间:2012-02-28 17:15:52 0 删除 编辑

下午监控酒窖数据库的时候,突然发现cpu使用率猛涨,具体信息如下:

拉出对应的sql语句,发现有大量的排序操作,单独放到pl/sql里面执行,然后操作系统层面查看对应的磁盘写操作,发现有大量的临时表空间写操作,询问酒窖相关人员,这几天也没有上什么新的功能,都是些老的sql,然后查询操作系统内存使用情况,发现64G的内存只剩下2G左右的空闲内存了,于是释放内存,之后发现数据库回归到了正常情况,但是没有持续多久cpu使用率又涨上去了,查询相关sql,依旧是之前的语句,拿出来仔细研究发现,这个查询语句,涉及到4张表,2个排序操作,但是其中有张表where条件没有关联,从而造成查询的时候形成了笛卡尔集的查询结果,数据量几百万,而且实时查询又很多,应该是这个原因造成的,于是联系开发人员,改写相关sql,重新紧急发布上线,之后数据库就恢复正常了,如下:

调整前对应的sql及具体执行计划如下:

调整之后的具体如下:

 

具体原因,初步推断应该是该功能模块,最近执行的比较多,只是推断,继续排查吧。

high-cpu.jpg

high-cpu-after.jpg

be_tune_sql.jpg

af_tune_sql.jpg

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

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

注册时间:2011-03-31

  • 博文量
    88
  • 访问量
    316896