0

When executing the below-mentioned merge query in the oracle database(12C 2.2), I am getting the following error "ORA-12801: error signaled in parallel query server P02T ORA-30926: unable to get a stable set of rows in the source tables"

ALTER session enable parallel dml;
MERGE
/*+ parallel(A) enable_parallel_dml*/
INTO EDWFIN.PSP_LABOR_SCHD_DAY_F_ROLLUP A USING
EDWFIN.PSP_LABOR_SCHD_DAY_F_ROLLUP_FRS_356 B ON
(
  A.PAY_RANGE_START_DATE_KEY = B.PAY_RANGE_START_DATE_KEY AND
  A.AA_PERSON_NATURAL_KEY    = B.AA_PERSON_NATURAL_KEY AND
  A.AA_PERSON_ASSIGNMENT_KEY = B.AA_PERSON_ASSIGNMENT_KEY
)
WHEN MATCHED THEN
  UPDATE
  SET
    A.SRC_CREATED_DATE     = B.SRC_CREATED_DATE,
    A.SRC_LAST_UPDATE_DATE = B.SRC_LAST_UPDATE_DATE
  WHERE
    A.SRC_CREATED_DATE       <> B.SRC_CREATED_DATE
  AND A.SRC_LAST_UPDATE_DATE <> B.SRC_LAST_UPDATE_DATE;
  COMMIT; 
  
karthik
  • 185
  • 3
  • 13
  • 3
    Does this answer your question? [ORA-30926: unable to get a stable set of rows in the source tables](https://stackoverflow.com/questions/2337271/ora-30926-unable-to-get-a-stable-set-of-rows-in-the-source-tables) – OldProgrammer May 09 '21 at 14:34
  • 2
    The combination of (B.PAY_RANGE_START_DATE_KEY, B.AA_PERSON_NATURAL_KEY, B.AA_PERSON_ASSIGNMENT_KEY) contains duplicates. – William Robertson May 09 '21 at 16:49
  • @WilliamRobertson so would writing a query like this in the using clause, would solve the problem? SELECT PAY_RANGE_START_DATE_KEY, AA_PERSON_NATURAL_KEY, AA_PERSON_ASSIGNMENT_KEY, SCHEDULE_LINE_ID, SRC_CREATED_DATE, SRC_LAST_UPDATE_DATE FROM EDWFIN.PSP_LABOR_SCHD_DAY_F_ROLLUP_FRS_356 GROUP BY PAY_RANGE_START_DATE_KEY, AA_PERSON_NATURAL_KEY, AA_PERSON_ASSIGNMENT_KEY, SCHEDULE_LINE_ID, SRC_CREATED_DATE, SRC_LAST_UPDATE_DATE HAVING COUNT(*) = 1 – karthik May 10 '21 at 06:10

0 Answers0