ITPub博客

首页 > 数据库 > Oracle > expdp导出卡主问题排查处理

expdp导出卡主问题排查处理

原创 Oracle 作者:梦夕林1992 时间:2025-03-13 17:57:42 0 删除 编辑

问题现象:

    在某次使用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';

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


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29956245/viewspace-3075753/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-10-13

  • 博文量
    90
  • 访问量
    85389