现场反馈数据泵导入超慢,40M的dump,导入花了20分钟。对于Oracle数据库来说,诊断问题对运维问题是比较友好的,通常的思路是看相应会话的等待事件。
select s.INST_ID, s.sid, s.SERIAL#, s.EVENT, s.WAIT_CLASS
from gv$session s
where s.MODULE like ‘%Data Pump%’
等待事件是:Streams AQ:enqueue blocked on low memory
1.从字面意思上解读是内存不够,可以先把linux的cache/buffer内存回收一下。
echo 3 > /proc/sys/vm/drop_caches
2.
select shrink_phase_knlasg from XK N L A S G ; 值 是 1 强 制 s t r e a m s p o o l 缩 小 完 成 : a l t e r s y s t e m s e t e v e n t s ′ i m m e d i a t e t r a c e n a m e m m a n c r e a t e d e f r e q u e s t l e v e l 6 ′ ; s e l e c t s h r i n k p h a s e k n l a s g f r o m X KNLASG; 值是1 强制streams pool缩小完成: alter system set events 'immediate trace name mman_create_def_request level 6'; select shrink_phase_knlasg from XKNLASG;值是1强制streamspool缩小完成:altersystemsetevents′immediatetracenamemmancreatedefrequestlevel6′;selectshrinkphaseknlasgfromXKNLASG;值是0
调整之后导入速度恢复正常。