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

本系列文章将会介绍在并行操作过程中 slave 进程和 QC 进程经常遇到的等待事件!

PX Deq: Join ACK 等待

Waiting Process: QC

当我们执行并行语句的时候,查询协调器会根据并行度来创建slave 集合。协调进程首先会发送给每一个将要被使用的slaves一个join messages ,然后等待slave 进程返回 join 确认信息。如果并行操作需要两个slave 集合此过程会重复一遍!

等待时间:此等待事件是一个非空闲等待事件.

当PARALLEL_AUTOMATIC_TUNING = FALSE 时,slave加入一个slave 集合,它从shared pool中获取内存;

当PARALLEL_AUTOMATIC_TUNING = TRUE 时,它从large pool 中获取内存. 并行操作需要这些内存进程 slave to slave 或者slave to QC 之间的通信!此等待事件意味着QC 向slave 发送一个信息并等待分配给slave 内存然后返回一个确认信息给QC。 

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

Systemwide Waits:

发现此等待事件时应该在sql 进程层面进行调查。

可能的原因是:

有人在OS 层面终止了 slave 进程或者slave 进程异常中断。在PMON进程还没有处理slave的内部结构之前QC还以为他们还活着。当一个QC 尝试着将一个它发送消息的

slave加入slave 集合中时,但是QC并没有得到响应。应该检查是否有人kill 了一个空闲的slave进程。

另外一个原因是SGA空间耗尽,此时slave进程无法获取空间来建立向QC发送确认信息的通信通道,强制终止slave以便QC在PMON进程对slave进程进行清理的时候获得slave已经终止的通知。

时间: 2024-08-31 21:41:28

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

【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: 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 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: 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 u

【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

等待事件:PX Deq Credit: send blkd?TOAD ? GV$SESSION

等待事件:PX Deq Credit: send blkd?TOAD ? GV$SESSION     昨天看AWR报表,发现系统出现大量的PX Deq Credit: send blkd等待事件.Event                  Waits Time(s) Avg Wait(ms)  % Total Call Time Wait ClassPX Deq Credit: send blkd  905  1,829   2,021         74.9              O

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      指定