diff --git a/MARS_Packages/REL02_POST/MARS-1409-POSTHOOK/01_MARS_1409_POSTHOOK_update_existing_workflow_keys.sql b/MARS_Packages/REL02_POST/MARS-1409-POSTHOOK/01_MARS_1409_POSTHOOK_update_existing_workflow_keys.sql index c35b174..eeb518d 100644 --- a/MARS_Packages/REL02_POST/MARS-1409-POSTHOOK/01_MARS_1409_POSTHOOK_update_existing_workflow_keys.sql +++ b/MARS_Packages/REL02_POST/MARS-1409-POSTHOOK/01_MARS_1409_POSTHOOK_update_existing_workflow_keys.sql @@ -88,10 +88,11 @@ BEGIN ' (' || config_rec.A_SOURCE_KEY || '/' || config_rec.SOURCE_FILE_ID || '/' || config_rec.TABLE_ID || ')...'); -- Update using ODS table + -- NO_PARALLEL hint required: ODS external tables (OCI Object Storage) fail with ORA-12801 under parallel query vSQL := 'UPDATE CT_MRDS.A_SOURCE_FILE_RECEIVED sfr ' || 'SET A_WORKFLOW_HISTORY_KEY = ( ' || - ' SELECT t.A_WORKFLOW_HISTORY_KEY ' || + ' SELECT /*+ NO_PARALLEL(t) */ t.A_WORKFLOW_HISTORY_KEY ' || ' FROM ' || vTableName || ' t ' || ' WHERE t.file$name = sfr.SOURCE_FILE_NAME ' || ' AND rownum=1 ' || @@ -100,13 +101,13 @@ BEGIN ' AND sfr.A_WORKFLOW_HISTORY_KEY IS NULL ' || ' AND sfr.PROCESSING_STATUS IN (''VALIDATED'', ''READY_FOR_INGESTION'', ''INGESTED'', ''ARCHIVED'', ''ARCHIVED_AND_TRASHED'', ''ARCHIVED_AND_PURGED'') ' || ' AND EXISTS ( ' || - ' SELECT 1 FROM ' || vTableName || ' t ' || + ' SELECT /*+ NO_PARALLEL(t) */ 1 FROM ' || vTableName || ' t ' || ' WHERE t.file$name = sfr.SOURCE_FILE_NAME ' || ' AND rownum=1 ' || ' )'; EXECUTE IMMEDIATE vSQL USING config_rec.A_SOURCE_FILE_CONFIG_KEY; - + commit; vUpdatedCurrent := SQL%ROWCOUNT; vUpdatedTotal := vUpdatedTotal + vUpdatedCurrent; @@ -177,3 +178,47 @@ END; PROMPT PROMPT Existing workflow keys update completed! PROMPT + +-- ============================================================================ +-- Step 2: Set PROCESSING_STATUS = 'INGESTED' for records whose workflow +-- completed successfully (mirrors trigger A_WORKFLOW_HISTORY logic) +-- ============================================================================ +PROMPT +PROMPT Updating PROCESSING_STATUS to INGESTED for completed workflows... + +DECLARE + vUpdatedIngested NUMBER := 0; +BEGIN + UPDATE CT_MRDS.A_SOURCE_FILE_RECEIVED sfr + SET sfr.PROCESSING_STATUS = 'INGESTED', + sfr.PROCESS_NAME = ( + SELECT wh.service_name + FROM CT_MRDS.A_WORKFLOW_HISTORY wh + WHERE wh.a_workflow_history_key = sfr.a_workflow_history_key + ) + WHERE sfr.A_WORKFLOW_HISTORY_KEY IS NOT NULL + AND sfr.PROCESSING_STATUS IN ('READY_FOR_INGESTION') + AND EXISTS ( + SELECT 1 + FROM CT_MRDS.A_WORKFLOW_HISTORY wh + WHERE wh.a_workflow_history_key = sfr.a_workflow_history_key + AND wh.workflow_successful = 'Y' + ); + + vUpdatedIngested := SQL%ROWCOUNT; + COMMIT; + + DBMS_OUTPUT.PUT_LINE('Updated PROCESSING_STATUS to INGESTED: ' || vUpdatedIngested || ' record(s)'); + +EXCEPTION + WHEN OTHERS THEN + ROLLBACK; + DBMS_OUTPUT.PUT_LINE('FATAL ERROR: ' || SQLERRM); + DBMS_OUTPUT.PUT_LINE('Transaction rolled back'); + RAISE; +END; +/ + +PROMPT +PROMPT INGESTED status update completed! +PROMPT diff --git a/MARS_Packages/REL02_POST/MARS-1409-POSTHOOK/install_mars1409_posthook.sql b/MARS_Packages/REL02_POST/MARS-1409-POSTHOOK/install_mars1409_posthook.sql index 5c0df6e..932210c 100644 --- a/MARS_Packages/REL02_POST/MARS-1409-POSTHOOK/install_mars1409_posthook.sql +++ b/MARS_Packages/REL02_POST/MARS-1409-POSTHOOK/install_mars1409_posthook.sql @@ -39,7 +39,7 @@ PROMPT - Match records by SOURCE_FILE_NAME against file$name in ODS tables PROMPT - Skip configs with no NULL records or missing ODS tables PROMPT PROMPT Prerequisite: MARS-1409 installed (A_WORKFLOW_HISTORY_KEY column exists) -PROMPT Expected Duration: 1-5 minutes (depends on data volume) +PROMPT Expected Duration: 30-180 minutes (depends on data volume) PROMPT ============================================================================ -- Confirm installation with user