迁移数据之后,读取数据库变得很慢

在某天晚上,业务人员把数据库迁至新库,通过数据泵导入导出这种方式迁至新库上。

新库与老库均为rac环境

在第二天上午,业务人员突然报说数据库处理单子的速度变的很慢,一上午压了2000个单子。

出现这种情况的原因有这么几种:

  1.导数的时候没有导统计信息

  2.表和索引的统计信息变了

  3.是否产生了不同的计划任务

  这里我就能想到这么三点,可能会有各种不同的问题,下面我们跟业务人员要一下跑的业务语句

select SERIAL_NUMBER,
       ORD_NO,
       USER_ID,
       ACCNO,
       ACTION_TYPE,
       START_DATE,
       RETURN_DATE,
       RECONFIG_REASON,
       DEAL_FLAG,
       RETURN_CODE,
       RETURN_DESC,
       BACK_REASON,
       LOGTIME,
       CW_STATE,
       CW_desc,
       DL_STATE,
       DL_DESC,
       HD_FLAG,
       ORDER_ID,
       WORK_ORDER_ID
  from (select *
          from fwkt_new.tif_rs_info t2
         where deal_flag = '0'
           and rownum < 500
        union
        select *
          from fwkt_new.tif_rs_info t
         where deal_flag = '1'
           and rownum < 80000);

以上是业务人员的处理单子的sql语句

拿到sql语句,我们首先分析下老库和新库的执行计划是否一致

老库的执行计划

 新库的执行计划

对比两个库,执行计划两边完全一致,并没有说执行计划有变。

那这个问题出现在哪儿呢?

后来又有业务人员说登陆数据库慢,会不会是登录数据库慢导致业务处理的速度变慢了呢?

原来业务人员使用的是数据库连接地址是scan,用scan ip可以负载均衡,但是会产生大量的gc,还会导致闩锁的出现。所以让业务人员把scan ip禁掉,让应用使用vip去连接数据库

改完之后,数据库的处理速度有改善,但是处理速度改善的不是很明显,说明还是有问题,到底是什么问题导致数据库处理的速度变慢呢?

连接数据库慢,会不会是监听有问题导致的呢?

遂登陆grid用户查看监听信息

在这之间没有做截图,我口述一下吧!!!

lsnrctl status

发现节点1和节点2的监听注册信息不一致。

然后登陆数据库查看service_name

发现两边的service_name也不一致

更改数据库的service_name名称与节点1和节点2保持一致,并且节点1和节点2可以支持多个service_name的名称。

更改完毕,重新加载一下数据库的监听,并在数据库里面注册一下监听的信息。

所有操作完成之后,业务人员说积压的单子瞬间就没了。

至此,问题解决。

总结一下:

  这究其原因就是oracle数据库里面的service_name不一致,导致监听的注册信息不一致,会导致数据库处理速度变慢,所以大家在改任何数据库参数的时候一定要小心谨慎。

  

 

posted @ 2018-06-25 09:36  静心のboke  阅读(1957)  评论(0编辑  收藏  举报