昨晚有个朋友说加班在IMPDP数据, 在导入中途突然没有了进展,挂在那里不动了,impdp 窗口也没有报错, 一直等了1个多小时,说是impdp使用了parallel,怀疑是parallel参数出了问题, 最终其实原因很简单。这里只是简单的描述遇到这类问题时的处理思路。

set lines 150 pages 100 numwidth 7 
col program for a38 
col username for a10 
col spid for a7 
select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') "DATE", s.program, s.sid,   
       s.status, s.username, d.job_name, p.spid, s.serial#, p.pid   
  from v$session s, v$process p, dba_datapump_sessions d  
 where p.addr=s.paddr and s.saddr=d.saddr;

检查v$px_process是否并行,
检查dba_datapump_jobs 确认job是否executing 状态,
检查v$session_longops 看到进度,另外从 v$transaction 视图 USED_UBLK , used_urec impdp进程状态

1, 先确认是hang 还是 slow ;
2, 检查当前sesion的wait event ;
3, 检查Alert log;

开始说是使用了impdp parallel ,
检查v$px_process无记录确认当前无并行,
检查dba_datapump_jobs 确认了job依然是executing 状态,
检查v$session_longops 看到进度无进展,这个从 v$transaction 视图 USED_UBLK , used_urec 字段也可以确认impdp进程是hang没有必要再死等
检查v$session BLOCKING_SESSION,event,SECONDS_IN_WAIT,state,LAST_CALL_ET ,从event 可以确认是在等待 “wait for unread message on broadcast channel”
这是一个idle wait,在等待message请求,通常这个问题是因为空间问题,但是不会在datapump进程抛出异常,alert.log中才有相关错误原因
随后再alert log 中找到了错误原因是提示存放归档的闪回区使用满了, 有时会是导入的Tablespace无可用空间, 接下来的处理方法就很简单了。

set lines 150 pages 100 numwidth 7
col program for a38
col username for a10
col spid for a7
select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') "DATE", s.program, s.sid,
s.status, s.username, d.job_name, p.spid, s.serial#, p.pid
from v$session s, v$process p, dba_datapump_sessions d
where p.addr=s.paddr and s.saddr=d.saddr;

另外也可以使用trace 、10046 event 诊断请参考MOS 286496.1

IMPDP hangs, session wait “wait for unread message on broadcast channel”的更多相关文章

  1. 针对数据泵导出 (expdp) 和导入 (impdp)工具性能降低问题的检查表 (文档 ID 1549185.1)

    针对数据泵导出 (expdp) 和导入 (impdp)工具性能降低问题的检查表 (文档 ID 1549185.1) 文档内容 适用于: Oracle Database – Enterprise Edi ...

  2. 推荐一个很好用的脚本session snapper

    源网址http://tech.e2sn.com/oracle-scripts-and-tools/session-snapper 内容: If you want to just download Sn ...

  3. [转帖]EXPDP dumpfile和parallel的关系

    http://blog.itpub.net/28602568/viewspace-2133375/ 转帖 EXPDP 里面 parallel 与 dumpfile 里面的文件数的关系. 但是我这里有一 ...

  4. AWR Report 关键参数详细分析

    WORKLOAD REPOSITORY report for DB Name DB Id Instance Inst num Startup Time Release RAC CALLDB 12510 ...

  5. oracle 非空闲等待事件排查

    想必大家都知道Oracle的等待时间分为两种,一种我们称之为“空闲等待事件”,另外一种称之为“非空闲等待事件”.“空闲等待事件”——作为DBA可以不用过分的关注这类等待事件.“非空闲等待事件”——当D ...

  6. Spring Boot 入门之 Web 篇(二)

    原文地址:Spring Boot 入门之 Web 篇(二) 博客地址:http://www.extlight.com 一.前言 上一篇<Spring Boot 入门之基础篇(一)>介绍了 ...

  7. Openfire的启动过程与session管理

    说明   本文源码基于Openfire4.0.2.   Openfire的启动       Openfire的启动过程非常的简单,通过一个入口初始化lib目录下的openfire.jar包,并启动一个 ...

  8. Servlet的学习之Session(2)

    在上一篇中我们学习了Session对象默认在一个会话过程中,由服务器创建,能保存在这个会话过程中用户访问多个web资源时产生的需要保存的数据,并在访问服务器中其他web资源时可以将这些数据从Sessi ...

  9. Servlet的学习之Session(1)

    在学习完了Servlet中的Cookie技术后,我们再来学习另一个能保存会话数据的技术——Session. Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其 ...

随机推荐

  1. Linux 文件权限总结

    在 Linux 中最基本的任务之一就是设置文件权限.理解它们是如何实现的是你进入 Linux 世界的第一步.如您所料,这一基本操作在类 UNIX 操作系统中大同小异.实际上,Linux 文件权限系统就 ...

  2. Java 并发包中的读写锁及其实现分析

    1. 前言 在Java并发包中常用的锁(如:ReentrantLock),基本上都是排他锁,这些锁在同一时刻只允许一个线程进行访问,而读写锁在同一时 刻可以允许多个读线程访问,但是在写线程访问时,所有 ...

  3. springMVC源码浅析

    因故,需要学习springmvc,现在demo已经跑起来.列文分析springmvc并简单对比struts2. springmvc的核心对象dispatcherServlet.struts2的核心对象 ...

  4. bash的多行注释

    :<<EOF 注释的代码... EOF 单行是#

  5. ARCGIS 点抽稀的实现

    点抽稀是制图综合的一部分,即在点数据点特别密集是,需要选取比较重要的点而舍去不要重的点,使得图面整洁. 一.基本原理 先把所有的点符号都设成透明.这样显示是没有点的.然后给这些点设置标注.标注方法很奇 ...

  6. 337. House Robber III

    二刷吧..不知道为什么house robbery系列我找不到笔记,不过印象中做了好几次了. 不是很难,用的post-order做bottom-up的运算. 对于一个Node来说,有2种情况,一种是选( ...

  7. Codeblocks + opencv + Cmake + minGW 环境搭建(一劳永逸版)

    应工作开发需要,今天搭建一个codeblocks的C++开发环境,需要配置opencv2.4.4的API协同开发. 1.为了避免不必要的配置编译器,下载codeblocks16.1带mingw编译器版 ...

  8. ABAP(笔记)

    1.excel表格上传 *&---------------------------------------------------------------------* ** 程序名称:ZSD ...

  9. strcmp函数和strcpy函数

    (一)strcmp函数 strcmp函数是比較两个字符串的大小,返回比較的结果.一般形式是: i=strcmp(字符串,字符串); 当中,字符串1.字符串2均可为字符串常量或变量:i   是用于存放比 ...

  10. [Javascript] Immutable opreators

    slice filter map ...spread concat Object.assign let items = [1,2,3]; //add let newItems = [...items, ...