Revert "Enhance MARS-826 Rollback Scripts and Export Procedures"

This reverts commit d6c34085f7.
This commit is contained in:
Grzegorz Michalski
2026-02-13 09:24:02 +01:00
parent d175179ddc
commit b34c942a8f
18 changed files with 390 additions and 352 deletions

View File

@@ -24,9 +24,7 @@ BEGIN
pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK', pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK',
pBucketArea => 'ARCHIVE', pBucketArea => 'ARCHIVE',
pFolderName => 'ARCHIVE/LM/LM_ADHOC_ADJUSTMENTS_HEADER', 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'); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_ADHOC_ADJ_HEADER exported');
EXCEPTION EXCEPTION
@@ -46,9 +44,7 @@ BEGIN
pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK', pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK',
pBucketArea => 'ARCHIVE', pBucketArea => 'ARCHIVE',
pFolderName => 'ARCHIVE/LM/LM_ADHOC_ADJUSTMENTS_ITEM', 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'); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_ADHOC_ADJ_ITEM exported');
EXCEPTION EXCEPTION
@@ -68,9 +64,7 @@ BEGIN
pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK', pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK',
pBucketArea => 'ARCHIVE', pBucketArea => 'ARCHIVE',
pFolderName => 'ARCHIVE/LM/LM_ADHOC_ADJUSTMENTS_ITEM_HEADER', 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'); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_ADHOC_ADJ_ITEM_HEADER exported');
EXCEPTION EXCEPTION

View File

@@ -29,9 +29,7 @@ BEGIN
pKeyColumnName => 'A_ETL_LOAD_SET_KEY', pKeyColumnName => 'A_ETL_LOAD_SET_KEY',
pBucketArea => 'ARCHIVE', pBucketArea => 'ARCHIVE',
pFolderName => 'ARCHIVE/LM/LM_BALANCESHEET_HEADER', pFolderName => 'ARCHIVE/LM/LM_BALANCESHEET_HEADER',
pParallelDegree => 4, pParallelDegree => 4
pRegisterExport => TRUE,
pProcessName => 'MARS-826'
); );
DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_BALANCESHEET_HEADER exported'); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_BALANCESHEET_HEADER exported');
EXCEPTION EXCEPTION
@@ -51,9 +49,7 @@ BEGIN
pKeyColumnName => 'A_ETL_LOAD_SET_KEY', pKeyColumnName => 'A_ETL_LOAD_SET_KEY',
pBucketArea => 'ARCHIVE', pBucketArea => 'ARCHIVE',
pFolderName => 'ARCHIVE/LM/LM_BALANCESHEET_ITEM', pFolderName => 'ARCHIVE/LM/LM_BALANCESHEET_ITEM',
pParallelDegree => 16, pParallelDegree => 16
pRegisterExport => TRUE,
pProcessName => 'MARS-826'
); );
DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_BALANCESHEET_ITEM exported'); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_BALANCESHEET_ITEM exported');
EXCEPTION EXCEPTION

View File

@@ -24,9 +24,7 @@ BEGIN
pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK', pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK',
pBucketArea => 'ARCHIVE', pBucketArea => 'ARCHIVE',
pFolderName => 'ARCHIVE/LM/LM_CSM_ADJUSTMENTS_HEADER', 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'); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_CSM_ADJ_HEADER exported');
EXCEPTION EXCEPTION
@@ -46,9 +44,7 @@ BEGIN
pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK', pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK',
pBucketArea => 'ARCHIVE', pBucketArea => 'ARCHIVE',
pFolderName => 'ARCHIVE/LM/LM_CSM_ADJUSTMENTS_ITEM', 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'); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_CSM_ADJ_ITEM exported');
EXCEPTION EXCEPTION
@@ -68,9 +64,7 @@ BEGIN
pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK', pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK',
pBucketArea => 'ARCHIVE', pBucketArea => 'ARCHIVE',
pFolderName => 'ARCHIVE/LM/LM_CSM_ADJUSTMENTS_ITEM_HEADER', 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'); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_CSM_ADJ_ITEM_HEADER exported');
EXCEPTION EXCEPTION

