一次expdp备份hang住问题分析

来源:这里教程网 时间:2026-03-03 21:39:12 作者:

expdp备份hang住问题

1、 问题描述

oracle版本11.2.0.4,在做expdp备份时,一直卡在初始化位置  

2、 问题分析

检查 Io等待非常高  

检查 io居高的进程为ora_m00X,该进程为MMON子任务,kill掉也不影响,但实际上kill之后io负载降下来了,但备份也还是hang在那。  

实际上在 vda磁盘上的数据文件并不多,大部分文件放在vdb、vdc和vdd上。 查看等待事件: SQL> select event,count(*) from gv$session where wait_class<>'Idle' group by event;   EVENT                                                              COUNT(*) ---------------------------------------------------------------- ---------- Streams AQ: enqueue blocked on low memory                                 1 SQL*Net message to client                                                 1 其中 Streams AQ: enqueue blocked on low memory ”事件比较可疑   查询 mos,有一篇文档比较符合 Datapump Expdp Or Impdp Slowdown Due To Frequent Waits On ”Streams AQ: Enqueue Blocked On Low Memory" (Doc ID 2386566.1)

3、 问题原因  

造成这个原因是由于 BUG 27634991,改bug会造成EXPDP等候'STREAMS AQ: ENQUEUE BLOCKED ON LOW MEMORY',在19.1版本修复。    

Auto SGA 环境(设置了 sga_target memory_target )下,当 buffer cache 负载较高并且 streams pool 中的内存正被移动到 buffer cache 时,可能会发生此问题。

如果遇到类似的性能问题时,请检查以下查询是否一直返回 1 ”。该值表示 streams pool 处于收缩阶段。当 streams pool 完成收缩时,该值应返回“ 0 ”,但如果它一直返回“ 1 ”,则您可能遇到此问题。    

4、 问题解决

查询 streams pool 收缩状态: SQL> select shrink_phase_knlasg from X$KNLASG;   SHRINK_PHASE_KNLASG -------------------                    1 强制完成 streams pool 收缩: SQL> alter system set events 'immediate trace name mman_create_def_request level 6';   System altered.   SQL> select shrink_phase_knlasg from X$KNLASG;   SHRINK_PHASE_KNLASG -------------------                    0 当状态为 0了,说明收缩完成,再次通过expdp备份恢复正常。  

5、 总结建议 

1、该问题 最终结论( 由于 BUG 27634991导致 streams pool 收缩异常 )( Doc ID 2386566.1) 2、expdp/impdp备份恢复任务检查:   SQL> select * from dba_datapump_jobs; OWNER_NAME   JOB_NAME          OPERATION    JOB_MODE   STATE      DEGREE ATTACHED_SESSIONS DATAPUMP_SESSIONS ------------  ------------------- ------------ --------- -------------- -------------- ------------------------------------- SYS     SYS_EXPORT_SCHEMA_01    EXPORT     SCHEMA   EXECUTING   6     1       2 SYS    SYS_EXPORT_SCHEMA_0 2    EXPORT     SCHEMA   NOT RUNNING   0     0       0 SYS    SYS_EXPORT_SCHEMA_0 3    EXPORT     SCHEMA   NOT RUNNING   0     0       0 SYS    SYS_EXPORT_SCHEMA_0 4    EXPORT     SCHEMA   NOT RUNNING 0     0       0

数据泵任务停止,需要通过 kill_job去终止任务,通过操作系统层面kill在job里还是存在的, dba_datapump_job s 可以看到有一些并未运行的job,但是资源未释放。可以通过 expdp attach =SYS_EXPORT_SCHEMA_01进入,通过kill_job去终止任务 ,但是NOT RUNNING 的任务,有时候 会显示任务并不存在。 可以通过删除临时表进行清理: drop table  SYS_EXPORT_SCHEMA_0 2  purge; drop table  SYS_EXPORT_SCHEMA_0 3  purge; drop table  SYS_EXPORT_SCHEMA_0 4  purge;  

相关推荐