背景:
expdp导入时加入METRICS=y参数,观察每一步导出所消耗的时间,发现两个节点导出同一个对象,每一步骤所花的时间都差距很多,最后一节点消耗了6分钟,二节点消耗了18s
观察导出时的等待事件,可以发现1节点有大量的Streams AQ: Enqueue Blocked On Low Memory(流池收缩的等待),而在二节点导出时,该等待事件只有一条
这是因为触发了Bug 27634991 - Datapump Frequently Waits On ‘Streams AQ: enqueue blocked on low memory’ (Doc ID 27634991.8) 在版本19.1及更高版本中修复了该问题
在导出时,反复查询视图,一直返回1,说明stream一直处于收缩阶段,导致expdp一直处于等待状态,只有返回0时才表示完成收缩
select shrink_phase_knlasg from X$KNLASG;
SHRINK_PHASE_KNLASG
-------------------
1
通过以下命令强制结束
alter system set events 'immediate trace name mman_create_def_request level 6';
SQL> select shrink_phase_knlasg from X$KNLASG;
SHRINK_PHASE_KNLASG
-------------------
0
导出恢复正常速度