10GR2 Parallel DML Running in Serial, but why?
I've got many parallel DML statements from a vendor supplied procedure. Each of them gives the correct parallel hints.
The statements all look something like these examples:
DELETE /*+ parallel(a,8) */ FROM HSASYS.CLM_APPLC_DTL_ADT a
WHERE ( ROWID ) IN
( SELECT /*+ parallel(b,8) */ STRROWID
FROM IDENTIFICATION.CLM_APPLC_DTL_ADT b
WHERE b.lrunseq = 32);
DELETE /*+ parallel(a,8) */ FROM HSASYS.FIN_VOU_APPR_DTL a
WHERE ( ROWID ) IN
( SELECT /*+ parallel(b,8) */ STRROWID
FROM IDENTIFICATION.FIN_VOU_APPR_DTL b
WHERE b.lrunseq = 32);
For each statement only the name of the table changes.
The weird thing is that up to a point, the statements execute in parallel as expected. But after a point, they all run serially.
DELETE /*+ parallel(a,8) */ FROM HSASYS.CLM_APPLC_DTL_ADT a
WHERE ( ROWID ) IN
( SELECT /*+ parallel(b,8) */ STRROWID
FROM IDENTIFICATION.CLM_APPLC_DTL_ADT b
WHERE b.lrunseq = 32);
DELETE /*+ parallel(a,8) */ FROM HSASYS.FIN_VOU_APPR_DTL a
WHERE ( ROWID ) IN
( SELECT /*+ parallel(b,8) */ STRROWID
FROM IDENTIFICATION.FIN_VOU_APPR_DTL b
WHERE b.lrunseq = 32);
For each statement only the name of the table changes.
The weird thing is that up to a point, the statements execute in parallel as expected. But after a point, they all run serially.
0