View File

@@ -29,9 +29,7 @@ BEGIN
pKeyColumnName => 'A_ETL_LOAD_SET_FK', pKeyColumnName => 'A_ETL_LOAD_SET_FK',
pBucketArea => 'ARCHIVE', pBucketArea => 'ARCHIVE',
pFolderName => 'ARCHIVE/LM/LM_STANDING_FACILITIES', pFolderName => 'ARCHIVE/LM/LM_STANDING_FACILITIES',
pParallelDegree => 8, pParallelDegree => 8
pRegisterExport => TRUE,
pProcessName => 'MARS-826'
); );
DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_STANDING_FACILITY exported'); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_STANDING_FACILITY exported');
EXCEPTION EXCEPTION
@@ -51,9 +49,7 @@ BEGIN
pKeyColumnName => 'A_ETL_LOAD_SET_FK', pKeyColumnName => 'A_ETL_LOAD_SET_FK',
pBucketArea => 'ARCHIVE', pBucketArea => 'ARCHIVE',
pFolderName => 'ARCHIVE/LM/LM_STANDING_FACILITIES_HEADER', 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'); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_STANDING_FACILITY_HEADER exported');
EXCEPTION EXCEPTION

View File

@@ -25,9 +25,7 @@ BEGIN
pKeyColumnName => 'A_ETL_LOAD_SET_KEY', pKeyColumnName => 'A_ETL_LOAD_SET_KEY',
pBucketArea => 'ARCHIVE', pBucketArea => 'ARCHIVE',
pFolderName => 'ARCHIVE/LM/LM_CURRENT_ACCOUNTS_HEADER', 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'); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_MRR_IND_CURRENT_ACCOUNT_HEADER exported');
EXCEPTION EXCEPTION
@@ -47,9 +45,7 @@ BEGIN
pKeyColumnName => 'A_ETL_LOAD_SET_KEY', pKeyColumnName => 'A_ETL_LOAD_SET_KEY',
pBucketArea => 'ARCHIVE', pBucketArea => 'ARCHIVE',
pFolderName => 'ARCHIVE/LM/LM_CURRENT_ACCOUNTS_ITEM', 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'); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_MRR_IND_CURRENT_ACCOUNT_ITEM exported');
EXCEPTION EXCEPTION

View File

@@ -29,9 +29,7 @@ BEGIN
pKeyColumnName => 'A_ETL_LOAD_SET_FK', pKeyColumnName => 'A_ETL_LOAD_SET_FK',
pBucketArea => 'ARCHIVE', pBucketArea => 'ARCHIVE',
pFolderName => 'ARCHIVE/LM/LM_FORECAST_HEADER', pFolderName => 'ARCHIVE/LM/LM_FORECAST_HEADER',
pParallelDegree => 4, pParallelDegree => 4
pRegisterExport => TRUE,
pProcessName => 'MARS-826'
); );
DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_FORECAST_HEADER exported'); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_FORECAST_HEADER exported');
EXCEPTION EXCEPTION
@@ -51,9 +49,7 @@ BEGIN
pKeyColumnName => 'A_ETL_LOAD_SET_FK', pKeyColumnName => 'A_ETL_LOAD_SET_FK',
pBucketArea => 'ARCHIVE', pBucketArea => 'ARCHIVE',
pFolderName => 'ARCHIVE/LM/LM_FORECAST_ITEM', pFolderName => 'ARCHIVE/LM/LM_FORECAST_ITEM',
pParallelDegree => 16, pParallelDegree => 16
pRegisterExport => TRUE,
pProcessName => 'MARS-826'
); );
DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_FORECAST_ITEM exported'); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_FORECAST_ITEM exported');
EXCEPTION EXCEPTION

View File

