expdp/impdp變慢 (Doc ID 2469587.1)

gopaypal發表於2022-12-07

一、資料庫環境

      OS:  Linux  2.6.32-754.12.1.el6.x86_64 #1 SMP Tue Apr 9 14:52:26 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

      DB: 11.2.0.4.0


二、邏輯備份指令碼

$ cat /home/oracle/expdp/expbak.sh 


. ~/.bash_profile


cd /oracle/expdp

v_date=`date '+%Y%m%d'`

mkdir $v_date

echo "**************"$v_date" Backup begin **************" >>expbak.log 

v_begin_date=`date '+%T'`

expdp \"\/ as sysdba\" directory=dump dumpfile=devdb_$v_date.dmp logfile=devdb_$v_date.log schemas=USER1,USER2,TESTUSER,USERLOCAL,USER4,USERQAS,USER5,USER6,USERDEV,APPUSER compression=all


mv devdb_$v_date* $v_date/

find /oracle/expdp/ -type f -mtime +14 -exec rm -fr {} \;

echo  "**************"$v_date" Backup end  **************" >>expbak.log

三、邏輯備份速度的異常緩慢

      由於此開發資料庫庫一直由開發人員自己維護,從日誌中抓取,每天的邏輯備份也成功完成並未出錯,所以,一直並沒有人關注它的耗時。從備份日誌以及實際的dump檔案大小來看,備份耗時約 85分鐘,但實際的dump大小僅 2 GB


 附:備份日誌的部分內容


$ tail -100  expdat.log


……

**************20221119 Backup begin **************

Job "SYS"."SYS_EXPORT_SCHEMA_01" successfully completed at Sat Nov 19 07:39:43 2022 elapsed 0  01:25:36

**************20221119 Backup end  **************

**************20221120 Backup begin **************

Job "SYS"."SYS_EXPORT_SCHEMA_01" successfully completed at Sun Nov 20 07:40:27 2022 elapsed 0  01:26:21

**************20221120 Backup end  **************

**************20221121 Backup begin **************

Job "SYS"."SYS_EXPORT_SCHEMA_01" successfully completed at Mon Nov 21 07:38:23 2022 elapsed 0  01:24:17

**************20221121 Backup end  **************

**************20221122 Backup begin **************

Job "SYS"."SYS_EXPORT_SCHEMA_01" successfully completed at Tue Nov 22 07:39:36 2022 elapsed 0  01:25:30

**************20221122 Backup end  **************

**************20221123 Backup begin **************

Job "SYS"."SYS_EXPORT_SCHEMA_01" successfully completed at Wed Nov 23 07:39:30 2022 elapsed 0  01:25:23

**************20221123 Backup end  **************




四、分析排查

        根據等待事件分析,在邏輯備份期間頻繁出現”Streams AQ: Enqueue Blocked On Low Memory" 。透過

官方support檢查,發現Doc ID 2469587.1 文件中介紹的場景與此案例比較吻合。

       描述如下:

     由於頻繁等待 ”Streams AQ: Enqueue Blocked On Low Memory" 而導致Datapump Expdp或Impdp變慢 (Doc ID 2469587.1)”對該等待事件有描述:

因 Datapump匯出和匯入(expdp和impdp)可能會遇到突然嚴重的效能問題,因為DW和DM程式經常等待 “StreamsAQ: enqueue blocked on low memory”。


五、解決方案

    根據  Doc ID 2469587.1 中介紹的辦法,依照以下步驟處置:

1、查詢是否出現“回縮”現象

      SQL> select shrink_phase_knlasg from X$KNLASG;

      SHRINK_PHASE_KNLASG

       -------------------

        1

2、使用事件修復“回縮”標誌失敗的BUG

      SQL> alter system set events 'immediate trace name mman_create_def_request level 6';

       System altered.


3、再次查詢

      SQL> select shrink_phase_knlasg from X$KNLASG;

     SHRINK_PHASE_KNLASG

      -------------------

      0


六、再次執行邏輯備份指令碼

       日誌如下(摘錄):

**************20221124 Backup begin **************

Job "SYS"."SYS_EXPORT_SCHEMA_01" successfully completed at Thu Nov 24 15:37:56 2022 elapsed 0 00:06:29

**************20221124 Backup end  **************


        指令碼耗時由 85分鐘 減少到 6分29秒,速度改進約  14倍



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024552/viewspace-2925050/,如需轉載,請註明出處,否則將追究法律責任。

相關文章