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 3686c1e..3dbc997 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,8 +107,7 @@ 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) - pProcessName => 'MARS-835' -- Process identifier for tracking + pRegisterExport => TRUE -- Register exported files in A_SOURCE_FILE_RECEIVED with metadata (CHECKSUM, CREATED, BYTES) ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_DEBT exported to DATA bucket with template column order'); @@ -129,9 +128,7 @@ BEGIN pFolderName => 'ARCHIVE/CSDB/CSDB_DEBT', pMaxDate => &cutoff_date, pParallelDegree => 16, - pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_DEBT', - pRegisterExport => TRUE, - pProcessName => 'MARS-835' + pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_DEBT' ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_DEBT exported to HIST bucket with template column order'); @@ -230,8 +227,7 @@ 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) - pProcessName => 'MARS-835' -- Process identifier for tracking + pRegisterExport => TRUE -- Register exported files in A_SOURCE_FILE_RECEIVED with metadata (CHECKSUM, CREATED, BYTES) ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_DEBT_DAILY exported to DATA bucket with template column order'); @@ -252,9 +248,7 @@ BEGIN pFolderName => 'ARCHIVE/CSDB/CSDB_DEBT_DAILY', pMaxDate => &cutoff_date, pParallelDegree => 16, - pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_DEBT_DAILY', - pRegisterExport => TRUE, - pProcessName => 'MARS-835' + pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_DEBT_DAILY' ); 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 944251d..3db3bdf 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,9 +35,7 @@ BEGIN pFolderName => 'ARCHIVE/CSDB/CSDB_INSTR_RAT_FULL', pMaxDate => SYSDATE, pParallelDegree => 8, - pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_INSTR_RAT_FULL', - pRegisterExport => TRUE, - pProcessName => 'MARS-835' + pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_INSTR_RAT_FULL' ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_INSTR_RAT_FULL exported to HIST bucket with template column order'); @@ -64,9 +62,7 @@ BEGIN pFolderName => 'ARCHIVE/CSDB/CSDB_INSTR_DESC_FULL', pMaxDate => SYSDATE, pParallelDegree => 8, - pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_INSTR_DESC_FULL', - pRegisterExport => TRUE, - pProcessName => 'MARS-835' + pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_INSTR_DESC_FULL' ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_INSTR_DESC_FULL exported to HIST bucket with template column order'); @@ -93,9 +89,7 @@ BEGIN pFolderName => 'ARCHIVE/CSDB/CSDB_ISSUER_RAT_FULL', pMaxDate => SYSDATE, pParallelDegree => 8, - pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_ISSUER_RAT_FULL', - pRegisterExport => TRUE, - pProcessName => 'MARS-835' + pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_ISSUER_RAT_FULL' ); DBMS_OUTPUT.PUT_LINE('SUCCESS: LEGACY_ISSUER_RAT_FULL exported to HIST bucket with template column order'); @@ -122,9 +116,7 @@ BEGIN pFolderName => 'ARCHIVE/CSDB/CSDB_ISSUER_DESC_FULL', pMaxDate => SYSDATE, pParallelDegree => 8, - pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_ISSUER_DESC_FULL', - pRegisterExport => TRUE, - pProcessName => 'MARS-835' + pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_ISSUER_DESC_FULL' ); 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 e837f2f..20848a8 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,43 +22,32 @@ 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 and HIST buckets...'); - DBMS_OUTPUT.PUT_LINE(' Using A_SOURCE_FILE_RECEIVED with PROCESS_NAME = ''MARS-835'''); + DBMS_OUTPUT.PUT_LINE('Deleting DEBT files from DATA bucket...'); - -- Delete files registered by MARS-835 process for CSDB_DEBT + -- 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) FOR rec IN ( - 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%' + 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 ) LOOP BEGIN - 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; + 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); EXCEPTION WHEN OTHERS THEN IF SQLCODE = -20404 THEN @@ -69,11 +58,37 @@ BEGIN END; END LOOP; - IF vFileCount = 0 THEN - DBMS_OUTPUT.PUT_LINE(' INFO: No DEBT files found to delete'); - END IF; + DBMS_OUTPUT.PUT_LINE('Deleting DEBT files from HIST bucket...'); - DBMS_OUTPUT.PUT_LINE('SUCCESS: DEBT files deleted (' || vFileCount || ' file(s))'); + -- 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'); END; / @@ -89,42 +104,32 @@ 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 and HIST buckets...'); - DBMS_OUTPUT.PUT_LINE(' Using A_SOURCE_FILE_RECEIVED with PROCESS_NAME = ''MARS-835'''); + DBMS_OUTPUT.PUT_LINE('Deleting DEBT_DAILY files from DATA bucket...'); - -- Delete files registered by MARS-835 process for CSDB_DEBT_DAILY + -- 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 FOR rec IN ( - 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%' + 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 ) LOOP BEGIN - 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; + 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); EXCEPTION WHEN OTHERS THEN IF SQLCODE = -20404 THEN @@ -135,11 +140,37 @@ BEGIN END; END LOOP; - IF vFileCount = 0 THEN - DBMS_OUTPUT.PUT_LINE(' INFO: No DEBT_DAILY files found to delete'); - END IF; + DBMS_OUTPUT.PUT_LINE('Deleting DEBT_DAILY files from HIST bucket...'); - DBMS_OUTPUT.PUT_LINE('SUCCESS: DEBT_DAILY files deleted (' || vFileCount || ' file(s))'); + -- 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'); 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 e717acd..e8e94a2 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 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%' + 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 ) LOOP BEGIN DBMS_CLOUD.DELETE_OBJECT( credential_name => vCredentialName, - object_uri => vBucketUri || rec.object_name + object_uri => vBucketUri || 'ARCHIVE/CSDB/CSDB_INSTR_RAT_FULL/' || rec.object_name ); DBMS_OUTPUT.PUT_LINE(' Deleted: ' || rec.object_name); - vFileCount := vFileCount + 1; EXCEPTION WHEN OTHERS THEN IF SQLCODE = -20404 THEN @@ -50,11 +50,7 @@ BEGIN END; END LOOP; - 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))'); + DBMS_OUTPUT.PUT_LINE('SUCCESS: INSTR_RAT_FULL files deleted'); END; / @@ -65,29 +61,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 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%' + 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 ) LOOP BEGIN DBMS_CLOUD.DELETE_OBJECT( credential_name => vCredentialName, - object_uri => vBucketUri || rec.object_name + object_uri => vBucketUri || 'ARCHIVE/CSDB/CSDB_INSTR_DESC_FULL/' || rec.object_name ); DBMS_OUTPUT.PUT_LINE(' Deleted: ' || rec.object_name); - vFileCount := vFileCount + 1; EXCEPTION WHEN OTHERS THEN IF SQLCODE = -20404 THEN @@ -98,11 +94,7 @@ BEGIN END; END LOOP; - 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))'); + DBMS_OUTPUT.PUT_LINE('SUCCESS: INSTR_DESC_FULL files deleted'); END; / @@ -113,29 +105,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 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%' + 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 ) LOOP BEGIN DBMS_CLOUD.DELETE_OBJECT( credential_name => vCredentialName, - object_uri => vBucketUri || rec.object_name + object_uri => vBucketUri || 'ARCHIVE/CSDB/CSDB_ISSUER_RAT_FULL/' || rec.object_name ); DBMS_OUTPUT.PUT_LINE(' Deleted: ' || rec.object_name); - vFileCount := vFileCount + 1; EXCEPTION WHEN OTHERS THEN IF SQLCODE = -20404 THEN @@ -146,11 +138,7 @@ BEGIN END; END LOOP; - 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))'); + DBMS_OUTPUT.PUT_LINE('SUCCESS: ISSUER_RAT_FULL files deleted'); END; / @@ -161,29 +149,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 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%' + 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 ) LOOP BEGIN DBMS_CLOUD.DELETE_OBJECT( credential_name => vCredentialName, - object_uri => vBucketUri || rec.object_name + object_uri => vBucketUri || 'ARCHIVE/CSDB/CSDB_ISSUER_DESC_FULL/' || rec.object_name ); DBMS_OUTPUT.PUT_LINE(' Deleted: ' || rec.object_name); - vFileCount := vFileCount + 1; EXCEPTION WHEN OTHERS THEN IF SQLCODE = -20404 THEN @@ -194,11 +182,7 @@ BEGIN END; END LOOP; - 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))'); + DBMS_OUTPUT.PUT_LINE('SUCCESS: ISSUER_DESC_FULL files deleted'); END; /