שליפות שעושות Downgrade
לפעמים יש צורך למצוא מהן השליפות שעשו downgrade במערכת ולא קיבלו מספיק parallel processes. צריך להבחין בין שני מקרים: מקרה שהשליפות קיבלו חלק מהמשאבים ומקרה שבהם הן לא קיבלו בכלל משאבים ועכשיו הן עובדות ב-serial.
כדי למצוא מהן השליפות שקיבלו downgrade (אבל עדיין עובדות ב-Parallel) ניתן להשתמש בשליפה הבאה. השליפה מחזירה רק את ה-PX coordinator (כלומר ה-SID של ההורה) ולא את כל הפרוססים עצמם:
SELECT a.sid parent_sid,
a.logon_time,
a.program,
a.osuser,
a.username,
a.sql_id,
ps.req_degree,
ps.got_degree
FROM (SELECT s.sid,
s.osuser,
s.USERNAME,
s.status,
s.sql_id,
s.logon_time,
s.last_call_et,
UPPER(s.program) program
FROM v$session s
WHERE ((s.username IS NOT NULL) AND (NVL(s.osuser, 'x') <> 'SYSTEM') AND
(s.TYPE <> 'BACKGROUND'))) a
JOIN (SELECT DISTINCT qcsid,
CASE
WHEN req_degree > degree THEN
1
ELSE
0
END is_downgrade,
MAX(req_degree) req_degree,
MAX(degree) got_degree
FROM v$px_session
GROUP BY qcsid,
CASE
WHEN req_degree > degree THEN
1
ELSE
0
END) ps ON a.sid = ps.qcsid
WHERE ps.is_downgrade = 1
כדי לאתר את השליפות שלא קיבלו פרוססים בכלל (ובעצם עשו downgrade to serial) ניתן להשתמש בשליפה הבאה:
SELECT sess.sid parent_sid, logon_time, sess.program, sess.osuser, sess.username, sql_id, TRUNC (last_call_et / 60) dur_minutes FROM v$sesstat sesstat, v$sysstat sysstat, v$session sess WHERE sesstat.statistic# = sysstat.statistic# AND sesstat.sid = sess.sid AND name = 'Parallel operations downgraded to serial' AND sesstat.VALUE > 0 AND sess.status = 'ACTIVE'