@@ -24,9 +24,7 @@ BEGIN
pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK', pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK',
pBucketArea => 'ARCHIVE', pBucketArea => 'ARCHIVE',
pFolderName => 'ARCHIVE/LM/LM_QRE_ADJUSTMENTS_HEADER', 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'); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_QR_ADJ_HEADER exported');
EXCEPTION EXCEPTION
@@ -46,9 +44,7 @@ BEGIN
pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK', pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK',
pBucketArea => 'ARCHIVE', pBucketArea => 'ARCHIVE',
pFolderName => 'ARCHIVE/LM/LM_QRE_ADJUSTMENTS_ITEM', 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'); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_QR_ADJ_ITEM exported');
EXCEPTION EXCEPTION
@@ -68,9 +64,7 @@ BEGIN
pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK', pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK',
pBucketArea => 'ARCHIVE', pBucketArea => 'ARCHIVE',
pFolderName => 'ARCHIVE/LM/LM_QRE_ADJUSTMENTS_ITEM_HEADER', 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'); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_QR_ADJ_ITEM_HEADER exported');
EXCEPTION EXCEPTION

View File

@@ -24,9 +24,7 @@ BEGIN
pKeyColumnName => 'A_ETL_LOAD_SET_FK', pKeyColumnName => 'A_ETL_LOAD_SET_FK',
pBucketArea => 'ARCHIVE', pBucketArea => 'ARCHIVE',
pFolderName => 'ARCHIVE/LM/LM_TTS_HEADER', pFolderName => 'ARCHIVE/LM/LM_TTS_HEADER',
pParallelDegree => 1, pParallelDegree => 1
pRegisterExport => TRUE,
pProcessName => 'MARS-826'
); );
DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_TTS_HEADER exported'); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_TTS_HEADER exported');
EXCEPTION EXCEPTION
@@ -46,9 +44,7 @@ BEGIN
pKeyColumnName => 'A_ETL_LOAD_SET_FK', pKeyColumnName => 'A_ETL_LOAD_SET_FK',
pBucketArea => 'ARCHIVE', pBucketArea => 'ARCHIVE',
pFolderName => 'ARCHIVE/LM/LM_TTS_ITEM', pFolderName => 'ARCHIVE/LM/LM_TTS_ITEM',
pParallelDegree => 1, pParallelDegree => 1
pRegisterExport => TRUE,
pProcessName => 'MARS-826'
); );
DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_TTS_ITEM exported'); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_TTS_ITEM exported');
EXCEPTION EXCEPTION

View File

@@ -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;
/

View File

