【Oracle】並行等待之PX Deq: Execution Msg
本系列文章將會介紹在並行操作過程中 slave 程式和 QC 程式經常遇到的等待事件!
PX Deq: Execution Msg
該事件是並行查詢中的常見事件。當PQ slave程式在等待QC告訴它要做什麼的時候就會出現此事件(eg: when waiting to be told parse / execute / fetch etc..)
v$session_wait 中該等待事件對應的引數:
P1 = sleeptime/senderid
P2 = passes
P3 = not used
我們可以使用如下語句獲取轉換sleeptime/senderid的相關資訊:
set SERVEROUTPUT on
undef p1
declare
inst varchar(20);
sender varchar(20);
begin
select bitand(&&p1, 16711680) - 65535 as SNDRINST,
decode(bitand(&&p1, 65535),65535, 'QC', 'P'||to_char(bitand(&&p1, 65535),'fm000') ) as SNDR
into inst , sender
from dual
where bitand(&&p1, 268435456) = 268435456;
dbms_output.put_line('Instance = '||inst);
dbms_output.put_line('Sender = '||sender );
end;
/
如果P1的值為空,則意味slave 不需要等待任何程式
比如p1的值為268501004,則上面的sql會返回:
Instance = 1
Sender = P012
passes 程式在得到資訊之前迴圈輪轉等待的次數
該等待事件是一個空閒等待事件,當此等待事件出現,程式會持續等待並逐漸增加等待次數直到獲取資訊!
找到掛起的原因:
p1 的值表示正在等待資訊的程式!
轉摘
在主程式給parallel後,子程式被分發到了另一個節點,可能在長時間的執行過程中,某些子程式找不到上級程式,而上級程式需要等待所有子程式返回結果,於是出現等待,造成程式掛起。但事實上並非長期的PX Deq: Execute Reply等待都意味著程式被掛起,比如有些很差的執行計劃導致了長期的執行,無法判斷是掛起還是後臺正在執行。此時,我檢查的方法:
kl@k01> SELECT AUDSID FROM GV$SESSION WHERE EVENT LIKE 'PX%';
AUDSID
----------
72691033
72691033
72691033
72700075
72691033
kl@k01> SELECT INST_ID,SID, SERIAL#, EVENT FROM GV$SESSION WHERE AUDSID='72691033'
INST_ID SID SERIAL# EVENT
---------- ---------- ---------- ------------------------------
1 2388 1464 PX Deq: Execution Msg
1 2396 2107 db file parallel read
1 2414 2023 PX Deq: Table Q Normal
1 4907 5768 PX Deq: Execution Msg
1 4937 2742 PX Deq: Table Q Normal
---如果不是所有的Session都是PX Deq: Execution Reply,說明你的程式沒有掛起,不必把table的parallel改回1,或者disable parallel query/dml/ddl ...
參考:
http://hi.baidu.com/klkl1110/blog/item/037638168453b5064b90a700.html
http://www.oracleblog.cn/working-case/sql-wait-long-time-on-px-deq-execute-reply/?m=20070710
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-721196/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Oracle】並行等待之PX Deq: Join ACKOracle並行
- 【Oracle】並行等待之PX Deq: Execute ReplyOracle並行
- Wait Event "PX Deq: Execution Msg"AI
- 【Oracle】並行等待之PX Deq Credit: need bufferOracle並行
- 【Oracle】並行等待之PX Deq Credit: send blkdOracle並行
- 【Oracle】並行等待之PX Deq: Signal ACKOracle並行
- 【Oracle】並行等待之PX Deq: Table Q NormalOracle並行ORM
- 【Oracle】並行等待之PX Idle WaitOracle並行AI
- 【Oracle】-PX Deq Credit: send blkdOracle
- oracle parallel並行及px檢視viewOracleParallel並行View
- Oracle資料庫並行機制Parallel ExecutionOracle資料庫並行Parallel
- 查詢gv$session引發大量的PX Deq Credit: send blkd事件Session事件
- oracle10g parallel execution並行執行與大池large pool使用之四OracleParallel並行
- oracle execution planOracle
- Oracle Parallel ExecutionOracleParallel
- Bug 27223075 - Wait for 'PX Deq: Join Ack' when no active QC but PPA* slaves shoAI
- Oracle並行操作——並行DML操作Oracle並行
- Oracle並行操作——從序列到並行Oracle並行
- Oracle並行FAQOracle並行
- Oracle的並行Oracle並行
- Oracle並行操作——並行查詢(Parallel Query)Oracle並行Parallel
- oracle的並行世界Oracle並行
- Oracle中的並行Oracle並行
- Program Execution 程式的執行
- Oracle's Parallel Execution Features(zt)OracleParallel
- Oracle並行操作——淺議使用並行的時機Oracle並行
- Oracle並行基礎一Oracle並行
- Oracle並行基礎二Oracle並行
- Oracle Redo 並行機制Oracle Redo並行
- Oracle的並行操作[轉]Oracle並行
- Oracle並行新增主鍵Oracle並行
- oracle hint_px_distribute_push_subq_px_join_filter_qb_name_rewriteOracleFilter
- oracle 之 控制oracle RAC 進行並行運算Oracle並行
- oracle 9i啟用Execution PlanOracle
- 【Oracle】Master Note for Parallel Execution Wait EventsOracleASTParallelAI
- CSS · 0.1px,0.2px......0.9px,1px效果CSS
- Oracle“並行執行”——監控檢視Oracle並行
- 如何取得Oracle並行執行的traceOracle並行