impdp/expdp 並行時出現wait for unread message on broadcast channel等待事件

531968912發表於2015-12-24
 


昨晚有個朋友說加班在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


 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25462274/viewspace-1958805/,如需轉載,請註明出處,否則將追究法律責任。

相關文章