@@ -23,6 +23,11 @@ DECLARE
vBucketUri VARCHAR2(500); vBucketUri VARCHAR2(500);
vCredentialName VARCHAR2(100); vCredentialName VARCHAR2(100);
vFileCount NUMBER := 0; vFileCount NUMBER := 0;
vDeletedCount NUMBER := 0;
vTotalDeleted NUMBER := 0;
TYPE t_folder_list IS TABLE OF VARCHAR2(200);
vFolders t_folder_list;
BEGIN BEGIN
-- Get bucket URI and credential from FILE_MANAGER configuration -- Get bucket URI and credential from FILE_MANAGER configuration
vBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('ARCHIVE'); 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('START TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3'));
DBMS_OUTPUT.PUT_LINE(''); 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 -- Initialize folder list for ADHOC_ADJ tables
FOR rec IN ( vFolders := t_folder_list(
SELECT SOURCE_FILE_NAME AS object_name 'ARCHIVE/LM/LM_ADHOC_ADJUSTMENTS_HEADER/',
FROM CT_MRDS.A_SOURCE_FILE_RECEIVED 'ARCHIVE/LM/LM_ADHOC_ADJUSTMENTS_ITEM/',
WHERE PROCESS_NAME = 'MARS-826' 'ARCHIVE/LM/LM_ADHOC_ADJUSTMENTS_ITEM_HEADER/'
AND (SOURCE_FILE_NAME LIKE '%ADHOC_ADJUSTMENTS%') );
ORDER BY SOURCE_FILE_NAME
) LOOP -- Process each folder
vFileCount := vFileCount + 1; FOR i IN 1..vFolders.COUNT LOOP
DBMS_OUTPUT.PUT_LINE('Processing folder: ' || vFolders(i));
vFileCount := 0;
vDeletedCount := 0;
BEGIN -- List and delete all Parquet files in the folder
-- Delete the file FOR rec IN (
DBMS_CLOUD.DELETE_OBJECT( SELECT object_name
FROM TABLE(DBMS_CLOUD.LIST_OBJECTS(
credential_name => vCredentialName, 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); BEGIN
-- Delete the Parquet file
EXCEPTION DBMS_CLOUD.DELETE_OBJECT(
WHEN OTHERS THEN credential_name => vCredentialName,
IF SQLCODE = -20404 THEN object_uri => vBucketUri || vFolders(i) || rec.object_name
DBMS_OUTPUT.PUT_LINE(' Skipped (not found): ' || rec.object_name); );
ELSE
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); 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; 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('=====================================================================================');
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('END TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3'));
DBMS_OUTPUT.PUT_LINE('====================================================================================='); DBMS_OUTPUT.PUT_LINE('=====================================================================================');

View File

@@ -22,6 +22,11 @@ DECLARE
vBucketUri VARCHAR2(500); vBucketUri VARCHAR2(500);
vCredentialName VARCHAR2(100); vCredentialName VARCHAR2(100);
vFileCount NUMBER := 0; vFileCount NUMBER := 0;
vDeletedCount NUMBER := 0;
vTotalDeleted NUMBER := 0;
TYPE t_folder_list IS TABLE OF VARCHAR2(200);
vFolders t_folder_list;
BEGIN BEGIN
-- Get bucket URI and credential from FILE_MANAGER configuration -- Get bucket URI and credential from FILE_MANAGER configuration
vBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('ARCHIVE'); 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('START TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3'));
DBMS_OUTPUT.PUT_LINE(''); 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 -- Initialize folder list for BALANCESHEET tables
FOR rec IN ( vFolders := t_folder_list(
SELECT SOURCE_FILE_NAME AS object_name 'ARCHIVE/LM/LM_BALANCESHEET_HEADER/',
FROM CT_MRDS.A_SOURCE_FILE_RECEIVED 'ARCHIVE/LM/LM_BALANCESHEET_ITEM/'
WHERE PROCESS_NAME = 'MARS-826' );
AND (SOURCE_FILE_NAME LIKE '%BALANCESHEET%')
ORDER BY SOURCE_FILE_NAME -- Process each folder
) LOOP FOR i IN 1..vFolders.COUNT LOOP
vFileCount := vFileCount + 1; DBMS_OUTPUT.PUT_LINE('Processing folder: ' || vFolders(i));
vFileCount := 0;
vDeletedCount := 0;
BEGIN -- List and delete all Parquet files in the folder
-- Delete the file FOR rec IN (
DBMS_CLOUD.DELETE_OBJECT( SELECT object_name
FROM TABLE(DBMS_CLOUD.LIST_OBJECTS(
credential_name => vCredentialName, 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); BEGIN
-- Delete the Parquet file
EXCEPTION DBMS_CLOUD.DELETE_OBJECT(
WHEN OTHERS THEN credential_name => vCredentialName,
IF SQLCODE = -20404 THEN object_uri => vBucketUri || vFolders(i) || rec.object_name
DBMS_OUTPUT.PUT_LINE(' Skipped (not found): ' || rec.object_name); );
ELSE
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); 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; 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('=====================================================================================');
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('END TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3'));
DBMS_OUTPUT.PUT_LINE('====================================================================================='); DBMS_OUTPUT.PUT_LINE('=====================================================================================');

View File

@@ -23,6 +23,11 @@ DECLARE
vBucketUri VARCHAR2(500); vBucketUri VARCHAR2(500);
vCredentialName VARCHAR2(100); vCredentialName VARCHAR2(100);
vFileCount NUMBER := 0; vFileCount NUMBER := 0;
vDeletedCount NUMBER := 0;
vTotalDeleted NUMBER := 0;
TYPE t_folder_list IS TABLE OF VARCHAR2(200);
vFolders t_folder_list;
BEGIN BEGIN
-- Get bucket URI and credential from FILE_MANAGER configuration -- Get bucket URI and credential from FILE_MANAGER configuration
vBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('ARCHIVE'); 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('START TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3'));
DBMS_OUTPUT.PUT_LINE(''); 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 -- Initialize folder list for CSM_ADJ tables
FOR rec IN ( vFolders := t_folder_list(
SELECT SOURCE_FILE_NAME AS object_name 'ARCHIVE/LM/LM_CSM_ADJUSTMENTS_HEADER/',
FROM CT_MRDS.A_SOURCE_FILE_RECEIVED 'ARCHIVE/LM/LM_CSM_ADJUSTMENTS_ITEM/',
WHERE PROCESS_NAME = 'MARS-826' 'ARCHIVE/LM/LM_CSM_ADJUSTMENTS_ITEM_HEADER/'
AND (SOURCE_FILE_NAME LIKE '%CSM_ADJUSTMENTS%') );
ORDER BY SOURCE_FILE_NAME
) LOOP -- Process each folder
vFileCount := vFileCount + 1; FOR i IN 1..vFolders.COUNT LOOP
DBMS_OUTPUT.PUT_LINE('Processing folder: ' || vFolders(i));
vFileCount := 0;
vDeletedCount := 0;
BEGIN -- List and delete all Parquet files in the folder
-- Delete the file FOR rec IN (
DBMS_CLOUD.DELETE_OBJECT( SELECT object_name
FROM TABLE(DBMS_CLOUD.LIST_OBJECTS(
credential_name => vCredentialName, 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); BEGIN
-- Delete the Parquet file
EXCEPTION DBMS_CLOUD.DELETE_OBJECT(
WHEN OTHERS THEN credential_name => vCredentialName,
IF SQLCODE = -20404 THEN object_uri => vBucketUri || vFolders(i) || rec.object_name
DBMS_OUTPUT.PUT_LINE(' Skipped (not found): ' || rec.object_name); );
ELSE
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); 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; 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('=====================================================================================');
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('END TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3'));
DBMS_OUTPUT.PUT_LINE('====================================================================================='); DBMS_OUTPUT.PUT_LINE('=====================================================================================');

View File

@@ -22,6 +22,11 @@ DECLARE
vBucketUri VARCHAR2(500); vBucketUri VARCHAR2(500);
vCredentialName VARCHAR2(100); vCredentialName VARCHAR2(100);
vFileCount NUMBER := 0; vFileCount NUMBER := 0;
vDeletedCount NUMBER := 0;
vTotalDeleted NUMBER := 0;
TYPE t_folder_list IS TABLE OF VARCHAR2(200);
vFolders t_folder_list;
BEGIN BEGIN
-- Get bucket URI and credential from FILE_MANAGER configuration -- Get bucket URI and credential from FILE_MANAGER configuration
vBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('ARCHIVE'); 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('START TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3'));
DBMS_OUTPUT.PUT_LINE(''); 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 -- Initialize folder list for STANDING_FACILITY tables
FOR rec IN ( vFolders := t_folder_list(
SELECT SOURCE_FILE_NAME AS object_name 'ARCHIVE/LM/LM_STANDING_FACILITIES/',
FROM CT_MRDS.A_SOURCE_FILE_RECEIVED 'ARCHIVE/LM/LM_STANDING_FACILITIES_HEADER/'
WHERE PROCESS_NAME = 'MARS-826' );
AND (SOURCE_FILE_NAME LIKE '%STANDING_FACILITIES%')
ORDER BY SOURCE_FILE_NAME -- Process each folder
) LOOP FOR i IN 1..vFolders.COUNT LOOP
vFileCount := vFileCount + 1; DBMS_OUTPUT.PUT_LINE('Processing folder: ' || vFolders(i));
vFileCount := 0;
vDeletedCount := 0;
BEGIN -- List and delete all Parquet files in the folder
-- Delete the file FOR rec IN (
DBMS_CLOUD.DELETE_OBJECT( SELECT object_name
FROM TABLE(DBMS_CLOUD.LIST_OBJECTS(
credential_name => vCredentialName, 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); BEGIN
-- Delete the Parquet file
EXCEPTION DBMS_CLOUD.DELETE_OBJECT(
WHEN OTHERS THEN credential_name => vCredentialName,
IF SQLCODE = -20404 THEN object_uri => vBucketUri || vFolders(i) || rec.object_name
DBMS_OUTPUT.PUT_LINE(' Skipped (not found): ' || rec.object_name); );
ELSE
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); 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; 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('=====================================================================================');
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('END TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3'));
DBMS_OUTPUT.PUT_LINE('====================================================================================='); DBMS_OUTPUT.PUT_LINE('=====================================================================================');

View File

@@ -22,6 +22,11 @@ DECLARE
vBucketUri VARCHAR2(500); vBucketUri VARCHAR2(500);
vCredentialName VARCHAR2(100); vCredentialName VARCHAR2(100);
vFileCount NUMBER := 0; vFileCount NUMBER := 0;
vDeletedCount NUMBER := 0;
vTotalDeleted NUMBER := 0;
TYPE t_folder_list IS TABLE OF VARCHAR2(200);
vFolders t_folder_list;
BEGIN BEGIN
-- Get bucket URI and credential from FILE_MANAGER configuration -- Get bucket URI and credential from FILE_MANAGER configuration
vBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('ARCHIVE'); 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('START TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3'));
DBMS_OUTPUT.PUT_LINE(''); 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 -- Initialize folder list for MRR_IND_CURR_ACC tables (OU_MRR schema)
FOR rec IN ( vFolders := t_folder_list(
SELECT SOURCE_FILE_NAME AS object_name 'ARCHIVE/LM/LM_CURRENT_ACCOUNTS_HEADER/',
FROM CT_MRDS.A_SOURCE_FILE_RECEIVED 'ARCHIVE/LM/LM_CURRENT_ACCOUNTS_ITEM/'
WHERE PROCESS_NAME = 'MARS-826' );
AND (SOURCE_FILE_NAME LIKE '%CURRENT_ACCOUNTS%')
ORDER BY SOURCE_FILE_NAME -- Process each folder
) LOOP FOR i IN 1..vFolders.COUNT LOOP
vFileCount := vFileCount + 1; DBMS_OUTPUT.PUT_LINE('Processing folder: ' || vFolders(i));
vFileCount := 0;
vDeletedCount := 0;
BEGIN -- List and delete all Parquet files in the folder
-- Delete the file FOR rec IN (
DBMS_CLOUD.DELETE_OBJECT( SELECT object_name
FROM TABLE(DBMS_CLOUD.LIST_OBJECTS(
credential_name => vCredentialName, 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); BEGIN
-- Delete the Parquet file
EXCEPTION DBMS_CLOUD.DELETE_OBJECT(
WHEN OTHERS THEN credential_name => vCredentialName,
IF SQLCODE = -20404 THEN object_uri => vBucketUri || vFolders(i) || rec.object_name
DBMS_OUTPUT.PUT_LINE(' Skipped (not found): ' || rec.object_name); );
ELSE
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); 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; 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('=====================================================================================');
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('END TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3'));
DBMS_OUTPUT.PUT_LINE('====================================================================================='); DBMS_OUTPUT.PUT_LINE('=====================================================================================');

View File

@@ -22,6 +22,11 @@ DECLARE
vBucketUri VARCHAR2(500); vBucketUri VARCHAR2(500);
vCredentialName VARCHAR2(100); vCredentialName VARCHAR2(100);
vFileCount NUMBER := 0; vFileCount NUMBER := 0;
vDeletedCount NUMBER := 0;
vTotalDeleted NUMBER := 0;
TYPE t_folder_list IS TABLE OF VARCHAR2(200);
vFolders t_folder_list;
BEGIN BEGIN
-- Get bucket URI and credential from FILE_MANAGER configuration -- Get bucket URI and credential from FILE_MANAGER configuration
vBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('ARCHIVE'); 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('START TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3'));
DBMS_OUTPUT.PUT_LINE(''); 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 -- Initialize folder list for FORECAST tables
FOR rec IN ( vFolders := t_folder_list(
SELECT SOURCE_FILE_NAME AS object_name 'ARCHIVE/LM/LM_FORECAST_HEADER/',
FROM CT_MRDS.A_SOURCE_FILE_RECEIVED 'ARCHIVE/LM/LM_FORECAST_ITEM/'
WHERE PROCESS_NAME = 'MARS-826' );
AND (SOURCE_FILE_NAME LIKE '%FORECAST%')
ORDER BY SOURCE_FILE_NAME -- Process each folder
) LOOP FOR i IN 1..vFolders.COUNT LOOP
vFileCount := vFileCount + 1; DBMS_OUTPUT.PUT_LINE('Processing folder: ' || vFolders(i));
vFileCount := 0;
vDeletedCount := 0;
BEGIN -- List and delete all Parquet files in the folder
-- Delete the file FOR rec IN (
DBMS_CLOUD.DELETE_OBJECT( SELECT object_name
FROM TABLE(DBMS_CLOUD.LIST_OBJECTS(
credential_name => vCredentialName, 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); BEGIN
-- Delete the Parquet file
EXCEPTION DBMS_CLOUD.DELETE_OBJECT(
WHEN OTHERS THEN credential_name => vCredentialName,
IF SQLCODE = -20404 THEN object_uri => vBucketUri || vFolders(i) || rec.object_name
DBMS_OUTPUT.PUT_LINE(' Skipped (not found): ' || rec.object_name); );
ELSE
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); 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; 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('=====================================================================================');
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('END TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3'));
DBMS_OUTPUT.PUT_LINE('====================================================================================='); DBMS_OUTPUT.PUT_LINE('=====================================================================================');

View File

@@ -23,6 +23,11 @@ DECLARE
vBucketUri VARCHAR2(500); vBucketUri VARCHAR2(500);
vCredentialName VARCHAR2(100); vCredentialName VARCHAR2(100);
vFileCount NUMBER := 0; vFileCount NUMBER := 0;
vDeletedCount NUMBER := 0;
vTotalDeleted NUMBER := 0;
TYPE t_folder_list IS TABLE OF VARCHAR2(200);
vFolders t_folder_list;
BEGIN BEGIN
-- Get bucket URI and credential from FILE_MANAGER configuration -- Get bucket URI and credential from FILE_MANAGER configuration
vBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('ARCHIVE'); 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('START TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3'));
DBMS_OUTPUT.PUT_LINE(''); 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 -- Initialize folder list for QR_ADJ tables
FOR rec IN ( vFolders := t_folder_list(
SELECT SOURCE_FILE_NAME AS object_name 'ARCHIVE/LM/LM_QRE_ADJUSTMENTS_HEADER/',
FROM CT_MRDS.A_SOURCE_FILE_RECEIVED 'ARCHIVE/LM/LM_QRE_ADJUSTMENTS_ITEM/',
WHERE PROCESS_NAME = 'MARS-826' 'ARCHIVE/LM/LM_QRE_ADJUSTMENTS_ITEM_HEADER/'
AND (SOURCE_FILE_NAME LIKE '%QRE_ADJUSTMENTS%') );
ORDER BY SOURCE_FILE_NAME
) LOOP -- Process each folder
vFileCount := vFileCount + 1; FOR i IN 1..vFolders.COUNT LOOP
DBMS_OUTPUT.PUT_LINE('Processing folder: ' || vFolders(i));
vFileCount := 0;
vDeletedCount := 0;
BEGIN -- List and delete all Parquet files in the folder
-- Delete the file FOR rec IN (
DBMS_CLOUD.DELETE_OBJECT( SELECT object_name
FROM TABLE(DBMS_CLOUD.LIST_OBJECTS(
credential_name => vCredentialName, 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); BEGIN
-- Delete the Parquet file
EXCEPTION DBMS_CLOUD.DELETE_OBJECT(
WHEN OTHERS THEN credential_name => vCredentialName,
IF SQLCODE = -20404 THEN object_uri => vBucketUri || vFolders(i) || rec.object_name
DBMS_OUTPUT.PUT_LINE(' Skipped (not found): ' || rec.object_name); );
ELSE
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); 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; 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('=====================================================================================');
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('END TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3'));
DBMS_OUTPUT.PUT_LINE('====================================================================================='); DBMS_OUTPUT.PUT_LINE('=====================================================================================');

View File

@@ -22,6 +22,11 @@ DECLARE
vBucketUri VARCHAR2(500); vBucketUri VARCHAR2(500);
vCredentialName VARCHAR2(100); vCredentialName VARCHAR2(100);
vFileCount NUMBER := 0; vFileCount NUMBER := 0;
vDeletedCount NUMBER := 0;
vTotalDeleted NUMBER := 0;
TYPE t_folder_list IS TABLE OF VARCHAR2(200);
vFolders t_folder_list;
BEGIN BEGIN
-- Get bucket URI and credential from FILE_MANAGER configuration -- Get bucket URI and credential from FILE_MANAGER configuration
vBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('ARCHIVE'); 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('START TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3'));
DBMS_OUTPUT.PUT_LINE(''); 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 -- Initialize folder list for TTS tables
FOR rec IN ( vFolders := t_folder_list(
SELECT SOURCE_FILE_NAME AS object_name 'ARCHIVE/LM/LM_TTS_HEADER/',
FROM CT_MRDS.A_SOURCE_FILE_RECEIVED 'ARCHIVE/LM/LM_TTS_ITEM/'
WHERE PROCESS_NAME = 'MARS-826' );
AND (SOURCE_FILE_NAME LIKE '%TTS%')
ORDER BY SOURCE_FILE_NAME -- Process each folder
) LOOP FOR i IN 1..vFolders.COUNT LOOP
vFileCount := vFileCount + 1; DBMS_OUTPUT.PUT_LINE('Processing folder: ' || vFolders(i));
vFileCount := 0;
vDeletedCount := 0;
BEGIN -- List and delete all Parquet files in the folder
-- Delete the file FOR rec IN (
DBMS_CLOUD.DELETE_OBJECT( SELECT object_name
FROM TABLE(DBMS_CLOUD.LIST_OBJECTS(
credential_name => vCredentialName, 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); BEGIN
-- Delete the Parquet file
EXCEPTION DBMS_CLOUD.DELETE_OBJECT(
WHEN OTHERS THEN credential_name => vCredentialName,
IF SQLCODE = -20404 THEN object_uri => vBucketUri || vFolders(i) || rec.object_name
DBMS_OUTPUT.PUT_LINE(' Skipped (not found): ' || rec.object_name); );
ELSE
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); 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; 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('=====================================================================================');
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('END TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3'));
DBMS_OUTPUT.PUT_LINE('====================================================================================='); DBMS_OUTPUT.PUT_LINE('=====================================================================================');

View File

@@ -57,7 +57,6 @@ PROMPT
PROMPT ============================================================================ PROMPT ============================================================================
-- Execute rollback scripts -- Execute rollback scripts
@@90_MARS_826_rollback_file_registrations.sql
@@91_MARS_826_rollback_ADHOC_ADJ_tables.sql @@91_MARS_826_rollback_ADHOC_ADJ_tables.sql
@@92_MARS_826_rollback_BALANCESHEET_tables.sql @@92_MARS_826_rollback_BALANCESHEET_tables.sql
@@93_MARS_826_rollback_CSM_ADJ_tables.sql @@93_MARS_826_rollback_CSM_ADJ_tables.sql