遷移數據之后,讀取數據庫變得很慢


在某天晚上,業務人員把數據庫遷至新庫,通過數據泵導入導出這種方式遷至新庫上。

新庫與老庫均為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不一致,導致監聽的注冊信息不一致,會導致數據庫處理速度變慢,所以大家在改任何數據庫參數的時候一定要小心謹慎。

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM