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 aae0d04..81183c5 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,9 +24,7 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_ADHOC_ADJUSTMENTS_HEADER', - pParallelDegree => 1, - pRegisterExport => TRUE, - pProcessName => 'MARS-826' + pParallelDegree => 1 ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_ADHOC_ADJ_HEADER exported'); EXCEPTION @@ -46,9 +44,7 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_ADHOC_ADJUSTMENTS_ITEM', - pParallelDegree => 1, - pRegisterExport => TRUE, - pProcessName => 'MARS-826' + pParallelDegree => 1 ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_ADHOC_ADJ_ITEM exported'); EXCEPTION @@ -68,9 +64,7 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_ADHOC_ADJUSTMENTS_ITEM_HEADER', - pParallelDegree => 1, - pRegisterExport => TRUE, - pProcessName => 'MARS-826' + pParallelDegree => 1 ); 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 e918dcd..bd9a561 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,9 +29,7 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_KEY', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_BALANCESHEET_HEADER', - pParallelDegree => 4, - pRegisterExport => TRUE, - pProcessName => 'MARS-826' + pParallelDegree => 4 ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_BALANCESHEET_HEADER exported'); EXCEPTION @@ -51,9 +49,7 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_KEY', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_BALANCESHEET_ITEM', - pParallelDegree => 16, - pRegisterExport => TRUE, - pProcessName => 'MARS-826' + pParallelDegree => 16 ); 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 c29c8d5..8a9453d 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,9 +24,7 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_CSM_ADJUSTMENTS_HEADER', - pParallelDegree => 1, - pRegisterExport => TRUE, - pProcessName => 'MARS-826' + pParallelDegree => 1 ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_CSM_ADJ_HEADER exported'); EXCEPTION @@ -46,9 +44,7 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_CSM_ADJUSTMENTS_ITEM', - pParallelDegree => 2, - pRegisterExport => TRUE, - pProcessName => 'MARS-826' + pParallelDegree => 2 ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_CSM_ADJ_ITEM exported'); EXCEPTION @@ -68,9 +64,7 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_CSM_ADJUSTMENTS_ITEM_HEADER', - pParallelDegree => 2, - pRegisterExport => TRUE, - pProcessName => 'MARS-826' + pParallelDegree => 2 ); 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 2fbff54..f1931c5 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,9 +29,7 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_FK', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_STANDING_FACILITIES', - pParallelDegree => 8, - pRegisterExport => TRUE, - pProcessName => 'MARS-826' + pParallelDegree => 8 ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_STANDING_FACILITY exported'); EXCEPTION @@ -51,9 +49,7 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_FK', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_STANDING_FACILITIES_HEADER', - pParallelDegree => 2, - pRegisterExport => TRUE, - pProcessName => 'MARS-826' + pParallelDegree => 2 ); 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 205e412..5ae57de 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,9 +25,7 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_KEY', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_CURRENT_ACCOUNTS_HEADER', - pParallelDegree => 2, - pRegisterExport => TRUE, - pProcessName => 'MARS-826' + pParallelDegree => 2 ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_MRR_IND_CURRENT_ACCOUNT_HEADER exported'); EXCEPTION @@ -47,9 +45,7 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_KEY', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_CURRENT_ACCOUNTS_ITEM', - pParallelDegree => 16, - pRegisterExport => TRUE, - pProcessName => 'MARS-826' + pParallelDegree => 16 ); 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 7efde4a..3cd4a8d 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,9 +29,7 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_FK', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_FORECAST_HEADER', - pParallelDegree => 4, - pRegisterExport => TRUE, - pProcessName => 'MARS-826' + pParallelDegree => 4 ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_FORECAST_HEADER exported'); EXCEPTION @@ -51,9 +49,7 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_FK', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_FORECAST_ITEM', - pParallelDegree => 16, - pRegisterExport => TRUE, - pProcessName => 'MARS-826' + pParallelDegree => 16 ); 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 aa362d4..1767964 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,9 +24,7 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_QRE_ADJUSTMENTS_HEADER', - pParallelDegree => 1, - pRegisterExport => TRUE, - pProcessName => 'MARS-826' + pParallelDegree => 1 ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_QR_ADJ_HEADER exported'); EXCEPTION @@ -46,9 +44,7 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_QRE_ADJUSTMENTS_ITEM', - pParallelDegree => 4, - pRegisterExport => TRUE, - pProcessName => 'MARS-826' + pParallelDegree => 4 ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_QR_ADJ_ITEM exported'); EXCEPTION @@ -68,9 +64,7 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_QRE_ADJUSTMENTS_ITEM_HEADER', - pParallelDegree => 2, - pRegisterExport => TRUE, - pProcessName => 'MARS-826' + pParallelDegree => 2 ); 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 ab37082..6dfc97f 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,9 +24,7 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_FK', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_TTS_HEADER', - pParallelDegree => 1, - pRegisterExport => TRUE, - pProcessName => 'MARS-826' + pParallelDegree => 1 ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_TTS_HEADER exported'); EXCEPTION @@ -46,9 +44,7 @@ BEGIN pKeyColumnName => 'A_ETL_LOAD_SET_FK', pBucketArea => 'ARCHIVE', pFolderName => 'ARCHIVE/LM/LM_TTS_ITEM', - pParallelDegree => 1, - pRegisterExport => TRUE, - pProcessName => 'MARS-826' + pParallelDegree => 1 ); 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 deleted file mode 100644 index 61be7e7..0000000 --- a/MARS_Packages/REL01_ADDITIONS/MARS-826/90_MARS_826_rollback_file_registrations.sql +++ /dev/null @@ -1,46 +0,0 @@ --- ===================================================================================== --- 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 580e22a..cd83937 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,6 +23,11 @@ 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'); @@ -30,45 +35,56 @@ 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'''); - -- 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; + -- 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; - BEGIN - -- Delete the file - DBMS_CLOUD.DELETE_OBJECT( + -- List and delete all Parquet files in the folder + FOR rec IN ( + SELECT object_name + FROM TABLE(DBMS_CLOUD.LIST_OBJECTS( credential_name => vCredentialName, - object_uri => vBucketUri || rec.object_name - ); + location_uri => vBucketUri || vFolders(i) + )) + WHERE object_name LIKE '%.parquet' + ORDER BY object_name + ) LOOP + vFileCount := vFileCount + 1; - 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 + 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(' ERROR deleting ' || rec.object_name || ': ' || SQLERRM); - END IF; - END; + END; + END LOOP; + + vTotalDeleted := vTotalDeleted + vDeletedCount; + DBMS_OUTPUT.PUT_LINE('Folder summary: Found ' || vFileCount || ' files, deleted ' || vDeletedCount || ' files'); + DBMS_OUTPUT.PUT_LINE(''); + 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: ' || vFileCount); + DBMS_OUTPUT.PUT_LINE('ROLLBACK COMPLETE: Total files deleted: ' || vTotalDeleted); 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 046aa77..df28f50 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,6 +22,11 @@ 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'); @@ -29,45 +34,55 @@ 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'''); - -- 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; + -- 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; - BEGIN - -- Delete the file - DBMS_CLOUD.DELETE_OBJECT( + -- List and delete all Parquet files in the folder + FOR rec IN ( + SELECT object_name + FROM TABLE(DBMS_CLOUD.LIST_OBJECTS( credential_name => vCredentialName, - object_uri => vBucketUri || rec.object_name - ); + location_uri => vBucketUri || vFolders(i) + )) + WHERE object_name LIKE '%.parquet' + ORDER BY object_name + ) LOOP + vFileCount := vFileCount + 1; - 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 + 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(' ERROR deleting ' || rec.object_name || ': ' || SQLERRM); - END IF; - END; + END; + END LOOP; + + vTotalDeleted := vTotalDeleted + vDeletedCount; + DBMS_OUTPUT.PUT_LINE('Folder summary: Found ' || vFileCount || ' files, deleted ' || vDeletedCount || ' files'); + DBMS_OUTPUT.PUT_LINE(''); + 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: ' || vFileCount); + DBMS_OUTPUT.PUT_LINE('ROLLBACK COMPLETE: Total files deleted: ' || vTotalDeleted); 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 b3ab40f..54386e7 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,6 +23,11 @@ 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'); @@ -30,45 +35,56 @@ 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'''); - -- 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; + -- 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; - BEGIN - -- Delete the file - DBMS_CLOUD.DELETE_OBJECT( + -- List and delete all Parquet files in the folder + FOR rec IN ( + SELECT object_name + FROM TABLE(DBMS_CLOUD.LIST_OBJECTS( credential_name => vCredentialName, - object_uri => vBucketUri || rec.object_name - ); + location_uri => vBucketUri || vFolders(i) + )) + WHERE object_name LIKE '%.parquet' + ORDER BY object_name + ) LOOP + vFileCount := vFileCount + 1; - 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 + 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(' ERROR deleting ' || rec.object_name || ': ' || SQLERRM); - END IF; - END; + END; + END LOOP; + + vTotalDeleted := vTotalDeleted + vDeletedCount; + DBMS_OUTPUT.PUT_LINE('Folder summary: Found ' || vFileCount || ' files, deleted ' || vDeletedCount || ' files'); + DBMS_OUTPUT.PUT_LINE(''); + 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: ' || vFileCount); + DBMS_OUTPUT.PUT_LINE('ROLLBACK COMPLETE: Total files deleted: ' || vTotalDeleted); 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 0b33657..e998ac9 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,6 +22,11 @@ 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'); @@ -29,45 +34,55 @@ 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'''); - -- 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; + -- 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; - BEGIN - -- Delete the file - DBMS_CLOUD.DELETE_OBJECT( + -- List and delete all Parquet files in the folder + FOR rec IN ( + SELECT object_name + FROM TABLE(DBMS_CLOUD.LIST_OBJECTS( credential_name => vCredentialName, - object_uri => vBucketUri || rec.object_name - ); + location_uri => vBucketUri || vFolders(i) + )) + WHERE object_name LIKE '%.parquet' + ORDER BY object_name + ) LOOP + vFileCount := vFileCount + 1; - 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 + 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(' ERROR deleting ' || rec.object_name || ': ' || SQLERRM); - END IF; - END; + END; + END LOOP; + + vTotalDeleted := vTotalDeleted + vDeletedCount; + DBMS_OUTPUT.PUT_LINE('Folder summary: Found ' || vFileCount || ' files, deleted ' || vDeletedCount || ' files'); + DBMS_OUTPUT.PUT_LINE(''); + 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: ' || vFileCount); + DBMS_OUTPUT.PUT_LINE('ROLLBACK COMPLETE: Total files deleted: ' || vTotalDeleted); 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 b639452..364fbc8 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,6 +22,11 @@ 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'); @@ -29,45 +34,55 @@ 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'''); - -- 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; + -- 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; - BEGIN - -- Delete the file - DBMS_CLOUD.DELETE_OBJECT( + -- List and delete all Parquet files in the folder + FOR rec IN ( + SELECT object_name + FROM TABLE(DBMS_CLOUD.LIST_OBJECTS( credential_name => vCredentialName, - object_uri => vBucketUri || rec.object_name - ); + location_uri => vBucketUri || vFolders(i) + )) + WHERE object_name LIKE '%.parquet' + ORDER BY object_name + ) LOOP + vFileCount := vFileCount + 1; - 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 + 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(' ERROR deleting ' || rec.object_name || ': ' || SQLERRM); - END IF; - END; + END; + END LOOP; + + vTotalDeleted := vTotalDeleted + vDeletedCount; + DBMS_OUTPUT.PUT_LINE('Folder summary: Found ' || vFileCount || ' files, deleted ' || vDeletedCount || ' files'); + DBMS_OUTPUT.PUT_LINE(''); + 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: ' || vFileCount); + DBMS_OUTPUT.PUT_LINE('ROLLBACK COMPLETE: Total files deleted: ' || vTotalDeleted); 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 6ad0fdc..a6505c2 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,6 +22,11 @@ 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'); @@ -29,45 +34,55 @@ 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'''); - -- 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; + -- 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; - BEGIN - -- Delete the file - DBMS_CLOUD.DELETE_OBJECT( + -- List and delete all Parquet files in the folder + FOR rec IN ( + SELECT object_name + FROM TABLE(DBMS_CLOUD.LIST_OBJECTS( credential_name => vCredentialName, - object_uri => vBucketUri || rec.object_name - ); + location_uri => vBucketUri || vFolders(i) + )) + WHERE object_name LIKE '%.parquet' + ORDER BY object_name + ) LOOP + vFileCount := vFileCount + 1; - 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 + 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(' ERROR deleting ' || rec.object_name || ': ' || SQLERRM); - END IF; - END; + END; + END LOOP; + + vTotalDeleted := vTotalDeleted + vDeletedCount; + DBMS_OUTPUT.PUT_LINE('Folder summary: Found ' || vFileCount || ' files, deleted ' || vDeletedCount || ' files'); + DBMS_OUTPUT.PUT_LINE(''); + 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: ' || vFileCount); + DBMS_OUTPUT.PUT_LINE('ROLLBACK COMPLETE: Total files deleted: ' || vTotalDeleted); 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 82df3a7..743882d 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,6 +23,11 @@ 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'); @@ -30,45 +35,56 @@ 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'''); - -- 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; + -- 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; - BEGIN - -- Delete the file - DBMS_CLOUD.DELETE_OBJECT( + -- List and delete all Parquet files in the folder + FOR rec IN ( + SELECT object_name + FROM TABLE(DBMS_CLOUD.LIST_OBJECTS( credential_name => vCredentialName, - object_uri => vBucketUri || rec.object_name - ); + location_uri => vBucketUri || vFolders(i) + )) + WHERE object_name LIKE '%.parquet' + ORDER BY object_name + ) LOOP + vFileCount := vFileCount + 1; - 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 + 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(' ERROR deleting ' || rec.object_name || ': ' || SQLERRM); - END IF; - END; + END; + END LOOP; + + vTotalDeleted := vTotalDeleted + vDeletedCount; + DBMS_OUTPUT.PUT_LINE('Folder summary: Found ' || vFileCount || ' files, deleted ' || vDeletedCount || ' files'); + DBMS_OUTPUT.PUT_LINE(''); + 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: ' || vFileCount); + DBMS_OUTPUT.PUT_LINE('ROLLBACK COMPLETE: Total files deleted: ' || vTotalDeleted); 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 d76fe23..04c9187 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,6 +22,11 @@ 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'); @@ -29,45 +34,55 @@ 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'''); - -- 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; + -- 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; - BEGIN - -- Delete the file - DBMS_CLOUD.DELETE_OBJECT( + -- List and delete all Parquet files in the folder + FOR rec IN ( + SELECT object_name + FROM TABLE(DBMS_CLOUD.LIST_OBJECTS( credential_name => vCredentialName, - object_uri => vBucketUri || rec.object_name - ); + location_uri => vBucketUri || vFolders(i) + )) + WHERE object_name LIKE '%.parquet' + ORDER BY object_name + ) LOOP + vFileCount := vFileCount + 1; - 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 + 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(' ERROR deleting ' || rec.object_name || ': ' || SQLERRM); - END IF; - END; + END; + END LOOP; + + vTotalDeleted := vTotalDeleted + vDeletedCount; + DBMS_OUTPUT.PUT_LINE('Folder summary: Found ' || vFileCount || ' files, deleted ' || vDeletedCount || ' files'); + DBMS_OUTPUT.PUT_LINE(''); + 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: ' || vFileCount); + DBMS_OUTPUT.PUT_LINE('ROLLBACK COMPLETE: Total files deleted: ' || vTotalDeleted); 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 8a81b2d..ea9005b 100644 --- a/MARS_Packages/REL01_ADDITIONS/MARS-826/rollback_mars826.sql +++ b/MARS_Packages/REL01_ADDITIONS/MARS-826/rollback_mars826.sql @@ -57,7 +57,6 @@ 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