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.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
/
|
||||
|
||||
@@ -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/'
|
||||
);
|
||||
-- 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;
|
||||
|
||||
-- Process each folder
|
||||
FOR i IN 1..vFolders.COUNT LOOP
|
||||
DBMS_OUTPUT.PUT_LINE('Processing folder: ' || vFolders(i));
|
||||
vFileCount := 0;
|
||||
vDeletedCount := 0;
|
||||
|
||||
-- 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
|
||||
);
|
||||
DBMS_OUTPUT.PUT_LINE(' [' || vFileCount || '] Deleted: ' || rec.object_name);
|
||||
|
||||
vDeletedCount := vDeletedCount + 1;
|
||||
DBMS_OUTPUT.PUT_LINE(' [' || vDeletedCount || '] Deleted: ' || rec.object_name);
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
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('=====================================================================================');
|
||||
|
||||
|
||||
@@ -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/'
|
||||
);
|
||||
-- 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;
|
||||
|
||||
-- Process each folder
|
||||
FOR i IN 1..vFolders.COUNT LOOP
|
||||
DBMS_OUTPUT.PUT_LINE('Processing folder: ' || vFolders(i));
|
||||
vFileCount := 0;
|
||||
vDeletedCount := 0;
|
||||
|
||||
-- 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
|
||||
);
|
||||
DBMS_OUTPUT.PUT_LINE(' [' || vFileCount || '] Deleted: ' || rec.object_name);
|
||||
|
||||
vDeletedCount := vDeletedCount + 1;
|
||||
DBMS_OUTPUT.PUT_LINE(' [' || vDeletedCount || '] Deleted: ' || rec.object_name);
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
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('=====================================================================================');
|
||||
|
||||
|
||||
@@ -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/'
|
||||
);
|
||||
-- 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;
|
||||
|
||||
-- Process each folder
|
||||
FOR i IN 1..vFolders.COUNT LOOP
|
||||
DBMS_OUTPUT.PUT_LINE('Processing folder: ' || vFolders(i));
|
||||
vFileCount := 0;
|
||||
vDeletedCount := 0;
|
||||
|
||||
-- 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
|
||||
);
|
||||
DBMS_OUTPUT.PUT_LINE(' [' || vFileCount || '] Deleted: ' || rec.object_name);
|
||||
|
||||
vDeletedCount := vDeletedCount + 1;
|
||||
DBMS_OUTPUT.PUT_LINE(' [' || vDeletedCount || '] Deleted: ' || rec.object_name);
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
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('=====================================================================================');
|
||||
|
||||
|
||||
@@ -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/'
|
||||
);
|
||||
-- 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;
|
||||
|
||||
-- Process each folder
|
||||
FOR i IN 1..vFolders.COUNT LOOP
|
||||
DBMS_OUTPUT.PUT_LINE('Processing folder: ' || vFolders(i));
|
||||
vFileCount := 0;
|
||||
vDeletedCount := 0;
|
||||
|
||||
-- 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
|
||||
);
|
||||
DBMS_OUTPUT.PUT_LINE(' [' || vFileCount || '] Deleted: ' || rec.object_name);
|
||||
|
||||
vDeletedCount := vDeletedCount + 1;
|
||||
DBMS_OUTPUT.PUT_LINE(' [' || vDeletedCount || '] Deleted: ' || rec.object_name);
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
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('=====================================================================================');
|
||||
|
||||
|
||||
@@ -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/'
|
||||
);
|
||||
-- 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;
|
||||
|
||||
-- Process each folder
|
||||
FOR i IN 1..vFolders.COUNT LOOP
|
||||
DBMS_OUTPUT.PUT_LINE('Processing folder: ' || vFolders(i));
|
||||
vFileCount := 0;
|
||||
vDeletedCount := 0;
|
||||
|
||||
-- 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
|
||||
);
|
||||
DBMS_OUTPUT.PUT_LINE(' [' || vFileCount || '] Deleted: ' || rec.object_name);
|
||||
|
||||
vDeletedCount := vDeletedCount + 1;
|
||||
DBMS_OUTPUT.PUT_LINE(' [' || vDeletedCount || '] Deleted: ' || rec.object_name);
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
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('=====================================================================================');
|
||||
|
||||
|
||||
@@ -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/'
|
||||
);
|
||||
-- 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;
|
||||
|
||||
-- Process each folder
|
||||
FOR i IN 1..vFolders.COUNT LOOP
|
||||
DBMS_OUTPUT.PUT_LINE('Processing folder: ' || vFolders(i));
|
||||
vFileCount := 0;
|
||||
vDeletedCount := 0;
|
||||
|
||||
-- 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
|
||||
);
|
||||
DBMS_OUTPUT.PUT_LINE(' [' || vFileCount || '] Deleted: ' || rec.object_name);
|
||||
|
||||
vDeletedCount := vDeletedCount + 1;
|
||||
DBMS_OUTPUT.PUT_LINE(' [' || vDeletedCount || '] Deleted: ' || rec.object_name);
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
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('=====================================================================================');
|
||||
|
||||
|
||||
@@ -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/'
|
||||
);
|
||||
-- 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;
|
||||
|
||||
-- Process each folder
|
||||
FOR i IN 1..vFolders.COUNT LOOP
|
||||
DBMS_OUTPUT.PUT_LINE('Processing folder: ' || vFolders(i));
|
||||
vFileCount := 0;
|
||||
vDeletedCount := 0;
|
||||
|
||||
-- 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
|
||||
);
|
||||
DBMS_OUTPUT.PUT_LINE(' [' || vFileCount || '] Deleted: ' || rec.object_name);
|
||||
|
||||
vDeletedCount := vDeletedCount + 1;
|
||||
DBMS_OUTPUT.PUT_LINE(' [' || vDeletedCount || '] Deleted: ' || rec.object_name);
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
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('=====================================================================================');
|
||||
|
||||
|
||||
@@ -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/'
|
||||
);
|
||||
-- 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;
|
||||
|
||||
-- Process each folder
|
||||
FOR i IN 1..vFolders.COUNT LOOP
|
||||
DBMS_OUTPUT.PUT_LINE('Processing folder: ' || vFolders(i));
|
||||
vFileCount := 0;
|
||||
vDeletedCount := 0;
|
||||
|
||||
-- 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
|
||||
);
|
||||
DBMS_OUTPUT.PUT_LINE(' [' || vFileCount || '] Deleted: ' || rec.object_name);
|
||||
|
||||
vDeletedCount := vDeletedCount + 1;
|
||||
DBMS_OUTPUT.PUT_LINE(' [' || vDeletedCount || '] Deleted: ' || rec.object_name);
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
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('=====================================================================================');
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user