本系列文章将會介紹在并行操作過程中 slave 程序和 qc 程序經常遇到的等待事件!
waiting process:qc
qc 程序想slaves 程序發送控制資訊并期待slaves 程序的回複
qc 程序發送一個控制資訊給slaves程序。slave 程序必須發送對控制資訊的響應。在qc等待擷取響應的過程就是“px deq: signal ack”
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;
/
passes 等待的次數!
如果p1的值為空,則意味slave 不需要等待任何程序
比如p1的值為268501004,則上面的sql會傳回:
instance = 1
sender = p012
等待時間:這是一個空閑等待事件,qc正在等待slave 程序的确認資訊。可以忽略此等待事件!