【ASK_ORACLE】資料泵由於”Streams AQ: Enqueue Blocked On Low Memory" 問題變慢
實驗環境
搭建平臺:VMware Workstation
OS:RHEL 7.6
Grid&DB:Oracle 12.2.0.1
問題描述
在使用資料泵匯出和匯入(expdp和impdp)突然遇到嚴重的效能問題,導致導數時間極其漫長,檢視日誌發現資料泵兩個程式DMnn(資料泵主程式)和DWnn(資料泵工作程式)經常等待出現"StreamsAQ: enqueue blocked on low memory"。
以下是使用expdp命令匯出資料時命令的示例症狀(能顯示匯出時間是因為新增Oracle 12.1及以上版本的引數logtime = all)
正常時間匯出空分割槽表通常需要不到一秒的時間,但是現在突然要2-3秒才能匯出每個分割槽,而且是空分割槽表。。。
12-Dec-21 10:09:15.573: Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER 12-Dec-21 10:09:17.589: . . exported "<SCHEMA_NAME>"."<TABLE_NAME>":"<PART_NAME1>" 0 KB 0 rows 12-Dec-21 10:09:20.661: . . exported "<SCHEMA_NAME>"."<TABLE_NAME>":"<PART_NAME2>" 0 KB 0 rows 12-Dec-21 10:09:22.672: . . exported "<SCHEMA_NAME>"."<TABLE_NAME>":"<PART_NAME3>" 0 KB 0 rows 12-Dec-21 10:09:25.698: . . exported "<SCHEMA_NAME>"."<TABLE_NAME>":"<PART_NAME4>" 0 KB 0 rows 12-Dec-21 10:09:27.721: . . exported "<SCHEMA_NAME>"."<TABLE_NAME>":"<PART_NAME5>" 0 KB 0 rows 12-Dec-21 10:09:30.733: . . exported "<SCHEMA_NAME>"."<TABLE_NAME>":"<PART_NAME6>" 0 KB 0 rows 12-Dec-21 10:09:32.758: . . exported "<SCHEMA_NAME>"."<TABLE_NAME>":"<PART_NAME7>" 0 KB 0 rows
解決辦法
這是由於當資料庫記憶體使用了ASMM或者AMM的管理方式時,如果此時的buffer cache負載較高並且streams pool中的記憶體正被轉移到buffer cache時,可能會發生此問題。
可以使用以下SQL來檢查以下查詢是否一直返回“1”:
SQL> select shrink_phase_knlasg from X$KNLASG; SHRINK_PHASE_KNLASG ------------------- 1
注:
該欄位表示 streams pool 處於收縮階段。當 streams pool 完成收縮時,該值應返回“0”,但如果它一直返回“1”,這個問題就可能發生。
所以,我們知道現象背後的原理就有思路了:
如果SHRINK_PHASE_KNLASG列在幾分鐘之內的值仍然是“1”的時候,則從sqlplus執行以下命令強制streams pool縮小完成:
connect / as sysdba alter system set events 'immediate trace name mman_create_def_request level 6';
但是!
即使 streams pool 已經結束收縮,該標誌也可能沒有被修改!所以"StreamsAQ: enqueue blocked on low memory"這個問題會一直存在。這是一個官方bug,需要透過補丁27634991修復(Oracle 19c已經預設修復了該bug)。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69992972/viewspace-2852299/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【ASK_ORACLE】重灌Oracle資料泵(Datapump)工具的方法Oracle
- 【ASK_ORACLE】由於索引分裂而產生的效能問題的解決方案Oracle索引
- 【ASK_ORACLE】Row Cache Enqueue鎖之概念篇OracleENQ
- 由於目錄變更引起的資料服務無法啟動的問題處理記錄
- 解決linux下redis資料庫overcommit_memory問題LinuxRedis資料庫MIT
- 硬碟問題導致Gbase資料庫叢集SQL任務執行效率變慢硬碟資料庫SQL
- 資料變動與渲染問題
- 【ASK_ORACLE】刪除DBA_DATAPUMP_JOBS檢視中的異常資料泵JOB的方法Oracle
- OH解決linux下redis資料庫overcommit_memory問題vlrLinuxRedis資料庫MIT
- has been blocked by CORS policy跨域問題解決BloCCORS跨域
- 殺停資料泵
- MYSQL速度慢的問題 記錄資料庫語句MySql資料庫
- 資料泵匯出時報ORA-31623、ORA-06512問題的解決
- 由Linux核心bug引起SSH登入緩慢問題的排查與解決Linux
- ES叢集搭建問題:memory locking requested for elasticsearch process but memory is not lockedElasticsearch
- 資料庫升級之-資料泵資料庫
- QTableView和QStandardItemModel插入更新資料效能突然變慢QTView
- weblogic控制檯訪問慢問題Web
- 資料泵重建使用者
- 資料泵匯出匯入
- Oracle如何診斷遠端訪問資料庫慢/超時等問題小結Oracle資料庫
- 由於基本資料型別使用姿勢不對導致的線上"死迴圈"問題排查資料型別
- Oracle資料庫(資料泵)遷移方案(上)Oracle資料庫
- Oracle資料庫(資料泵)遷移方案(下)Oracle資料庫
- 資料泵expdp匯出遇到ORA-01555和ORA-22924問題的分析和處理
- 解決github訪問慢的問題Github
- 液壓泵的工作原理與分類,定量泵與變數泵是啥概念?變數
- 由分號引起的問題
- win10 上使用GIT慢的問題,或者命令列反應慢的問題Win10Git命令列
- 使用資料泵(expdp、impdp)遷移資料庫流程資料庫
- 解決windows docker lnmp訪問慢問題WindowsDockerLNMP
- 如何解決 github 訪問慢的問題Github
- spring boot 2.0.0由於版本不匹配導致的NoSuchMethodError問題解析Spring BootError
- 由於網路延遲造成邏輯鎖過期的問題
- 解決Dcat Admin laravel框架登入報錯問題,(blocked:mixed-content)Laravel框架BloC
- DtypeWarning: Columns () have mixed types. Specify dtype option on import or set low_memory=False.ImportFalse
- 網站訪問變慢最佳化,淺析10種網站訪問變慢最佳化方法的作用網站
- 關於oracle資料庫訊號量的問題Oracle資料庫