数据泵在导入导出的时候,可能会遇到卡主、半天没反应、不返回输出结果等情况,这个时候要考虑的点如下:
- 归档是否满了
- redo是否不够用
- 异常等待事件
- 表空间、磁盘空间、文件系统是否满了
- 统计信息
如下两则遇到的问题处理案例。
一、异常等待事件导致卡住
发现等待事件,通过堵塞链分析,最终堵塞原是以下等待事件
Streams AQ: Enqueue Blocked On Low Memory
复制
原因:
当数据库内存使用ASMM或者AMM内存管理时,如果此时的buffer cache负载较高,并且streams poll中的内存正被转移到buffer cache时,可能会发生此问题。
可以通过以下命令检查:
SQL> select shrink_phase_knlasg from X$KNLASG; SHRINK_PHASE_KNLASG ------------------- 1
复制
shrink_phase_knlasg自动表名streams pool在收缩,当streams pool收缩完成后,该字段返回0,如果一直返回1,那么可能就会导致上述等待事件的发生。
处理:
将返回值持续为1的时候,强制缩小streams pool:
alter system set events 'immediate trace name mman_create_def_request level 6';
复制
注:
即使streams pool已经收缩结束,该标志也可能被修改,所以该等待事件一直存在,这是一个官方bug,需要补丁27634991来修复。19C已修复。
参考:Datapump Expdp Or Impdp Slowdown Due To Frequent Waits On ”Streams AQ: Enqueue Blocked On Low Memory" (Doc ID 2386566.1)
二、僵尸dump进程导致卡住
在执行expdp时,若出现如下信息,一直卡住,不报错也不中断,告警日志也未见异常,也没有异常等待事件,持续长时间,可能是由于dump的进程导致的。
检查数据泵任务:
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 8 1 2 AML94 SYS_IMPORT_TABLE_01 IMPORT TABLE NOT RUNNING 0 0 0 AML94 SYS_IMPORT_TABLE_05 IMPORT TABLE NOT RUNNING 0 0 0 AML94 SYS_IMPORT_TABLE_02 IMPORT TABLE NOT RUNNING 0 0 0
复制
可以看到有一些并未运行的job,但是资源未释放。可以通过attach尝试释放,但是会显示任务并不存在。所以可以直接在数据库里面释放。
删除掉任务表:
SYS@xxxxdb> set lines 300 SYS@xxxxdb> col owner for a10 col object_name for a35 SYS@xxxxdb> col object_type for a15 SYS@xxxxdb> select owner,object_name,object_type,status,LAST_DDL_TIME from dba_objects where object_name=upper('&name'); Enter value for name: SYS_IMPORT_TABLE_01 old 1: select owner,object_name,object_type,status,LAST_DDL_TIME from dba_objects where object_name=upper('&name') new 1: select owner,object_name,object_type,status,LAST_DDL_TIME from dba_objects where object_name=upper('SYS_IMPORT_TABLE_01') OWNER OBJECT_NAME OBJECT_TYPE STATUS LAST_DDL_TIME ---------- ----------------------------------- --------------- ------- ------------------- xxxx SYS_IMPORT_TABLE_01 TABLE VALID 2022-04-06 11:40:31 SYS@xxxxdb> drop table xxxx.SYS_IMPORT_TABLE_01 purge; Table dropped. SYS@xxxxdb> drop table xxxx.SYS_IMPORT_TABLE_02 purge; Table dropped. SYS@xxxxdb> drop table xxxx.SYS_IMPORT_TABLE_05 purge; Table dropped.
复制
如果导出窗口并未关闭的话,可以看到刚删除后,导出窗口立即继续执行。
最后修改时间:2022-06-24 16:02:15
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。