diff --git a/MARS_Packages/REL01_ADDITIONS/MARS-835/01_MARS_835_install_step1.sql b/MARS_Packages/REL01_ADDITIONS/MARS-835/01_MARS_835_install_step1.sql index 3dbc997..3686c1e 100644 --- a/MARS_Packages/REL01_ADDITIONS/MARS-835/01_MARS_835_install_step1.sql +++ b/MARS_Packages/REL01_ADDITIONS/MARS-835/01_MARS_835_install_step1.sql @@ -107,7 +107,8 @@ BEGIN pParallelDegree => 16, pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_DEBT', pMaxFileSize => 104857600, -- 100MB in bytes (safe for parallel execution, avoids ORA-04036) - pRegisterExport => TRUE -- Register exported files in A_SOURCE_FILE_RECEIVED with metadata (CHECKSUM, CREATED, BYTES) + pRegisterExport => TRUE, -- Register exported files in A_SOURCE_FILE_RECEIVED with metadata (CHECKSUM, CREATED, BYTES) + pProcessName => 'MARS-835' -- Process identifier for tracking ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_DEBT exported to DATA bucket with template column order'); @@ -128,7 +129,9 @@ BEGIN pFolderName => 'ARCHIVE/CSDB/CSDB_DEBT', pMaxDate => &cutoff_date, pParallelDegree => 16, - pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_DEBT' + pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_DEBT', + pRegisterExport => TRUE, + pProcessName => 'MARS-835' ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_DEBT exported to HIST bucket with template column order'); @@ -227,7 +230,8 @@ BEGIN pParallelDegree => 16, pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_DEBT_DAILY', pMaxFileSize => 104857600, -- 100MB in bytes (safe for parallel execution, avoids ORA-04036) - pRegisterExport => TRUE -- Register exported files in A_SOURCE_FILE_RECEIVED with metadata (CHECKSUM, CREATED, BYTES) + pRegisterExport => TRUE, -- Register exported files in A_SOURCE_FILE_RECEIVED with metadata (CHECKSUM, CREATED, BYTES) + pProcessName => 'MARS-835' -- Process identifier for tracking ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_DEBT_DAILY exported to DATA bucket with template column order'); @@ -248,7 +252,9 @@ BEGIN pFolderName => 'ARCHIVE/CSDB/CSDB_DEBT_DAILY', pMaxDate => &cutoff_date, pParallelDegree => 16, - pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_DEBT_DAILY' + pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_DEBT_DAILY', + pRegisterExport => TRUE, + pProcessName => 'MARS-835' ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_DEBT_DAILY exported to HIST bucket with template column order'); diff --git a/MARS_Packages/REL01_ADDITIONS/MARS-835/02_MARS_835_install_step2.sql b/MARS_Packages/REL01_ADDITIONS/MARS-835/02_MARS_835_install_step2.sql index 3db3bdf..944251d 100644 --- a/MARS_Packages/REL01_ADDITIONS/MARS-835/02_MARS_835_install_step2.sql +++ b/MARS_Packages/REL01_ADDITIONS/MARS-835/02_MARS_835_install_step2.sql @@ -35,7 +35,9 @@ BEGIN pFolderName => 'ARCHIVE/CSDB/CSDB_INSTR_RAT_FULL', pMaxDate => SYSDATE, pParallelDegree => 8, - pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_INSTR_RAT_FULL' + pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_INSTR_RAT_FULL', + pRegisterExport => TRUE, + pProcessName => 'MARS-835' ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_INSTR_RAT_FULL exported to HIST bucket with template column order'); @@ -62,7 +64,9 @@ BEGIN pFolderName => 'ARCHIVE/CSDB/CSDB_INSTR_DESC_FULL', pMaxDate => SYSDATE, pParallelDegree => 8, - pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_INSTR_DESC_FULL' + pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_INSTR_DESC_FULL', + pRegisterExport => TRUE, + pProcessName => 'MARS-835' ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_INSTR_DESC_FULL exported to HIST bucket with template column order'); @@ -89,7 +93,9 @@ BEGIN pFolderName => 'ARCHIVE/CSDB/CSDB_ISSUER_RAT_FULL', pMaxDate => SYSDATE, pParallelDegree => 8, - pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_ISSUER_RAT_FULL' + pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_ISSUER_RAT_FULL', + pRegisterExport => TRUE, + pProcessName => 'MARS-835' ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_ISSUER_RAT_FULL exported to HIST bucket with template column order'); @@ -116,7 +122,9 @@ BEGIN pFolderName => 'ARCHIVE/CSDB/CSDB_ISSUER_DESC_FULL', pMaxDate => SYSDATE, pParallelDegree => 8, - pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_ISSUER_DESC_FULL' + pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_ISSUER_DESC_FULL', + pRegisterExport => TRUE, + pProcessName => 'MARS-835' ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_ISSUER_DESC_FULL exported to HIST bucket with template column order'); diff --git a/MARS_Packages/REL01_ADDITIONS/MARS-835/91_MARS_835_rollback_step1.sql b/MARS_Packages/REL01_ADDITIONS/MARS-835/91_MARS_835_rollback_step1.sql index 20848a8..e837f2f 100644 --- a/MARS_Packages/REL01_ADDITIONS/MARS-835/91_MARS_835_rollback_step1.sql +++ b/MARS_Packages/REL01_ADDITIONS/MARS-835/91_MARS_835_rollback_step1.sql @@ -22,32 +22,43 @@ DECLARE vDataBucketUri VARCHAR2(500); vHistBucketUri VARCHAR2(500); vCredentialName VARCHAR2(100); + vFileCount NUMBER := 0; BEGIN -- Get bucket URIs and credential vDataBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('DATA'); vHistBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('ARCHIVE'); vCredentialName := CT_MRDS.ENV_MANAGER.gvCredentialName; - DBMS_OUTPUT.PUT_LINE('Deleting DEBT files from DATA bucket...'); + DBMS_OUTPUT.PUT_LINE('Deleting DEBT files from DATA and HIST buckets...'); + DBMS_OUTPUT.PUT_LINE(' Using A_SOURCE_FILE_RECEIVED with PROCESS_NAME = ''MARS-835'''); - -- Delete CSV files from DATA bucket (only files matching export pattern) - -- Pattern matches: LEGACY_DEBT_YYYYMM.csv OR LEGACY_DEBT_YYYYMM_1_20260122T...Z.csv (Oracle timestamp) + -- Delete files registered by MARS-835 process for CSDB_DEBT FOR rec IN ( - SELECT object_name - FROM TABLE(DBMS_CLOUD.LIST_OBJECTS( - credential_name => vCredentialName, - location_uri => vDataBucketUri || 'ODS/CSDB/CSDB_DEBT/' - )) - WHERE object_name LIKE 'LEGACY_DEBT_%' - AND object_name LIKE '%.csv' - AND REGEXP_LIKE(object_name, '^LEGACY_DEBT_[0-9]{6}(_[0-9]+_[0-9]{8}T[0-9]{6,}Z)?\.csv$') -- YYYYMM or YYYYMM_1_timestamp + SELECT SOURCE_FILE_NAME AS object_name, + CASE + WHEN SOURCE_FILE_NAME LIKE '%.csv' THEN 'DATA' + WHEN SOURCE_FILE_NAME LIKE '%.parquet' THEN 'ARCHIVE' + ELSE 'UNKNOWN' + END AS bucket_type + FROM CT_MRDS.A_SOURCE_FILE_RECEIVED + WHERE PROCESS_NAME = 'MARS-835' + AND SOURCE_FILE_NAME LIKE '%DEBT%' + AND SOURCE_FILE_NAME NOT LIKE '%DEBT_DAILY%' ) LOOP BEGIN - DBMS_CLOUD.DELETE_OBJECT( - credential_name => vCredentialName, - object_uri => vDataBucketUri || 'ODS/CSDB/CSDB_DEBT/' || rec.object_name - ); - DBMS_OUTPUT.PUT_LINE(' Deleted: ' || rec.object_name); + IF rec.bucket_type = 'DATA' THEN + DBMS_CLOUD.DELETE_OBJECT( + credential_name => vCredentialName, + object_uri => vDataBucketUri || rec.object_name + ); + ELSIF rec.bucket_type = 'ARCHIVE' THEN + DBMS_CLOUD.DELETE_OBJECT( + credential_name => vCredentialName, + object_uri => vHistBucketUri || rec.object_name + ); + END IF; + DBMS_OUTPUT.PUT_LINE(' Deleted (' || rec.bucket_type || '): ' || rec.object_name); + vFileCount := vFileCount + 1; EXCEPTION WHEN OTHERS THEN IF SQLCODE = -20404 THEN @@ -58,37 +69,11 @@ BEGIN END; END LOOP; - DBMS_OUTPUT.PUT_LINE('Deleting DEBT files from HIST bucket...'); + IF vFileCount = 0 THEN + DBMS_OUTPUT.PUT_LINE(' INFO: No DEBT files found to delete'); + END IF; - -- Delete Parquet files from HIST bucket (only files matching export pattern) - -- Pattern matches: YYYYMM.parquet OR YYYYMM_1_20260122T...Z.parquet (Oracle timestamp) - FOR rec IN ( - SELECT object_name - FROM TABLE(DBMS_CLOUD.LIST_OBJECTS( - credential_name => vCredentialName, - location_uri => vHistBucketUri || 'ARCHIVE/CSDB/CSDB_DEBT/' - )) - WHERE object_name LIKE '%PARTITION_YEAR=%' -- Hive-style partitioning folders - AND object_name LIKE '%.parquet' - AND REGEXP_LIKE(object_name, '[0-9]{6}(_[0-9]+_[0-9]{8}T[0-9]{6,}Z)?\.parquet$') -- YYYYMM or YYYYMM_1_timestamp - ) LOOP - BEGIN - DBMS_CLOUD.DELETE_OBJECT( - credential_name => vCredentialName, - object_uri => vHistBucketUri || 'ARCHIVE/CSDB/CSDB_DEBT/' || rec.object_name - ); - DBMS_OUTPUT.PUT_LINE(' Deleted: ' || rec.object_name); - EXCEPTION - WHEN OTHERS THEN - IF SQLCODE = -20404 THEN - DBMS_OUTPUT.PUT_LINE(' Skipped (not found): ' || rec.object_name); - ELSE - RAISE; - END IF; - END; - END LOOP; - - DBMS_OUTPUT.PUT_LINE('SUCCESS: DEBT files deleted'); + DBMS_OUTPUT.PUT_LINE('SUCCESS: DEBT files deleted (' || vFileCount || ' file(s))'); END; / @@ -104,32 +89,42 @@ DECLARE vDataBucketUri VARCHAR2(500); vHistBucketUri VARCHAR2(500); vCredentialName VARCHAR2(100); + vFileCount NUMBER := 0; BEGIN -- Get bucket URIs and credential vDataBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('DATA'); vHistBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('ARCHIVE'); vCredentialName := CT_MRDS.ENV_MANAGER.gvCredentialName; - DBMS_OUTPUT.PUT_LINE('Deleting DEBT_DAILY files from DATA bucket...'); + DBMS_OUTPUT.PUT_LINE('Deleting DEBT_DAILY files from DATA and HIST buckets...'); + DBMS_OUTPUT.PUT_LINE(' Using A_SOURCE_FILE_RECEIVED with PROCESS_NAME = ''MARS-835'''); - -- Delete CSV files from DATA bucket (only files matching export pattern) - -- Pattern matches: LEGACY_DEBT_DAILY_YYYYMM.csv OR LEGACY_DEBT_DAILY_YYYYMM_1_timestamp.csv + -- Delete files registered by MARS-835 process for CSDB_DEBT_DAILY FOR rec IN ( - SELECT object_name - FROM TABLE(DBMS_CLOUD.LIST_OBJECTS( - credential_name => vCredentialName, - location_uri => vDataBucketUri || 'ODS/CSDB/CSDB_DEBT_DAILY/' - )) - WHERE object_name LIKE 'LEGACY_DEBT_DAILY_%' - AND object_name LIKE '%.csv' - AND REGEXP_LIKE(object_name, '^LEGACY_DEBT_DAILY_[0-9]{6}(_[0-9]+_[0-9]{8}T[0-9]{6,}Z)?\.csv$') -- YYYYMM or YYYYMM_1_timestamp + SELECT SOURCE_FILE_NAME AS object_name, + CASE + WHEN SOURCE_FILE_NAME LIKE '%.csv' THEN 'DATA' + WHEN SOURCE_FILE_NAME LIKE '%.parquet' THEN 'ARCHIVE' + ELSE 'UNKNOWN' + END AS bucket_type + FROM CT_MRDS.A_SOURCE_FILE_RECEIVED + WHERE PROCESS_NAME = 'MARS-835' + AND SOURCE_FILE_NAME LIKE '%DEBT_DAILY%' ) LOOP BEGIN - DBMS_CLOUD.DELETE_OBJECT( - credential_name => vCredentialName, - object_uri => vDataBucketUri || 'ODS/CSDB/CSDB_DEBT_DAILY/' || rec.object_name - ); - DBMS_OUTPUT.PUT_LINE(' Deleted: ' || rec.object_name); + IF rec.bucket_type = 'DATA' THEN + DBMS_CLOUD.DELETE_OBJECT( + credential_name => vCredentialName, + object_uri => vDataBucketUri || rec.object_name + ); + ELSIF rec.bucket_type = 'ARCHIVE' THEN + DBMS_CLOUD.DELETE_OBJECT( + credential_name => vCredentialName, + object_uri => vHistBucketUri || rec.object_name + ); + END IF; + DBMS_OUTPUT.PUT_LINE(' Deleted (' || rec.bucket_type || '): ' || rec.object_name); + vFileCount := vFileCount + 1; EXCEPTION WHEN OTHERS THEN IF SQLCODE = -20404 THEN @@ -140,37 +135,11 @@ BEGIN END; END LOOP; - DBMS_OUTPUT.PUT_LINE('Deleting DEBT_DAILY files from HIST bucket...'); + IF vFileCount = 0 THEN + DBMS_OUTPUT.PUT_LINE(' INFO: No DEBT_DAILY files found to delete'); + END IF; - -- Delete Parquet files from HIST bucket (only files matching export pattern) - -- Pattern matches: YYYYMM.parquet OR YYYYMM_1_timestamp.parquet - FOR rec IN ( - SELECT object_name - FROM TABLE(DBMS_CLOUD.LIST_OBJECTS( - credential_name => vCredentialName, - location_uri => vHistBucketUri || 'ARCHIVE/CSDB/CSDB_DEBT_DAILY/' - )) - WHERE object_name LIKE '%PARTITION_YEAR=%' -- Hive-style partitioning folders - AND object_name LIKE '%.parquet' - AND REGEXP_LIKE(object_name, '[0-9]{6}(_[0-9]+_[0-9]{8}T[0-9]{6,}Z)?\.parquet$') -- YYYYMM or YYYYMM_1_timestamp - ) LOOP - BEGIN - DBMS_CLOUD.DELETE_OBJECT( - credential_name => vCredentialName, - object_uri => vHistBucketUri || 'ARCHIVE/CSDB/CSDB_DEBT_DAILY/' || rec.object_name - ); - DBMS_OUTPUT.PUT_LINE(' Deleted: ' || rec.object_name); - EXCEPTION - WHEN OTHERS THEN - IF SQLCODE = -20404 THEN - DBMS_OUTPUT.PUT_LINE(' Skipped (not found): ' || rec.object_name); - ELSE - RAISE; - END IF; - END; - END LOOP; - - DBMS_OUTPUT.PUT_LINE('SUCCESS: DEBT_DAILY files deleted'); + DBMS_OUTPUT.PUT_LINE('SUCCESS: DEBT_DAILY files deleted (' || vFileCount || ' file(s))'); END; / diff --git a/MARS_Packages/REL01_ADDITIONS/MARS-835/92_MARS_835_rollback_step2.sql b/MARS_Packages/REL01_ADDITIONS/MARS-835/92_MARS_835_rollback_step2.sql index e8e94a2..e717acd 100644 --- a/MARS_Packages/REL01_ADDITIONS/MARS-835/92_MARS_835_rollback_step2.sql +++ b/MARS_Packages/REL01_ADDITIONS/MARS-835/92_MARS_835_rollback_step2.sql @@ -17,29 +17,29 @@ PROMPT ======================================================================== DECLARE vBucketUri VARCHAR2(500); vCredentialName VARCHAR2(100); + vFileCount NUMBER := 0; BEGIN -- Get bucket URI and credential vBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('ARCHIVE'); vCredentialName := CT_MRDS.ENV_MANAGER.gvCredentialName; DBMS_OUTPUT.PUT_LINE('Deleting INSTR_RAT_FULL files from HIST bucket...'); + DBMS_OUTPUT.PUT_LINE(' Using A_SOURCE_FILE_RECEIVED with PROCESS_NAME = ''MARS-835'''); + -- Delete files registered by MARS-835 process for INSTR_RAT_FULL FOR rec IN ( - SELECT object_name - FROM TABLE(DBMS_CLOUD.LIST_OBJECTS( - credential_name => vCredentialName, - location_uri => vBucketUri || 'ARCHIVE/CSDB/CSDB_INSTR_RAT_FULL/' - )) - WHERE object_name LIKE '%PARTITION_YEAR=%' -- Hive-style partitioning folders - AND object_name LIKE '%.parquet' - AND REGEXP_LIKE(object_name, '[0-9]{6}(_[0-9]+_[0-9]{8}T[0-9]{6,}Z)?\.parquet$') -- YYYYMM or YYYYMM_1_timestamp + SELECT SOURCE_FILE_NAME AS object_name + FROM CT_MRDS.A_SOURCE_FILE_RECEIVED + WHERE PROCESS_NAME = 'MARS-835' + AND SOURCE_FILE_NAME LIKE '%INSTR_RAT_FULL%' ) LOOP BEGIN DBMS_CLOUD.DELETE_OBJECT( credential_name => vCredentialName, - object_uri => vBucketUri || 'ARCHIVE/CSDB/CSDB_INSTR_RAT_FULL/' || rec.object_name + object_uri => vBucketUri || rec.object_name ); DBMS_OUTPUT.PUT_LINE(' Deleted: ' || rec.object_name); + vFileCount := vFileCount + 1; EXCEPTION WHEN OTHERS THEN IF SQLCODE = -20404 THEN @@ -50,7 +50,11 @@ BEGIN END; END LOOP; - DBMS_OUTPUT.PUT_LINE('SUCCESS: INSTR_RAT_FULL files deleted'); + IF vFileCount = 0 THEN + DBMS_OUTPUT.PUT_LINE(' INFO: No INSTR_RAT_FULL files found to delete'); + END IF; + + DBMS_OUTPUT.PUT_LINE('SUCCESS: INSTR_RAT_FULL files deleted (' || vFileCount || ' file(s))'); END; / @@ -61,29 +65,29 @@ PROMPT ======================================================================== DECLARE vBucketUri VARCHAR2(500); vCredentialName VARCHAR2(100); + vFileCount NUMBER := 0; BEGIN -- Get bucket URI and credential vBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('ARCHIVE'); vCredentialName := CT_MRDS.ENV_MANAGER.gvCredentialName; DBMS_OUTPUT.PUT_LINE('Deleting INSTR_DESC_FULL files from HIST bucket...'); + DBMS_OUTPUT.PUT_LINE(' Using A_SOURCE_FILE_RECEIVED with PROCESS_NAME = ''MARS-835'''); + -- Delete files registered by MARS-835 process for INSTR_DESC_FULL FOR rec IN ( - SELECT object_name - FROM TABLE(DBMS_CLOUD.LIST_OBJECTS( - credential_name => vCredentialName, - location_uri => vBucketUri || 'ARCHIVE/CSDB/CSDB_INSTR_DESC_FULL/' - )) - WHERE object_name LIKE '%PARTITION_YEAR=%' -- Hive-style partitioning folders - AND object_name LIKE '%.parquet' - AND REGEXP_LIKE(object_name, '[0-9]{6}(_[0-9]+_[0-9]{8}T[0-9]{6,}Z)?\.parquet$') -- YYYYMM or YYYYMM_1_timestamp + SELECT SOURCE_FILE_NAME AS object_name + FROM CT_MRDS.A_SOURCE_FILE_RECEIVED + WHERE PROCESS_NAME = 'MARS-835' + AND SOURCE_FILE_NAME LIKE '%INSTR_DESC_FULL%' ) LOOP BEGIN DBMS_CLOUD.DELETE_OBJECT( credential_name => vCredentialName, - object_uri => vBucketUri || 'ARCHIVE/CSDB/CSDB_INSTR_DESC_FULL/' || rec.object_name + object_uri => vBucketUri || rec.object_name ); DBMS_OUTPUT.PUT_LINE(' Deleted: ' || rec.object_name); + vFileCount := vFileCount + 1; EXCEPTION WHEN OTHERS THEN IF SQLCODE = -20404 THEN @@ -94,7 +98,11 @@ BEGIN END; END LOOP; - DBMS_OUTPUT.PUT_LINE('SUCCESS: INSTR_DESC_FULL files deleted'); + IF vFileCount = 0 THEN + DBMS_OUTPUT.PUT_LINE(' INFO: No INSTR_DESC_FULL files found to delete'); + END IF; + + DBMS_OUTPUT.PUT_LINE('SUCCESS: INSTR_DESC_FULL files deleted (' || vFileCount || ' file(s))'); END; / @@ -105,29 +113,29 @@ PROMPT ======================================================================== DECLARE vBucketUri VARCHAR2(500); vCredentialName VARCHAR2(100); + vFileCount NUMBER := 0; BEGIN -- Get bucket URI and credential vBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('ARCHIVE'); vCredentialName := CT_MRDS.ENV_MANAGER.gvCredentialName; DBMS_OUTPUT.PUT_LINE('Deleting ISSUER_RAT_FULL files from HIST bucket...'); + DBMS_OUTPUT.PUT_LINE(' Using A_SOURCE_FILE_RECEIVED with PROCESS_NAME = ''MARS-835'''); + -- Delete files registered by MARS-835 process for ISSUER_RAT_FULL FOR rec IN ( - SELECT object_name - FROM TABLE(DBMS_CLOUD.LIST_OBJECTS( - credential_name => vCredentialName, - location_uri => vBucketUri || 'ARCHIVE/CSDB/CSDB_ISSUER_RAT_FULL/' - )) - WHERE object_name LIKE '%PARTITION_YEAR=%' -- Hive-style partitioning folders - AND object_name LIKE '%.parquet' - AND REGEXP_LIKE(object_name, '[0-9]{6}(_[0-9]+_[0-9]{8}T[0-9]{6,}Z)?\.parquet$') -- YYYYMM or YYYYMM_1_timestamp + SELECT SOURCE_FILE_NAME AS object_name + FROM CT_MRDS.A_SOURCE_FILE_RECEIVED + WHERE PROCESS_NAME = 'MARS-835' + AND SOURCE_FILE_NAME LIKE '%ISSUER_RAT_FULL%' ) LOOP BEGIN DBMS_CLOUD.DELETE_OBJECT( credential_name => vCredentialName, - object_uri => vBucketUri || 'ARCHIVE/CSDB/CSDB_ISSUER_RAT_FULL/' || rec.object_name + object_uri => vBucketUri || rec.object_name ); DBMS_OUTPUT.PUT_LINE(' Deleted: ' || rec.object_name); + vFileCount := vFileCount + 1; EXCEPTION WHEN OTHERS THEN IF SQLCODE = -20404 THEN @@ -138,7 +146,11 @@ BEGIN END; END LOOP; - DBMS_OUTPUT.PUT_LINE('SUCCESS: ISSUER_RAT_FULL files deleted'); + IF vFileCount = 0 THEN + DBMS_OUTPUT.PUT_LINE(' INFO: No ISSUER_RAT_FULL files found to delete'); + END IF; + + DBMS_OUTPUT.PUT_LINE('SUCCESS: ISSUER_RAT_FULL files deleted (' || vFileCount || ' file(s))'); END; / @@ -149,29 +161,29 @@ PROMPT ======================================================================== DECLARE vBucketUri VARCHAR2(500); vCredentialName VARCHAR2(100); + vFileCount NUMBER := 0; BEGIN -- Get bucket URI and credential vBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('ARCHIVE'); vCredentialName := CT_MRDS.ENV_MANAGER.gvCredentialName; DBMS_OUTPUT.PUT_LINE('Deleting ISSUER_DESC_FULL files from HIST bucket...'); + DBMS_OUTPUT.PUT_LINE(' Using A_SOURCE_FILE_RECEIVED with PROCESS_NAME = ''MARS-835'''); + -- Delete files registered by MARS-835 process for ISSUER_DESC_FULL FOR rec IN ( - SELECT object_name - FROM TABLE(DBMS_CLOUD.LIST_OBJECTS( - credential_name => vCredentialName, - location_uri => vBucketUri || 'ARCHIVE/CSDB/CSDB_ISSUER_DESC_FULL/' - )) - WHERE object_name LIKE '%PARTITION_YEAR=%' -- Hive-style partitioning folders - AND object_name LIKE '%.parquet' - AND REGEXP_LIKE(object_name, '[0-9]{6}(_[0-9]+_[0-9]{8}T[0-9]{6,}Z)?\.parquet$') -- YYYYMM or YYYYMM_1_timestamp + SELECT SOURCE_FILE_NAME AS object_name + FROM CT_MRDS.A_SOURCE_FILE_RECEIVED + WHERE PROCESS_NAME = 'MARS-835' + AND SOURCE_FILE_NAME LIKE '%ISSUER_DESC_FULL%' ) LOOP BEGIN DBMS_CLOUD.DELETE_OBJECT( credential_name => vCredentialName, - object_uri => vBucketUri || 'ARCHIVE/CSDB/CSDB_ISSUER_DESC_FULL/' || rec.object_name + object_uri => vBucketUri || rec.object_name ); DBMS_OUTPUT.PUT_LINE(' Deleted: ' || rec.object_name); + vFileCount := vFileCount + 1; EXCEPTION WHEN OTHERS THEN IF SQLCODE = -20404 THEN @@ -182,7 +194,11 @@ BEGIN END; END LOOP; - DBMS_OUTPUT.PUT_LINE('SUCCESS: ISSUER_DESC_FULL files deleted'); + IF vFileCount = 0 THEN + DBMS_OUTPUT.PUT_LINE(' INFO: No ISSUER_DESC_FULL files found to delete'); + END IF; + + DBMS_OUTPUT.PUT_LINE('SUCCESS: ISSUER_DESC_FULL files deleted (' || vFileCount || ' file(s))'); END; /