expdp导出卡主问题排查处理

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

问题现象:     在某次使用expdp进行全库导出时,任务长时间停滞在 99% 进度,日志无新输出,且数据库整体性能显著下降,部分会话登录延迟较高。  问题排查 1.确认 Data Pump 作业状态

 SELECT * FROM dba_datapump_jobs WHERE job_name = 'SYS_EXPORT_FULL_01';

  通过 dba_datapump_jobs 查询发现导出作业状态为 EXECUTING,但无进展 2.检查会话等待事件与锁定 -- 查找持有锁的会话  

SELECT vs.sid, vs.event, vp.spid, lo.object_id  
FROM v$session vs, v$process vp, dba_datapump_sessions dp, v$locked_object lo  
WHERE vs.paddr = vp.addr  
  AND vs.saddr = dp.saddr  
  AND lo.session_id = vs.sid;

  发现部分会话等待事件为 enq: TM - contention(表级锁争用)或 wait for unread message on broadcast channel(进程通信阻塞)  -- 定位锁定对象  

SELECT owner, object_name FROM dba_objects WHERE object_id = 52663;

结果显示会话 156 对表 XXX 持有 Row Share 锁  3.分析 Data Pump 进程活动 -- 跟踪 Data Pump 进程的 SQL 操作  

oradebug setospid 18136  -- 对应进程 ID  
oradebug dump errorstack 3

发现 Data Pump 尝试执行 LOCK TABLE XXX IN ROW SHARE MODE,但被阻塞  4.检查资源使用情况 磁盘 I/O:通过 iostat 确认导出目录无 I/O 瓶颈。 内存与交换空间:top 显示 Oracle 进程未频繁使用交换空间,排除内存不足问题  问题处理     表级锁争用:156会会话对表XXX 执行了DML操作,但一直未提交,导致 Data Pump 在导出时因锁争用挂起      确认该会话可以kill后,执行sql终止该会话

  ALTER SYSTEM KILL SESSION '156,18652';

    会话处理后导出正常完成。

相关推荐