From d6c34085f721ee460e1bf3eeba89e6a6cb305f9f Mon Sep 17 00:00:00 2001 From: Grzegorz Michalski Date: Fri, 13 Feb 2026 09:00:13 +0100 Subject: [PATCH] Enhance MARS-826 Rollback Scripts and Export Procedures - Added parameters `pRegisterExport` and `pProcessName` to export procedures for better tracking. - Created a new rollback script `90_MARS_826_rollback_file_registrations.sql` to delete file registration records from `A_SOURCE_FILE_RECEIVED`. - Updated existing rollback scripts for ADHOC_ADJ, BALANCESHEET, CSM_ADJ, STANDING_FACILITY, MRR_IND_CURRENT_ACCOUNT, FORECAST, QR_ADJ, and TTS tables to improve file deletion logic and output messages. - Ensured all rollback scripts provide informative output regarding the number of files deleted or skipped. --- .../01_MARS_826_export_ADHOC_ADJ_tables.sql | 12 ++- ...02_MARS_826_export_BALANCESHEET_tables.sql | 8 +- .../03_MARS_826_export_CSM_ADJ_tables.sql | 12 ++- ...RS_826_export_STANDING_FACILITY_tables.sql | 8 +- ..._export_MRR_IND_CURRENT_ACCOUNT_tables.sql | 8 +- .../06_MARS_826_export_FORECAST_tables.sql | 8 +- .../07_MARS_826_export_QR_ADJ_tables.sql | 12 ++- .../08_MARS_826_export_TTS_tables.sql | 8 +- ...0_MARS_826_rollback_file_registrations.sql | 46 +++++++++++ .../91_MARS_826_rollback_ADHOC_ADJ_tables.sql | 78 ++++++++----------- ..._MARS_826_rollback_BALANCESHEET_tables.sql | 77 ++++++++---------- .../93_MARS_826_rollback_CSM_ADJ_tables.sql | 78 ++++++++----------- ..._826_rollback_STANDING_FACILITY_tables.sql | 77 ++++++++---------- ...ollback_MRR_IND_CURRENT_ACCOUNT_tables.sql | 77 ++++++++---------- .../96_MARS_826_rollback_FORECAST_tables.sql | 77 ++++++++---------- .../97_MARS_826_rollback_QR_ADJ_tables.sql | 78 ++++++++----------- .../98_MARS_826_rollback_TTS_tables.sql | 77 ++++++++---------- .../MARS-826/rollback_mars826.sql | 1 + 18 files changed, 352 insertions(+), 390 deletions(-) create mode 100644 MARS_Packages/REL01_ADDITIONS/MARS-826/90_MARS_826_rollback_file_registrations.sql diff --git a/MARS_Packages/REL01_ADDITIONS/MARS-826/01_MARS_826_export_ADHOC_ADJ_tables.sql b/MARS_Packages/REL01_ADDITIONS/MARS-826/01_MARS_826_export_ADHOC_ADJ_tables.sql index 81183c5..aae0d04 100644 --- a/MARS_Packages/REL01_ADDITIONS/MARS-826/01_MARS_826_export_ADHOC_ADJ_tables.sql +++ b/MARS_Packages/REL01_ADDITIONS/MARS-826/01_MARS_826_export_ADHOC_ADJ_tables.sql @@ -24,7 +24,9 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_ADHOC_ADJUSTMENTS_HEADER', - pParallelDegree => 1 + pParallelDegree => 1, + pRegisterExport => TRUE, + pProcessName => 'MARS-826' ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_ADHOC_ADJ_HEADER exported'); EXCEPTION @@ -44,7 +46,9 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_ADHOC_ADJUSTMENTS_ITEM', - pParallelDegree => 1 + pParallelDegree => 1, + pRegisterExport => TRUE, + pProcessName => 'MARS-826' ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_ADHOC_ADJ_ITEM exported'); EXCEPTION @@ -64,7 +68,9 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_ADHOC_ADJUSTMENTS_ITEM_HEADER', - pParallelDegree => 1 + pParallelDegree => 1, + pRegisterExport => TRUE, + pProcessName => 'MARS-826' ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_ADHOC_ADJ_ITEM_HEADER exported'); EXCEPTION diff --git a/MARS_Packages/REL01_ADDITIONS/MARS-826/02_MARS_826_export_BALANCESHEET_tables.sql b/MARS_Packages/REL01_ADDITIONS/MARS-826/02_MARS_826_export_BALANCESHEET_tables.sql index bd9a561..e918dcd 100644 --- a/MARS_Packages/REL01_ADDITIONS/MARS-826/02_MARS_826_export_BALANCESHEET_tables.sql +++ b/MARS_Packages/REL01_ADDITIONS/MARS-826/02_MARS_826_export_BALANCESHEET_tables.sql @@ -29,7 +29,9 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_KEY', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_BALANCESHEET_HEADER', - pParallelDegree => 4 + pParallelDegree => 4, + pRegisterExport => TRUE, + pProcessName => 'MARS-826' ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_BALANCESHEET_HEADER exported'); EXCEPTION @@ -49,7 +51,9 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_KEY', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_BALANCESHEET_ITEM', - pParallelDegree => 16 + pParallelDegree => 16, + pRegisterExport => TRUE, + pProcessName => 'MARS-826' ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_BALANCESHEET_ITEM exported'); EXCEPTION diff --git a/MARS_Packages/REL01_ADDITIONS/MARS-826/03_MARS_826_export_CSM_ADJ_tables.sql b/MARS_Packages/REL01_ADDITIONS/MARS-826/03_MARS_826_export_CSM_ADJ_tables.sql index 8a9453d..c29c8d5 100644 --- a/MARS_Packages/REL01_ADDITIONS/MARS-826/03_MARS_826_export_CSM_ADJ_tables.sql +++ b/MARS_Packages/REL01_ADDITIONS/MARS-826/03_MARS_826_export_CSM_ADJ_tables.sql @@ -24,7 +24,9 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_CSM_ADJUSTMENTS_HEADER', - pParallelDegree => 1 + pParallelDegree => 1, + pRegisterExport => TRUE, + pProcessName => 'MARS-826' ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_CSM_ADJ_HEADER exported'); EXCEPTION @@ -44,7 +46,9 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_CSM_ADJUSTMENTS_ITEM', - pParallelDegree => 2 + pParallelDegree => 2, + pRegisterExport => TRUE, + pProcessName => 'MARS-826' ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_CSM_ADJ_ITEM exported'); EXCEPTION @@ -64,7 +68,9 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_CSM_ADJUSTMENTS_ITEM_HEADER', - pParallelDegree => 2 + pParallelDegree => 2, + pRegisterExport => TRUE, + pProcessName => 'MARS-826' ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_CSM_ADJ_ITEM_HEADER exported'); EXCEPTION diff --git a/MARS_Packages/REL01_ADDITIONS/MARS-826/04_MARS_826_export_STANDING_FACILITY_tables.sql b/MARS_Packages/REL01_ADDITIONS/MARS-826/04_MARS_826_export_STANDING_FACILITY_tables.sql index f1931c5..2fbff54 100644 --- a/MARS_Packages/REL01_ADDITIONS/MARS-826/04_MARS_826_export_STANDING_FACILITY_tables.sql +++ b/MARS_Packages/REL01_ADDITIONS/MARS-826/04_MARS_826_export_STANDING_FACILITY_tables.sql @@ -29,7 +29,9 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_FK', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_STANDING_FACILITIES', - pParallelDegree => 8 + pParallelDegree => 8, + pRegisterExport => TRUE, + pProcessName => 'MARS-826' ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_STANDING_FACILITY exported'); EXCEPTION @@ -49,7 +51,9 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_FK', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_STANDING_FACILITIES_HEADER', - pParallelDegree => 2 + pParallelDegree => 2, + pRegisterExport => TRUE, + pProcessName => 'MARS-826' ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_STANDING_FACILITY_HEADER exported'); EXCEPTION diff --git a/MARS_Packages/REL01_ADDITIONS/MARS-826/05_MARS_826_export_MRR_IND_CURRENT_ACCOUNT_tables.sql b/MARS_Packages/REL01_ADDITIONS/MARS-826/05_MARS_826_export_MRR_IND_CURRENT_ACCOUNT_tables.sql index 5ae57de..205e412 100644 --- a/MARS_Packages/REL01_ADDITIONS/MARS-826/05_MARS_826_export_MRR_IND_CURRENT_ACCOUNT_tables.sql +++ b/MARS_Packages/REL01_ADDITIONS/MARS-826/05_MARS_826_export_MRR_IND_CURRENT_ACCOUNT_tables.sql @@ -25,7 +25,9 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_KEY', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_CURRENT_ACCOUNTS_HEADER', - pParallelDegree => 2 + pParallelDegree => 2, + pRegisterExport => TRUE, + pProcessName => 'MARS-826' ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_MRR_IND_CURRENT_ACCOUNT_HEADER exported'); EXCEPTION @@ -45,7 +47,9 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_KEY', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_CURRENT_ACCOUNTS_ITEM', - pParallelDegree => 16 + pParallelDegree => 16, + pRegisterExport => TRUE, + pProcessName => 'MARS-826' ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_MRR_IND_CURRENT_ACCOUNT_ITEM exported'); EXCEPTION diff --git a/MARS_Packages/REL01_ADDITIONS/MARS-826/06_MARS_826_export_FORECAST_tables.sql b/MARS_Packages/REL01_ADDITIONS/MARS-826/06_MARS_826_export_FORECAST_tables.sql index 3cd4a8d..7efde4a 100644 --- a/MARS_Packages/REL01_ADDITIONS/MARS-826/06_MARS_826_export_FORECAST_tables.sql +++ b/MARS_Packages/REL01_ADDITIONS/MARS-826/06_MARS_826_export_FORECAST_tables.sql @@ -29,7 +29,9 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_FK', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_FORECAST_HEADER', - pParallelDegree => 4 + pParallelDegree => 4, + pRegisterExport => TRUE, + pProcessName => 'MARS-826' ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_FORECAST_HEADER exported'); EXCEPTION @@ -49,7 +51,9 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_FK', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_FORECAST_ITEM', - pParallelDegree => 16 + pParallelDegree => 16, + pRegisterExport => TRUE, + pProcessName => 'MARS-826' ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_FORECAST_ITEM exported'); EXCEPTION diff --git a/MARS_Packages/REL01_ADDITIONS/MARS-826/07_MARS_826_export_QR_ADJ_tables.sql b/MARS_Packages/REL01_ADDITIONS/MARS-826/07_MARS_826_export_QR_ADJ_tables.sql index 1767964..aa362d4 100644 --- a/MARS_Packages/REL01_ADDITIONS/MARS-826/07_MARS_826_export_QR_ADJ_tables.sql +++ b/MARS_Packages/REL01_ADDITIONS/MARS-826/07_MARS_826_export_QR_ADJ_tables.sql @@ -24,7 +24,9 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_QRE_ADJUSTMENTS_HEADER', - pParallelDegree => 1 + pParallelDegree => 1, + pRegisterExport => TRUE, + pProcessName => 'MARS-826' ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_QR_ADJ_HEADER exported'); EXCEPTION @@ -44,7 +46,9 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_QRE_ADJUSTMENTS_ITEM', - pParallelDegree => 4 + pParallelDegree => 4, + pRegisterExport => TRUE, + pProcessName => 'MARS-826' ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_QR_ADJ_ITEM exported'); EXCEPTION @@ -64,7 +68,9 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_QRE_ADJUSTMENTS_ITEM_HEADER', - pParallelDegree => 2 + pParallelDegree => 2, + pRegisterExport => TRUE, + pProcessName => 'MARS-826' ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_QR_ADJ_ITEM_HEADER exported'); EXCEPTION diff --git a/MARS_Packages/REL01_ADDITIONS/MARS-826/08_MARS_826_export_TTS_tables.sql b/MARS_Packages/REL01_ADDITIONS/MARS-826/08_MARS_826_export_TTS_tables.sql index 6dfc97f..ab37082 100644 --- a/MARS_Packages/REL01_ADDITIONS/MARS-826/08_MARS_826_export_TTS_tables.sql +++ b/MARS_Packages/REL01_ADDITIONS/MARS-826/08_MARS_826_export_TTS_tables.sql @@ -24,7 +24,9 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_FK', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_TTS_HEADER', - pParallelDegree => 1 + pParallelDegree => 1, + pRegisterExport => TRUE, + pProcessName => 'MARS-826' ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_TTS_HEADER exported'); EXCEPTION @@ -44,7 +46,9 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_FK', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_TTS_ITEM', - pParallelDegree => 1 + pParallelDegree => 1, + pRegisterExport => TRUE, + pProcessName => 'MARS-826' ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_TTS_ITEM exported'); EXCEPTION diff --git a/MARS_Packages/REL01_ADDITIONS/MARS-826/90_MARS_826_rollback_file_registrations.sql b/MARS_Packages/REL01_ADDITIONS/MARS-826/90_MARS_826_rollback_file_registrations.sql new file mode 100644 index 0000000..61be7e7 --- /dev/null +++ b/MARS_Packages/REL01_ADDITIONS/MARS-826/90_MARS_826_rollback_file_registrations.sql @@ -0,0 +1,46 @@ +-- ===================================================================================== +-- Script: 90_MARS_826_rollback_file_registrations.sql +-- Purpose: Delete file registration records for MARS-826 from A_SOURCE_FILE_RECEIVED +-- Author: Grzegorz Michalski +-- Created: 2026-02-13 +-- MARS Issue: MARS-826 +-- Target Table: CT_MRDS.A_SOURCE_FILE_RECEIVED +-- ===================================================================================== + +SET SERVEROUTPUT ON SIZE UNLIMITED; +SET FEEDBACK ON; + +PROMPT ===================================================================================== +PROMPT MARS-826 Rollback: Deleting file registration records from A_SOURCE_FILE_RECEIVED +PROMPT ===================================================================================== + +DECLARE + vDeletedCount NUMBER := 0; +BEGIN + DBMS_OUTPUT.PUT_LINE('START TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3')); + DBMS_OUTPUT.PUT_LINE(''); + DBMS_OUTPUT.PUT_LINE('Deleting file registrations for PROCESS_NAME = ''MARS-826''...'); + + -- Delete all records registered by MARS-826 process + DELETE FROM CT_MRDS.A_SOURCE_FILE_RECEIVED + WHERE PROCESS_NAME = 'MARS-826'; + + vDeletedCount := SQL%ROWCOUNT; + COMMIT; + + DBMS_OUTPUT.PUT_LINE(''); + DBMS_OUTPUT.PUT_LINE('====================================================================================='); + DBMS_OUTPUT.PUT_LINE('ROLLBACK COMPLETE: Deleted ' || vDeletedCount || ' file registration record(s)'); + DBMS_OUTPUT.PUT_LINE('END TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3')); + DBMS_OUTPUT.PUT_LINE('====================================================================================='); + +EXCEPTION + WHEN OTHERS THEN + ROLLBACK; + DBMS_OUTPUT.PUT_LINE(''); + DBMS_OUTPUT.PUT_LINE('FATAL ERROR: ' || SQLERRM); + DBMS_OUTPUT.PUT_LINE('Error occurred at: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3')); + RAISE; +END; +/ + diff --git a/MARS_Packages/REL01_ADDITIONS/MARS-826/91_MARS_826_rollback_ADHOC_ADJ_tables.sql b/MARS_Packages/REL01_ADDITIONS/MARS-826/91_MARS_826_rollback_ADHOC_ADJ_tables.sql index cd83937..580e22a 100644 --- a/MARS_Packages/REL01_ADDITIONS/MARS-826/91_MARS_826_rollback_ADHOC_ADJ_tables.sql +++ b/MARS_Packages/REL01_ADDITIONS/MARS-826/91_MARS_826_rollback_ADHOC_ADJ_tables.sql @@ -23,11 +23,6 @@ DECLARE vBucketUri VARCHAR2(500); vCredentialName VARCHAR2(100); vFileCount NUMBER := 0; - vDeletedCount NUMBER := 0; - vTotalDeleted NUMBER := 0; - - TYPE t_folder_list IS TABLE OF VARCHAR2(200); - vFolders t_folder_list; BEGIN -- Get bucket URI and credential from FILE_MANAGER configuration vBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('ARCHIVE'); @@ -35,56 +30,45 @@ BEGIN DBMS_OUTPUT.PUT_LINE('START TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3')); DBMS_OUTPUT.PUT_LINE(''); + DBMS_OUTPUT.PUT_LINE('Deleting ADHOC_ADJ files registered by MARS-826 process...'); + DBMS_OUTPUT.PUT_LINE(' Using A_SOURCE_FILE_RECEIVED with PROCESS_NAME = ''MARS-826'''); - -- Initialize folder list for ADHOC_ADJ tables - vFolders := t_folder_list( - 'ARCHIVE/LM/LM_ADHOC_ADJUSTMENTS_HEADER/', - 'ARCHIVE/LM/LM_ADHOC_ADJUSTMENTS_ITEM/', - 'ARCHIVE/LM/LM_ADHOC_ADJUSTMENTS_ITEM_HEADER/' - ); - - -- Process each folder - FOR i IN 1..vFolders.COUNT LOOP - DBMS_OUTPUT.PUT_LINE('Processing folder: ' || vFolders(i)); - vFileCount := 0; - vDeletedCount := 0; + -- Delete files registered by MARS-826 process for ADHOC_ADJ tables + FOR rec IN ( + SELECT SOURCE_FILE_NAME AS object_name + FROM CT_MRDS.A_SOURCE_FILE_RECEIVED + WHERE PROCESS_NAME = 'MARS-826' + AND (SOURCE_FILE_NAME LIKE '%ADHOC_ADJUSTMENTS%') + ORDER BY SOURCE_FILE_NAME + ) LOOP + vFileCount := vFileCount + 1; - -- List and delete all Parquet files in the folder - FOR rec IN ( - SELECT object_name - FROM TABLE(DBMS_CLOUD.LIST_OBJECTS( + BEGIN + -- Delete the file + DBMS_CLOUD.DELETE_OBJECT( credential_name => vCredentialName, - location_uri => vBucketUri || vFolders(i) - )) - WHERE object_name LIKE '%.parquet' - ORDER BY object_name - ) LOOP - vFileCount := vFileCount + 1; + object_uri => vBucketUri || rec.object_name + ); - BEGIN - -- Delete the Parquet file - DBMS_CLOUD.DELETE_OBJECT( - credential_name => vCredentialName, - object_uri => vBucketUri || vFolders(i) || rec.object_name - ); - - vDeletedCount := vDeletedCount + 1; - DBMS_OUTPUT.PUT_LINE(' [' || vDeletedCount || '] Deleted: ' || rec.object_name); - - EXCEPTION - WHEN OTHERS THEN + DBMS_OUTPUT.PUT_LINE(' [' || vFileCount || '] Deleted: ' || rec.object_name); + + EXCEPTION + WHEN OTHERS THEN + IF SQLCODE = -20404 THEN + DBMS_OUTPUT.PUT_LINE(' Skipped (not found): ' || rec.object_name); + ELSE DBMS_OUTPUT.PUT_LINE(' ERROR deleting ' || rec.object_name || ': ' || SQLERRM); - END; - END LOOP; - - vTotalDeleted := vTotalDeleted + vDeletedCount; - DBMS_OUTPUT.PUT_LINE('Folder summary: Found ' || vFileCount || ' files, deleted ' || vDeletedCount || ' files'); - DBMS_OUTPUT.PUT_LINE(''); - + END IF; + END; END LOOP; + IF vFileCount = 0 THEN + DBMS_OUTPUT.PUT_LINE(' INFO: No ADHOC_ADJ files found to delete'); + END IF; + + DBMS_OUTPUT.PUT_LINE(''); DBMS_OUTPUT.PUT_LINE('====================================================================================='); - DBMS_OUTPUT.PUT_LINE('ROLLBACK COMPLETE: Total files deleted: ' || vTotalDeleted); + DBMS_OUTPUT.PUT_LINE('ROLLBACK COMPLETE: Total files deleted: ' || vFileCount); DBMS_OUTPUT.PUT_LINE('END TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3')); DBMS_OUTPUT.PUT_LINE('====================================================================================='); diff --git a/MARS_Packages/REL01_ADDITIONS/MARS-826/92_MARS_826_rollback_BALANCESHEET_tables.sql b/MARS_Packages/REL01_ADDITIONS/MARS-826/92_MARS_826_rollback_BALANCESHEET_tables.sql index df28f50..046aa77 100644 --- a/MARS_Packages/REL01_ADDITIONS/MARS-826/92_MARS_826_rollback_BALANCESHEET_tables.sql +++ b/MARS_Packages/REL01_ADDITIONS/MARS-826/92_MARS_826_rollback_BALANCESHEET_tables.sql @@ -22,11 +22,6 @@ DECLARE vBucketUri VARCHAR2(500); vCredentialName VARCHAR2(100); vFileCount NUMBER := 0; - vDeletedCount NUMBER := 0; - vTotalDeleted NUMBER := 0; - - TYPE t_folder_list IS TABLE OF VARCHAR2(200); - vFolders t_folder_list; BEGIN -- Get bucket URI and credential from FILE_MANAGER configuration vBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('ARCHIVE'); @@ -34,55 +29,45 @@ BEGIN DBMS_OUTPUT.PUT_LINE('START TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3')); DBMS_OUTPUT.PUT_LINE(''); + DBMS_OUTPUT.PUT_LINE('Deleting BALANCESHEET files registered by MARS-826 process...'); + DBMS_OUTPUT.PUT_LINE(' Using A_SOURCE_FILE_RECEIVED with PROCESS_NAME = ''MARS-826'''); - -- Initialize folder list for BALANCESHEET tables - vFolders := t_folder_list( - 'ARCHIVE/LM/LM_BALANCESHEET_HEADER/', - 'ARCHIVE/LM/LM_BALANCESHEET_ITEM/' - ); - - -- Process each folder - FOR i IN 1..vFolders.COUNT LOOP - DBMS_OUTPUT.PUT_LINE('Processing folder: ' || vFolders(i)); - vFileCount := 0; - vDeletedCount := 0; + -- Delete files registered by MARS-826 process for BALANCESHEET tables + FOR rec IN ( + SELECT SOURCE_FILE_NAME AS object_name + FROM CT_MRDS.A_SOURCE_FILE_RECEIVED + WHERE PROCESS_NAME = 'MARS-826' + AND (SOURCE_FILE_NAME LIKE '%BALANCESHEET%') + ORDER BY SOURCE_FILE_NAME + ) LOOP + vFileCount := vFileCount + 1; - -- List and delete all Parquet files in the folder - FOR rec IN ( - SELECT object_name - FROM TABLE(DBMS_CLOUD.LIST_OBJECTS( + BEGIN + -- Delete the file + DBMS_CLOUD.DELETE_OBJECT( credential_name => vCredentialName, - location_uri => vBucketUri || vFolders(i) - )) - WHERE object_name LIKE '%.parquet' - ORDER BY object_name - ) LOOP - vFileCount := vFileCount + 1; + object_uri => vBucketUri || rec.object_name + ); - BEGIN - -- Delete the Parquet file - DBMS_CLOUD.DELETE_OBJECT( - credential_name => vCredentialName, - object_uri => vBucketUri || vFolders(i) || rec.object_name - ); - - vDeletedCount := vDeletedCount + 1; - DBMS_OUTPUT.PUT_LINE(' [' || vDeletedCount || '] Deleted: ' || rec.object_name); - - EXCEPTION - WHEN OTHERS THEN + DBMS_OUTPUT.PUT_LINE(' [' || vFileCount || '] Deleted: ' || rec.object_name); + + EXCEPTION + WHEN OTHERS THEN + IF SQLCODE = -20404 THEN + DBMS_OUTPUT.PUT_LINE(' Skipped (not found): ' || rec.object_name); + ELSE DBMS_OUTPUT.PUT_LINE(' ERROR deleting ' || rec.object_name || ': ' || SQLERRM); - END; - END LOOP; - - vTotalDeleted := vTotalDeleted + vDeletedCount; - DBMS_OUTPUT.PUT_LINE('Folder summary: Found ' || vFileCount || ' files, deleted ' || vDeletedCount || ' files'); - DBMS_OUTPUT.PUT_LINE(''); - + END IF; + END; END LOOP; + IF vFileCount = 0 THEN + DBMS_OUTPUT.PUT_LINE(' INFO: No BALANCESHEET files found to delete'); + END IF; + + DBMS_OUTPUT.PUT_LINE(''); DBMS_OUTPUT.PUT_LINE('====================================================================================='); - DBMS_OUTPUT.PUT_LINE('ROLLBACK COMPLETE: Total files deleted: ' || vTotalDeleted); + DBMS_OUTPUT.PUT_LINE('ROLLBACK COMPLETE: Total files deleted: ' || vFileCount); DBMS_OUTPUT.PUT_LINE('END TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3')); DBMS_OUTPUT.PUT_LINE('====================================================================================='); diff --git a/MARS_Packages/REL01_ADDITIONS/MARS-826/93_MARS_826_rollback_CSM_ADJ_tables.sql b/MARS_Packages/REL01_ADDITIONS/MARS-826/93_MARS_826_rollback_CSM_ADJ_tables.sql index 54386e7..b3ab40f 100644 --- a/MARS_Packages/REL01_ADDITIONS/MARS-826/93_MARS_826_rollback_CSM_ADJ_tables.sql +++ b/MARS_Packages/REL01_ADDITIONS/MARS-826/93_MARS_826_rollback_CSM_ADJ_tables.sql @@ -23,11 +23,6 @@ DECLARE vBucketUri VARCHAR2(500); vCredentialName VARCHAR2(100); vFileCount NUMBER := 0; - vDeletedCount NUMBER := 0; - vTotalDeleted NUMBER := 0; - - TYPE t_folder_list IS TABLE OF VARCHAR2(200); - vFolders t_folder_list; BEGIN -- Get bucket URI and credential from FILE_MANAGER configuration vBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('ARCHIVE'); @@ -35,56 +30,45 @@ BEGIN DBMS_OUTPUT.PUT_LINE('START TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3')); DBMS_OUTPUT.PUT_LINE(''); + DBMS_OUTPUT.PUT_LINE('Deleting CSM_ADJ files registered by MARS-826 process...'); + DBMS_OUTPUT.PUT_LINE(' Using A_SOURCE_FILE_RECEIVED with PROCESS_NAME = ''MARS-826'''); - -- Initialize folder list for CSM_ADJ tables - vFolders := t_folder_list( - 'ARCHIVE/LM/LM_CSM_ADJUSTMENTS_HEADER/', - 'ARCHIVE/LM/LM_CSM_ADJUSTMENTS_ITEM/', - 'ARCHIVE/LM/LM_CSM_ADJUSTMENTS_ITEM_HEADER/' - ); - - -- Process each folder - FOR i IN 1..vFolders.COUNT LOOP - DBMS_OUTPUT.PUT_LINE('Processing folder: ' || vFolders(i)); - vFileCount := 0; - vDeletedCount := 0; + -- Delete files registered by MARS-826 process for CSM_ADJ tables + FOR rec IN ( + SELECT SOURCE_FILE_NAME AS object_name + FROM CT_MRDS.A_SOURCE_FILE_RECEIVED + WHERE PROCESS_NAME = 'MARS-826' + AND (SOURCE_FILE_NAME LIKE '%CSM_ADJUSTMENTS%') + ORDER BY SOURCE_FILE_NAME + ) LOOP + vFileCount := vFileCount + 1; - -- List and delete all Parquet files in the folder - FOR rec IN ( - SELECT object_name - FROM TABLE(DBMS_CLOUD.LIST_OBJECTS( + BEGIN + -- Delete the file + DBMS_CLOUD.DELETE_OBJECT( credential_name => vCredentialName, - location_uri => vBucketUri || vFolders(i) - )) - WHERE object_name LIKE '%.parquet' - ORDER BY object_name - ) LOOP - vFileCount := vFileCount + 1; + object_uri => vBucketUri || rec.object_name + ); - BEGIN - -- Delete the Parquet file - DBMS_CLOUD.DELETE_OBJECT( - credential_name => vCredentialName, - object_uri => vBucketUri || vFolders(i) || rec.object_name - ); - - vDeletedCount := vDeletedCount + 1; - DBMS_OUTPUT.PUT_LINE(' [' || vDeletedCount || '] Deleted: ' || rec.object_name); - - EXCEPTION - WHEN OTHERS THEN + DBMS_OUTPUT.PUT_LINE(' [' || vFileCount || '] Deleted: ' || rec.object_name); + + EXCEPTION + WHEN OTHERS THEN + IF SQLCODE = -20404 THEN + DBMS_OUTPUT.PUT_LINE(' Skipped (not found): ' || rec.object_name); + ELSE DBMS_OUTPUT.PUT_LINE(' ERROR deleting ' || rec.object_name || ': ' || SQLERRM); - END; - END LOOP; - - vTotalDeleted := vTotalDeleted + vDeletedCount; - DBMS_OUTPUT.PUT_LINE('Folder summary: Found ' || vFileCount || ' files, deleted ' || vDeletedCount || ' files'); - DBMS_OUTPUT.PUT_LINE(''); - + END IF; + END; END LOOP; + IF vFileCount = 0 THEN + DBMS_OUTPUT.PUT_LINE(' INFO: No CSM_ADJ files found to delete'); + END IF; + + DBMS_OUTPUT.PUT_LINE(''); DBMS_OUTPUT.PUT_LINE('====================================================================================='); - DBMS_OUTPUT.PUT_LINE('ROLLBACK COMPLETE: Total files deleted: ' || vTotalDeleted); + DBMS_OUTPUT.PUT_LINE('ROLLBACK COMPLETE: Total files deleted: ' || vFileCount); DBMS_OUTPUT.PUT_LINE('END TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3')); DBMS_OUTPUT.PUT_LINE('====================================================================================='); diff --git a/MARS_Packages/REL01_ADDITIONS/MARS-826/94_MARS_826_rollback_STANDING_FACILITY_tables.sql b/MARS_Packages/REL01_ADDITIONS/MARS-826/94_MARS_826_rollback_STANDING_FACILITY_tables.sql index e998ac9..0b33657 100644 --- a/MARS_Packages/REL01_ADDITIONS/MARS-826/94_MARS_826_rollback_STANDING_FACILITY_tables.sql +++ b/MARS_Packages/REL01_ADDITIONS/MARS-826/94_MARS_826_rollback_STANDING_FACILITY_tables.sql @@ -22,11 +22,6 @@ DECLARE vBucketUri VARCHAR2(500); vCredentialName VARCHAR2(100); vFileCount NUMBER := 0; - vDeletedCount NUMBER := 0; - vTotalDeleted NUMBER := 0; - - TYPE t_folder_list IS TABLE OF VARCHAR2(200); - vFolders t_folder_list; BEGIN -- Get bucket URI and credential from FILE_MANAGER configuration vBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('ARCHIVE'); @@ -34,55 +29,45 @@ BEGIN DBMS_OUTPUT.PUT_LINE('START TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3')); DBMS_OUTPUT.PUT_LINE(''); + DBMS_OUTPUT.PUT_LINE('Deleting STANDING_FACILITY files registered by MARS-826 process...'); + DBMS_OUTPUT.PUT_LINE(' Using A_SOURCE_FILE_RECEIVED with PROCESS_NAME = ''MARS-826'''); - -- Initialize folder list for STANDING_FACILITY tables - vFolders := t_folder_list( - 'ARCHIVE/LM/LM_STANDING_FACILITIES/', - 'ARCHIVE/LM/LM_STANDING_FACILITIES_HEADER/' - ); - - -- Process each folder - FOR i IN 1..vFolders.COUNT LOOP - DBMS_OUTPUT.PUT_LINE('Processing folder: ' || vFolders(i)); - vFileCount := 0; - vDeletedCount := 0; + -- Delete files registered by MARS-826 process for STANDING_FACILITY tables + FOR rec IN ( + SELECT SOURCE_FILE_NAME AS object_name + FROM CT_MRDS.A_SOURCE_FILE_RECEIVED + WHERE PROCESS_NAME = 'MARS-826' + AND (SOURCE_FILE_NAME LIKE '%STANDING_FACILITIES%') + ORDER BY SOURCE_FILE_NAME + ) LOOP + vFileCount := vFileCount + 1; - -- List and delete all Parquet files in the folder - FOR rec IN ( - SELECT object_name - FROM TABLE(DBMS_CLOUD.LIST_OBJECTS( + BEGIN + -- Delete the file + DBMS_CLOUD.DELETE_OBJECT( credential_name => vCredentialName, - location_uri => vBucketUri || vFolders(i) - )) - WHERE object_name LIKE '%.parquet' - ORDER BY object_name - ) LOOP - vFileCount := vFileCount + 1; + object_uri => vBucketUri || rec.object_name + ); - BEGIN - -- Delete the Parquet file - DBMS_CLOUD.DELETE_OBJECT( - credential_name => vCredentialName, - object_uri => vBucketUri || vFolders(i) || rec.object_name - ); - - vDeletedCount := vDeletedCount + 1; - DBMS_OUTPUT.PUT_LINE(' [' || vDeletedCount || '] Deleted: ' || rec.object_name); - - EXCEPTION - WHEN OTHERS THEN + DBMS_OUTPUT.PUT_LINE(' [' || vFileCount || '] Deleted: ' || rec.object_name); + + EXCEPTION + WHEN OTHERS THEN + IF SQLCODE = -20404 THEN + DBMS_OUTPUT.PUT_LINE(' Skipped (not found): ' || rec.object_name); + ELSE DBMS_OUTPUT.PUT_LINE(' ERROR deleting ' || rec.object_name || ': ' || SQLERRM); - END; - END LOOP; - - vTotalDeleted := vTotalDeleted + vDeletedCount; - DBMS_OUTPUT.PUT_LINE('Folder summary: Found ' || vFileCount || ' files, deleted ' || vDeletedCount || ' files'); - DBMS_OUTPUT.PUT_LINE(''); - + END IF; + END; END LOOP; + IF vFileCount = 0 THEN + DBMS_OUTPUT.PUT_LINE(' INFO: No STANDING_FACILITY files found to delete'); + END IF; + + DBMS_OUTPUT.PUT_LINE(''); DBMS_OUTPUT.PUT_LINE('====================================================================================='); - DBMS_OUTPUT.PUT_LINE('ROLLBACK COMPLETE: Total files deleted: ' || vTotalDeleted); + DBMS_OUTPUT.PUT_LINE('ROLLBACK COMPLETE: Total files deleted: ' || vFileCount); DBMS_OUTPUT.PUT_LINE('END TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3')); DBMS_OUTPUT.PUT_LINE('====================================================================================='); diff --git a/MARS_Packages/REL01_ADDITIONS/MARS-826/95_MARS_826_rollback_MRR_IND_CURRENT_ACCOUNT_tables.sql b/MARS_Packages/REL01_ADDITIONS/MARS-826/95_MARS_826_rollback_MRR_IND_CURRENT_ACCOUNT_tables.sql index 364fbc8..b639452 100644 --- a/MARS_Packages/REL01_ADDITIONS/MARS-826/95_MARS_826_rollback_MRR_IND_CURRENT_ACCOUNT_tables.sql +++ b/MARS_Packages/REL01_ADDITIONS/MARS-826/95_MARS_826_rollback_MRR_IND_CURRENT_ACCOUNT_tables.sql @@ -22,11 +22,6 @@ DECLARE vBucketUri VARCHAR2(500); vCredentialName VARCHAR2(100); vFileCount NUMBER := 0; - vDeletedCount NUMBER := 0; - vTotalDeleted NUMBER := 0; - - TYPE t_folder_list IS TABLE OF VARCHAR2(200); - vFolders t_folder_list; BEGIN -- Get bucket URI and credential from FILE_MANAGER configuration vBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('ARCHIVE'); @@ -34,55 +29,45 @@ BEGIN DBMS_OUTPUT.PUT_LINE('START TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3')); DBMS_OUTPUT.PUT_LINE(''); + DBMS_OUTPUT.PUT_LINE('Deleting MRR_IND_CURRENT_ACCOUNT files registered by MARS-826 process...'); + DBMS_OUTPUT.PUT_LINE(' Using A_SOURCE_FILE_RECEIVED with PROCESS_NAME = ''MARS-826'''); - -- Initialize folder list for MRR_IND_CURR_ACC tables (OU_MRR schema) - vFolders := t_folder_list( - 'ARCHIVE/LM/LM_CURRENT_ACCOUNTS_HEADER/', - 'ARCHIVE/LM/LM_CURRENT_ACCOUNTS_ITEM/' - ); - - -- Process each folder - FOR i IN 1..vFolders.COUNT LOOP - DBMS_OUTPUT.PUT_LINE('Processing folder: ' || vFolders(i)); - vFileCount := 0; - vDeletedCount := 0; + -- Delete files registered by MARS-826 process for MRR_IND_CURRENT_ACCOUNT tables + FOR rec IN ( + SELECT SOURCE_FILE_NAME AS object_name + FROM CT_MRDS.A_SOURCE_FILE_RECEIVED + WHERE PROCESS_NAME = 'MARS-826' + AND (SOURCE_FILE_NAME LIKE '%CURRENT_ACCOUNTS%') + ORDER BY SOURCE_FILE_NAME + ) LOOP + vFileCount := vFileCount + 1; - -- List and delete all Parquet files in the folder - FOR rec IN ( - SELECT object_name - FROM TABLE(DBMS_CLOUD.LIST_OBJECTS( + BEGIN + -- Delete the file + DBMS_CLOUD.DELETE_OBJECT( credential_name => vCredentialName, - location_uri => vBucketUri || vFolders(i) - )) - WHERE object_name LIKE '%.parquet' - ORDER BY object_name - ) LOOP - vFileCount := vFileCount + 1; + object_uri => vBucketUri || rec.object_name + ); - BEGIN - -- Delete the Parquet file - DBMS_CLOUD.DELETE_OBJECT( - credential_name => vCredentialName, - object_uri => vBucketUri || vFolders(i) || rec.object_name - ); - - vDeletedCount := vDeletedCount + 1; - DBMS_OUTPUT.PUT_LINE(' [' || vDeletedCount || '] Deleted: ' || rec.object_name); - - EXCEPTION - WHEN OTHERS THEN + DBMS_OUTPUT.PUT_LINE(' [' || vFileCount || '] Deleted: ' || rec.object_name); + + EXCEPTION + WHEN OTHERS THEN + IF SQLCODE = -20404 THEN + DBMS_OUTPUT.PUT_LINE(' Skipped (not found): ' || rec.object_name); + ELSE DBMS_OUTPUT.PUT_LINE(' ERROR deleting ' || rec.object_name || ': ' || SQLERRM); - END; - END LOOP; - - vTotalDeleted := vTotalDeleted + vDeletedCount; - DBMS_OUTPUT.PUT_LINE('Folder summary: Found ' || vFileCount || ' files, deleted ' || vDeletedCount || ' files'); - DBMS_OUTPUT.PUT_LINE(''); - + END IF; + END; END LOOP; + IF vFileCount = 0 THEN + DBMS_OUTPUT.PUT_LINE(' INFO: No MRR_IND_CURRENT_ACCOUNT files found to delete'); + END IF; + + DBMS_OUTPUT.PUT_LINE(''); DBMS_OUTPUT.PUT_LINE('====================================================================================='); - DBMS_OUTPUT.PUT_LINE('ROLLBACK COMPLETE: Total files deleted: ' || vTotalDeleted); + DBMS_OUTPUT.PUT_LINE('ROLLBACK COMPLETE: Total files deleted: ' || vFileCount); DBMS_OUTPUT.PUT_LINE('END TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3')); DBMS_OUTPUT.PUT_LINE('====================================================================================='); diff --git a/MARS_Packages/REL01_ADDITIONS/MARS-826/96_MARS_826_rollback_FORECAST_tables.sql b/MARS_Packages/REL01_ADDITIONS/MARS-826/96_MARS_826_rollback_FORECAST_tables.sql index a6505c2..6ad0fdc 100644 --- a/MARS_Packages/REL01_ADDITIONS/MARS-826/96_MARS_826_rollback_FORECAST_tables.sql +++ b/MARS_Packages/REL01_ADDITIONS/MARS-826/96_MARS_826_rollback_FORECAST_tables.sql @@ -22,11 +22,6 @@ DECLARE vBucketUri VARCHAR2(500); vCredentialName VARCHAR2(100); vFileCount NUMBER := 0; - vDeletedCount NUMBER := 0; - vTotalDeleted NUMBER := 0; - - TYPE t_folder_list IS TABLE OF VARCHAR2(200); - vFolders t_folder_list; BEGIN -- Get bucket URI and credential from FILE_MANAGER configuration vBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('ARCHIVE'); @@ -34,55 +29,45 @@ BEGIN DBMS_OUTPUT.PUT_LINE('START TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3')); DBMS_OUTPUT.PUT_LINE(''); + DBMS_OUTPUT.PUT_LINE('Deleting FORECAST files registered by MARS-826 process...'); + DBMS_OUTPUT.PUT_LINE(' Using A_SOURCE_FILE_RECEIVED with PROCESS_NAME = ''MARS-826'''); - -- Initialize folder list for FORECAST tables - vFolders := t_folder_list( - 'ARCHIVE/LM/LM_FORECAST_HEADER/', - 'ARCHIVE/LM/LM_FORECAST_ITEM/' - ); - - -- Process each folder - FOR i IN 1..vFolders.COUNT LOOP - DBMS_OUTPUT.PUT_LINE('Processing folder: ' || vFolders(i)); - vFileCount := 0; - vDeletedCount := 0; + -- Delete files registered by MARS-826 process for FORECAST tables + FOR rec IN ( + SELECT SOURCE_FILE_NAME AS object_name + FROM CT_MRDS.A_SOURCE_FILE_RECEIVED + WHERE PROCESS_NAME = 'MARS-826' + AND (SOURCE_FILE_NAME LIKE '%FORECAST%') + ORDER BY SOURCE_FILE_NAME + ) LOOP + vFileCount := vFileCount + 1; - -- List and delete all Parquet files in the folder - FOR rec IN ( - SELECT object_name - FROM TABLE(DBMS_CLOUD.LIST_OBJECTS( + BEGIN + -- Delete the file + DBMS_CLOUD.DELETE_OBJECT( credential_name => vCredentialName, - location_uri => vBucketUri || vFolders(i) - )) - WHERE object_name LIKE '%.parquet' - ORDER BY object_name - ) LOOP - vFileCount := vFileCount + 1; + object_uri => vBucketUri || rec.object_name + ); - BEGIN - -- Delete the Parquet file - DBMS_CLOUD.DELETE_OBJECT( - credential_name => vCredentialName, - object_uri => vBucketUri || vFolders(i) || rec.object_name - ); - - vDeletedCount := vDeletedCount + 1; - DBMS_OUTPUT.PUT_LINE(' [' || vDeletedCount || '] Deleted: ' || rec.object_name); - - EXCEPTION - WHEN OTHERS THEN + DBMS_OUTPUT.PUT_LINE(' [' || vFileCount || '] Deleted: ' || rec.object_name); + + EXCEPTION + WHEN OTHERS THEN + IF SQLCODE = -20404 THEN + DBMS_OUTPUT.PUT_LINE(' Skipped (not found): ' || rec.object_name); + ELSE DBMS_OUTPUT.PUT_LINE(' ERROR deleting ' || rec.object_name || ': ' || SQLERRM); - END; - END LOOP; - - vTotalDeleted := vTotalDeleted + vDeletedCount; - DBMS_OUTPUT.PUT_LINE('Folder summary: Found ' || vFileCount || ' files, deleted ' || vDeletedCount || ' files'); - DBMS_OUTPUT.PUT_LINE(''); - + END IF; + END; END LOOP; + IF vFileCount = 0 THEN + DBMS_OUTPUT.PUT_LINE(' INFO: No FORECAST files found to delete'); + END IF; + + DBMS_OUTPUT.PUT_LINE(''); DBMS_OUTPUT.PUT_LINE('====================================================================================='); - DBMS_OUTPUT.PUT_LINE('ROLLBACK COMPLETE: Total files deleted: ' || vTotalDeleted); + DBMS_OUTPUT.PUT_LINE('ROLLBACK COMPLETE: Total files deleted: ' || vFileCount); DBMS_OUTPUT.PUT_LINE('END TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3')); DBMS_OUTPUT.PUT_LINE('====================================================================================='); diff --git a/MARS_Packages/REL01_ADDITIONS/MARS-826/97_MARS_826_rollback_QR_ADJ_tables.sql b/MARS_Packages/REL01_ADDITIONS/MARS-826/97_MARS_826_rollback_QR_ADJ_tables.sql index 743882d..82df3a7 100644 --- a/MARS_Packages/REL01_ADDITIONS/MARS-826/97_MARS_826_rollback_QR_ADJ_tables.sql +++ b/MARS_Packages/REL01_ADDITIONS/MARS-826/97_MARS_826_rollback_QR_ADJ_tables.sql @@ -23,11 +23,6 @@ DECLARE vBucketUri VARCHAR2(500); vCredentialName VARCHAR2(100); vFileCount NUMBER := 0; - vDeletedCount NUMBER := 0; - vTotalDeleted NUMBER := 0; - - TYPE t_folder_list IS TABLE OF VARCHAR2(200); - vFolders t_folder_list; BEGIN -- Get bucket URI and credential from FILE_MANAGER configuration vBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('ARCHIVE'); @@ -35,56 +30,45 @@ BEGIN DBMS_OUTPUT.PUT_LINE('START TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3')); DBMS_OUTPUT.PUT_LINE(''); + DBMS_OUTPUT.PUT_LINE('Deleting QR_ADJ files registered by MARS-826 process...'); + DBMS_OUTPUT.PUT_LINE(' Using A_SOURCE_FILE_RECEIVED with PROCESS_NAME = ''MARS-826'''); - -- Initialize folder list for QR_ADJ tables - vFolders := t_folder_list( - 'ARCHIVE/LM/LM_QRE_ADJUSTMENTS_HEADER/', - 'ARCHIVE/LM/LM_QRE_ADJUSTMENTS_ITEM/', - 'ARCHIVE/LM/LM_QRE_ADJUSTMENTS_ITEM_HEADER/' - ); - - -- Process each folder - FOR i IN 1..vFolders.COUNT LOOP - DBMS_OUTPUT.PUT_LINE('Processing folder: ' || vFolders(i)); - vFileCount := 0; - vDeletedCount := 0; + -- Delete files registered by MARS-826 process for QR_ADJ tables + FOR rec IN ( + SELECT SOURCE_FILE_NAME AS object_name + FROM CT_MRDS.A_SOURCE_FILE_RECEIVED + WHERE PROCESS_NAME = 'MARS-826' + AND (SOURCE_FILE_NAME LIKE '%QRE_ADJUSTMENTS%') + ORDER BY SOURCE_FILE_NAME + ) LOOP + vFileCount := vFileCount + 1; - -- List and delete all Parquet files in the folder - FOR rec IN ( - SELECT object_name - FROM TABLE(DBMS_CLOUD.LIST_OBJECTS( + BEGIN + -- Delete the file + DBMS_CLOUD.DELETE_OBJECT( credential_name => vCredentialName, - location_uri => vBucketUri || vFolders(i) - )) - WHERE object_name LIKE '%.parquet' - ORDER BY object_name - ) LOOP - vFileCount := vFileCount + 1; + object_uri => vBucketUri || rec.object_name + ); - BEGIN - -- Delete the Parquet file - DBMS_CLOUD.DELETE_OBJECT( - credential_name => vCredentialName, - object_uri => vBucketUri || vFolders(i) || rec.object_name - ); - - vDeletedCount := vDeletedCount + 1; - DBMS_OUTPUT.PUT_LINE(' [' || vDeletedCount || '] Deleted: ' || rec.object_name); - - EXCEPTION - WHEN OTHERS THEN + DBMS_OUTPUT.PUT_LINE(' [' || vFileCount || '] Deleted: ' || rec.object_name); + + EXCEPTION + WHEN OTHERS THEN + IF SQLCODE = -20404 THEN + DBMS_OUTPUT.PUT_LINE(' Skipped (not found): ' || rec.object_name); + ELSE DBMS_OUTPUT.PUT_LINE(' ERROR deleting ' || rec.object_name || ': ' || SQLERRM); - END; - END LOOP; - - vTotalDeleted := vTotalDeleted + vDeletedCount; - DBMS_OUTPUT.PUT_LINE('Folder summary: Found ' || vFileCount || ' files, deleted ' || vDeletedCount || ' files'); - DBMS_OUTPUT.PUT_LINE(''); - + END IF; + END; END LOOP; + IF vFileCount = 0 THEN + DBMS_OUTPUT.PUT_LINE(' INFO: No QR_ADJ files found to delete'); + END IF; + + DBMS_OUTPUT.PUT_LINE(''); DBMS_OUTPUT.PUT_LINE('====================================================================================='); - DBMS_OUTPUT.PUT_LINE('ROLLBACK COMPLETE: Total files deleted: ' || vTotalDeleted); + DBMS_OUTPUT.PUT_LINE('ROLLBACK COMPLETE: Total files deleted: ' || vFileCount); DBMS_OUTPUT.PUT_LINE('END TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3')); DBMS_OUTPUT.PUT_LINE('====================================================================================='); diff --git a/MARS_Packages/REL01_ADDITIONS/MARS-826/98_MARS_826_rollback_TTS_tables.sql b/MARS_Packages/REL01_ADDITIONS/MARS-826/98_MARS_826_rollback_TTS_tables.sql index 04c9187..d76fe23 100644 --- a/MARS_Packages/REL01_ADDITIONS/MARS-826/98_MARS_826_rollback_TTS_tables.sql +++ b/MARS_Packages/REL01_ADDITIONS/MARS-826/98_MARS_826_rollback_TTS_tables.sql @@ -22,11 +22,6 @@ DECLARE vBucketUri VARCHAR2(500); vCredentialName VARCHAR2(100); vFileCount NUMBER := 0; - vDeletedCount NUMBER := 0; - vTotalDeleted NUMBER := 0; - - TYPE t_folder_list IS TABLE OF VARCHAR2(200); - vFolders t_folder_list; BEGIN -- Get bucket URI and credential from FILE_MANAGER configuration vBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('ARCHIVE'); @@ -34,55 +29,45 @@ BEGIN DBMS_OUTPUT.PUT_LINE('START TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3')); DBMS_OUTPUT.PUT_LINE(''); + DBMS_OUTPUT.PUT_LINE('Deleting TTS files registered by MARS-826 process...'); + DBMS_OUTPUT.PUT_LINE(' Using A_SOURCE_FILE_RECEIVED with PROCESS_NAME = ''MARS-826'''); - -- Initialize folder list for TTS tables - vFolders := t_folder_list( - 'ARCHIVE/LM/LM_TTS_HEADER/', - 'ARCHIVE/LM/LM_TTS_ITEM/' - ); - - -- Process each folder - FOR i IN 1..vFolders.COUNT LOOP - DBMS_OUTPUT.PUT_LINE('Processing folder: ' || vFolders(i)); - vFileCount := 0; - vDeletedCount := 0; + -- Delete files registered by MARS-826 process for TTS tables + FOR rec IN ( + SELECT SOURCE_FILE_NAME AS object_name + FROM CT_MRDS.A_SOURCE_FILE_RECEIVED + WHERE PROCESS_NAME = 'MARS-826' + AND (SOURCE_FILE_NAME LIKE '%TTS%') + ORDER BY SOURCE_FILE_NAME + ) LOOP + vFileCount := vFileCount + 1; - -- List and delete all Parquet files in the folder - FOR rec IN ( - SELECT object_name - FROM TABLE(DBMS_CLOUD.LIST_OBJECTS( + BEGIN + -- Delete the file + DBMS_CLOUD.DELETE_OBJECT( credential_name => vCredentialName, - location_uri => vBucketUri || vFolders(i) - )) - WHERE object_name LIKE '%.parquet' - ORDER BY object_name - ) LOOP - vFileCount := vFileCount + 1; + object_uri => vBucketUri || rec.object_name + ); - BEGIN - -- Delete the Parquet file - DBMS_CLOUD.DELETE_OBJECT( - credential_name => vCredentialName, - object_uri => vBucketUri || vFolders(i) || rec.object_name - ); - - vDeletedCount := vDeletedCount + 1; - DBMS_OUTPUT.PUT_LINE(' [' || vDeletedCount || '] Deleted: ' || rec.object_name); - - EXCEPTION - WHEN OTHERS THEN + DBMS_OUTPUT.PUT_LINE(' [' || vFileCount || '] Deleted: ' || rec.object_name); + + EXCEPTION + WHEN OTHERS THEN + IF SQLCODE = -20404 THEN + DBMS_OUTPUT.PUT_LINE(' Skipped (not found): ' || rec.object_name); + ELSE DBMS_OUTPUT.PUT_LINE(' ERROR deleting ' || rec.object_name || ': ' || SQLERRM); - END; - END LOOP; - - vTotalDeleted := vTotalDeleted + vDeletedCount; - DBMS_OUTPUT.PUT_LINE('Folder summary: Found ' || vFileCount || ' files, deleted ' || vDeletedCount || ' files'); - DBMS_OUTPUT.PUT_LINE(''); - + END IF; + END; END LOOP; + IF vFileCount = 0 THEN + DBMS_OUTPUT.PUT_LINE(' INFO: No TTS files found to delete'); + END IF; + + DBMS_OUTPUT.PUT_LINE(''); DBMS_OUTPUT.PUT_LINE('====================================================================================='); - DBMS_OUTPUT.PUT_LINE('ROLLBACK COMPLETE: Total files deleted: ' || vTotalDeleted); + DBMS_OUTPUT.PUT_LINE('ROLLBACK COMPLETE: Total files deleted: ' || vFileCount); DBMS_OUTPUT.PUT_LINE('END TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3')); DBMS_OUTPUT.PUT_LINE('====================================================================================='); diff --git a/MARS_Packages/REL01_ADDITIONS/MARS-826/rollback_mars826.sql b/MARS_Packages/REL01_ADDITIONS/MARS-826/rollback_mars826.sql index ea9005b..8a81b2d 100644 --- a/MARS_Packages/REL01_ADDITIONS/MARS-826/rollback_mars826.sql +++ b/MARS_Packages/REL01_ADDITIONS/MARS-826/rollback_mars826.sql @@ -57,6 +57,7 @@ PROMPT PROMPT ============================================================================ -- Execute rollback scripts +@@90_MARS_826_rollback_file_registrations.sql @@91_MARS_826_rollback_ADHOC_ADJ_tables.sql @@92_MARS_826_rollback_BALANCESHEET_tables.sql @@93_MARS_826_rollback_CSM_ADJ_tables.sql