oracle expdp导出慢处理

2023-07-12 17:51:10 浏览数 (1)

Oracle数据泵expdp遭遇Streams AQ: Enqueue Blocked On Low Memory等待事件

Oracle 版本:11.2.0.4.0

查看数据泵导出的会话在等待什么:

select s.sid,s.serial# from v$session s,dba_datapump_sessions d where s.saddr=d.saddr;

通过查到的sql找到等待事件:

select enevt from v$session where sid='';

Streams AQ: enqueue blocked on low memory

查看当前导出任务:

select * from dba_datapump_jobs;

删除当前任务:

select owner,object_name,object_type,status,LAST_DDL_TIME from dba_objects where object_name=upper('SYS_EXPORT_SCHEMA_01')

OWNER_NAME JOB_NAME OPERATION JOB_MODE STATE DEGREE ATTACHED_SESSIONS DATAPUMP_SESSIONS

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

SYS SYS_EXPORT_SCHEMA_01 EXPORT SCHEMA EXECUTING 8 1 2

drop table sys.SYS_EXPORT_SCHEMA_01

查看当前streams pool大小:

select COMPONENT,CURRENT_SIZE/1024/1024 CURRENT_SIZE_MB from V$SGA_DYNAMIC_COMPONENTS where COMPONENT='streams pool';

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

SQL> select shrink_phase_knlasg from X$KNLASG;

SHRINK_PHASE_KNLASG

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

1

即使 streams pool 已经结束收缩,该标志也没有被修改,这导致各种 stream pool 操作(例如数据泵的内部操作)等待 "StreamsAQ: enqueue blocked on low memory"。

由于“StreamsAQ: enqueue blocked on low memory”等待事件导致expdp / impdp命令出现严重性能问题,并且X$KNLASG.SHRINK_PHASE_KNLASG 列保持返回1并持续几分钟,则从sqlplus运行以下命令强制streams pool缩小完成,也可以应用Patch 27634991以防止发生此问题。在版本19.1及更高版本中修复了该问题。

处理:

SQL>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

重新expdp导出完成。

搜索mos,根据等待 ”Streams AQ: Enqueue Blocked On Low Memory" 而导致expdp,Impdp变慢 (文档 ID 2469587.1)

0 人点赞