【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

时间: 2024-10-01 03:55:09

【Oracle】并行等待之PX Deq: Execution Msg的相关文章

【Oracle】并行等待之PX Deq: Table Q Normal

本系列文章将会介绍在并行操作过程中 slave 进程和 QC 进程经常遇到的等待事件! Waiting Processes:Slave 在并行执行环境中我们建立建立producer consumer 模型:  处理数据(比如 从磁盘获取数据并做join 连接)的slave 集叫做producer slave :另外一些等待获取处理结果数据的slave 称为consumer slave .等待事件 "PX Deq: Table Q Normal" 意味着消费者slave进程等待生产者sl

【Oracle】并行等待之PX Deq Credit: send blkd

本系列文章将会介绍在并行操作过程中 slave 进程和 QC 进程经常遇到的等待事件! PX Deq Credit: send blkd等待事件: Waiting Process: QC 想发送信息的进程没有credit bit. 进程想发送一个信息但是没有control credit ,进程必须首先发送一个消息去获取credit ,此等待事件以表明接收进程还没有完成前一个消息的处理."PX Deq Credit: send blkd" and "PX Deq Credit:

【Oracle】并行等待之PX Deq: Join ACK

本系列文章将会介绍在并行操作过程中 slave 进程和 QC 进程经常遇到的等待事件! PX Deq: Join ACK 等待 Waiting Process: QC 当我们执行并行语句的时候,查询协调器会根据并行度来创建slave 集合.协调进程首先会发送给每一个将要被使用的slaves一个join messages ,然后等待slave 进程返回 join 确认信息.如果并行操作需要两个slave 集合此过程会重复一遍! 等待时间:此等待事件是一个非空闲等待事件. 当PARALLEL_AUT

【Oracle】并行等待之PX Deq Credit: need buffer

本系列文章将会介绍在并行操作过程中 slave 进程和 QC 进程经常遇到的等待事件! PX Deq Credit: need buffer等待 QC和slave 之间使用队列进行沟通,每个队列使用buffer存放slave和slave或者slave和QC 之间的信息.队列需要一个creidt 标志位来保证任意时刻只有一个进程能够使用此buffer发送数据信息!一个进程要通过队列发送数据或者响应信息就需要获取credit bit,而credit bit则是通过一个buffer 来发送的.当出现该

【Oracle】并行等待之PX Deq: Signal ACK

本系列文章将会介绍在并行操作过程中 slave 进程和 QC 进程经常遇到的等待事件! Waiting Process:QC QC 进程想slaves 进程发送控制信息并期待slaves 进程的回复  QC 进程发送一个控制信息给slaves进程.slave 进程必须发送对控制信息的响应.在QC等待获取响应的过程就是"PX Deq: Signal ACK" v$session_wait 中该等待事件对应的参数: P1 = sleeptime/senderid P2 = passes P

【Oracle】并行等待之PX Deq: Execute Reply

本系列文章将会介绍在并行操作过程中 slave 进程和 QC 进程经常遇到的等待事件! Waiting Process: QC 协调器正在等待一个 从slaves 进程对控制信息的响应(确认通知)或者期望从slave进程集中获取数据.这个等待事件意味着QC等待slaves结束执行sql 并且将结果集发送给QC  v$session_wait 中该等待事件对应的参数: P1 = sleeptime/senderid P2 = passes P3 = not used 我们可以使用如下语句获取转换s

【Oracle】并行等待之PX Idle Wait

本系列文章将会介绍在并行操作过程中 slave 进程和 QC 进程经常遇到的等待事件! Waiting Process: Slave 此等待事件说明slave进程是空闲的并且等待QC 进程对其进行调度 执行其他并行操作. v$session_wait 中该等待事件对应的参数: P1 = sleeptime/senderid P2 = passes P3 = not used sleeptime/senderid 我们可以使用如下语句获取转换sleeptime/senderid的相关信息: set

【Oracle】Master Note for Parallel Execution Wait Events

关于并行的等待事件汇总: Scope This is intended as a reference for anyone involved in database tuning. This Note lists the wait events and points to Reference Note where a Note is available. At the moment we consider the following PX wait events idle: ---PX Deq:

Oracle OWI 等待事件视图(v$session_wait/v$session_event/v$system_event)

    通常情况下,用户提交一条SQL语句,总会存在这样或那样的等待事件.也就是说由于所需资源被占用导致进程不得不处于等待状态.Oracle为我们提供了获取这些等待事件的可用视图.根据这些视图可以得知哪些事件导致该SQL语句效率低下而采取相应的修改或调整.本文基于Oracle 10g描述了如何通过视图v$session_wait,v$session_event,以及v$system_event去获取等待事件的相关信息.   1.等待事件相关参数  timed_statistics      指定