diff --git a/MARS_Packages/REL03/MARS-1005/90_MARS_1005_rollback_delete_csv_files.sql b/MARS_Packages/REL03/MARS-1005/90_MARS_1005_rollback_delete_csv_files.sql index 544243f..a647642 100644 --- a/MARS_Packages/REL03/MARS-1005/90_MARS_1005_rollback_delete_csv_files.sql +++ b/MARS_Packages/REL03/MARS-1005/90_MARS_1005_rollback_delete_csv_files.sql @@ -14,7 +14,7 @@ PROMPT ======================================================================== PROMPT ROLLBACK: Deleting OU_TOP LEGACY exported files from DATA Bucket PROMPT ======================================================================== PROMPT WARNING: This will delete files registered with PROCESS_NAME = 'MARS-1005' -PROMPT from ODS/TOP/* paths in the DATA bucket. +PROMPT from "ODS/TOP/*" paths in the DATA bucket. PROMPT ======================================================================== -- Helper: generic delete procedure for one TOP table folder @@ -28,27 +28,26 @@ DECLARE vFileCount NUMBER := 0; BEGIN vDataBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('DATA'); - DBMS_OUTPUT.PUT_LINE('Deleting TOP_ALLOTMENT files from: ' || vDataBucketUri || vFolderPath); + DBMS_OUTPUT.PUT_LINE('Deleting TOP_ALLOTMENT files registered by MARS-1005...'); + -- Only delete files registered by MARS-1005 (safe - does not touch pre-existing files) FOR rec IN ( - SELECT object_name - FROM TABLE(DBMS_CLOUD.LIST_OBJECTS( - credential_name => 'OCI$RESOURCE_PRINCIPAL', - location_uri => vDataBucketUri || vFolderPath - )) - WHERE object_name NOT LIKE '%/' + SELECT SOURCE_FILE_NAME + FROM CT_MRDS.A_SOURCE_FILE_RECEIVED + WHERE PROCESS_NAME = 'MARS-1005' + AND SOURCE_FILE_NAME LIKE vFolderPath || '%' ) LOOP BEGIN DBMS_CLOUD.DELETE_OBJECT( credential_name => 'OCI$RESOURCE_PRINCIPAL', - object_uri => vDataBucketUri || vFolderPath || rec.object_name + object_uri => vDataBucketUri || rec.SOURCE_FILE_NAME ); - DBMS_OUTPUT.PUT_LINE(' Deleted: ' || rec.object_name); + DBMS_OUTPUT.PUT_LINE(' Deleted: ' || rec.SOURCE_FILE_NAME); vFileCount := vFileCount + 1; EXCEPTION WHEN OTHERS THEN IF SQLCODE = -20404 THEN - DBMS_OUTPUT.PUT_LINE(' Skipped (not found): ' || rec.object_name); + DBMS_OUTPUT.PUT_LINE(' Skipped (not found): ' || rec.SOURCE_FILE_NAME); ELSE RAISE; END IF; END; @@ -69,19 +68,18 @@ DECLARE vFileCount NUMBER := 0; BEGIN vDataBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('DATA'); - DBMS_OUTPUT.PUT_LINE('Deleting TOP_ALLOTMENT_MODIFICATION_HEADER files...'); + DBMS_OUTPUT.PUT_LINE('Deleting TOP_ALLOTMENT_MODIFICATION_HEADER files registered by MARS-1005...'); FOR rec IN ( - SELECT object_name FROM TABLE(DBMS_CLOUD.LIST_OBJECTS( - credential_name => 'OCI$RESOURCE_PRINCIPAL', - location_uri => vDataBucketUri || vFolderPath - )) WHERE object_name NOT LIKE '%/' + SELECT SOURCE_FILE_NAME FROM CT_MRDS.A_SOURCE_FILE_RECEIVED + WHERE PROCESS_NAME = 'MARS-1005' + AND SOURCE_FILE_NAME LIKE vFolderPath || '%' ) LOOP BEGIN - DBMS_CLOUD.DELETE_OBJECT(credential_name => 'OCI$RESOURCE_PRINCIPAL', object_uri => vDataBucketUri || vFolderPath || rec.object_name); - DBMS_OUTPUT.PUT_LINE(' Deleted: ' || rec.object_name); + DBMS_CLOUD.DELETE_OBJECT(credential_name => 'OCI$RESOURCE_PRINCIPAL', object_uri => vDataBucketUri || rec.SOURCE_FILE_NAME); + DBMS_OUTPUT.PUT_LINE(' Deleted: ' || rec.SOURCE_FILE_NAME); vFileCount := vFileCount + 1; EXCEPTION WHEN OTHERS THEN - IF SQLCODE = -20404 THEN DBMS_OUTPUT.PUT_LINE(' Skipped (not found): ' || rec.object_name); + IF SQLCODE = -20404 THEN DBMS_OUTPUT.PUT_LINE(' Skipped (not found): ' || rec.SOURCE_FILE_NAME); ELSE RAISE; END IF; END; END LOOP; @@ -98,19 +96,18 @@ DECLARE vFileCount NUMBER := 0; BEGIN vDataBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('DATA'); - DBMS_OUTPUT.PUT_LINE('Deleting TOP_ALLOTMENT_MODIFICATION_ITEM files...'); + DBMS_OUTPUT.PUT_LINE('Deleting TOP_ALLOTMENT_MODIFICATION_ITEM files registered by MARS-1005...'); FOR rec IN ( - SELECT object_name FROM TABLE(DBMS_CLOUD.LIST_OBJECTS( - credential_name => 'OCI$RESOURCE_PRINCIPAL', - location_uri => vDataBucketUri || vFolderPath - )) WHERE object_name NOT LIKE '%/' + SELECT SOURCE_FILE_NAME FROM CT_MRDS.A_SOURCE_FILE_RECEIVED + WHERE PROCESS_NAME = 'MARS-1005' + AND SOURCE_FILE_NAME LIKE vFolderPath || '%' ) LOOP BEGIN - DBMS_CLOUD.DELETE_OBJECT(credential_name => 'OCI$RESOURCE_PRINCIPAL', object_uri => vDataBucketUri || vFolderPath || rec.object_name); - DBMS_OUTPUT.PUT_LINE(' Deleted: ' || rec.object_name); + DBMS_CLOUD.DELETE_OBJECT(credential_name => 'OCI$RESOURCE_PRINCIPAL', object_uri => vDataBucketUri || rec.SOURCE_FILE_NAME); + DBMS_OUTPUT.PUT_LINE(' Deleted: ' || rec.SOURCE_FILE_NAME); vFileCount := vFileCount + 1; EXCEPTION WHEN OTHERS THEN - IF SQLCODE = -20404 THEN DBMS_OUTPUT.PUT_LINE(' Skipped (not found): ' || rec.object_name); + IF SQLCODE = -20404 THEN DBMS_OUTPUT.PUT_LINE(' Skipped (not found): ' || rec.SOURCE_FILE_NAME); ELSE RAISE; END IF; END; END LOOP; @@ -127,19 +124,18 @@ DECLARE vFileCount NUMBER := 0; BEGIN vDataBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('DATA'); - DBMS_OUTPUT.PUT_LINE('Deleting TOP_ANNOUNCEMENT files...'); + DBMS_OUTPUT.PUT_LINE('Deleting TOP_ANNOUNCEMENT files registered by MARS-1005...'); FOR rec IN ( - SELECT object_name FROM TABLE(DBMS_CLOUD.LIST_OBJECTS( - credential_name => 'OCI$RESOURCE_PRINCIPAL', - location_uri => vDataBucketUri || vFolderPath - )) WHERE object_name NOT LIKE '%/' + SELECT SOURCE_FILE_NAME FROM CT_MRDS.A_SOURCE_FILE_RECEIVED + WHERE PROCESS_NAME = 'MARS-1005' + AND SOURCE_FILE_NAME LIKE vFolderPath || '%' ) LOOP BEGIN - DBMS_CLOUD.DELETE_OBJECT(credential_name => 'OCI$RESOURCE_PRINCIPAL', object_uri => vDataBucketUri || vFolderPath || rec.object_name); - DBMS_OUTPUT.PUT_LINE(' Deleted: ' || rec.object_name); + DBMS_CLOUD.DELETE_OBJECT(credential_name => 'OCI$RESOURCE_PRINCIPAL', object_uri => vDataBucketUri || rec.SOURCE_FILE_NAME); + DBMS_OUTPUT.PUT_LINE(' Deleted: ' || rec.SOURCE_FILE_NAME); vFileCount := vFileCount + 1; EXCEPTION WHEN OTHERS THEN - IF SQLCODE = -20404 THEN DBMS_OUTPUT.PUT_LINE(' Skipped (not found): ' || rec.object_name); + IF SQLCODE = -20404 THEN DBMS_OUTPUT.PUT_LINE(' Skipped (not found): ' || rec.SOURCE_FILE_NAME); ELSE RAISE; END IF; END; END LOOP; @@ -156,19 +152,18 @@ DECLARE vFileCount NUMBER := 0; BEGIN vDataBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('DATA'); - DBMS_OUTPUT.PUT_LINE('Deleting TOP_FULLBIDLIST_ITEM files...'); + DBMS_OUTPUT.PUT_LINE('Deleting TOP_FULLBIDLIST_ITEM files registered by MARS-1005...'); FOR rec IN ( - SELECT object_name FROM TABLE(DBMS_CLOUD.LIST_OBJECTS( - credential_name => 'OCI$RESOURCE_PRINCIPAL', - location_uri => vDataBucketUri || vFolderPath - )) WHERE object_name NOT LIKE '%/' + SELECT SOURCE_FILE_NAME FROM CT_MRDS.A_SOURCE_FILE_RECEIVED + WHERE PROCESS_NAME = 'MARS-1005' + AND SOURCE_FILE_NAME LIKE vFolderPath || '%' ) LOOP BEGIN - DBMS_CLOUD.DELETE_OBJECT(credential_name => 'OCI$RESOURCE_PRINCIPAL', object_uri => vDataBucketUri || vFolderPath || rec.object_name); - DBMS_OUTPUT.PUT_LINE(' Deleted: ' || rec.object_name); + DBMS_CLOUD.DELETE_OBJECT(credential_name => 'OCI$RESOURCE_PRINCIPAL', object_uri => vDataBucketUri || rec.SOURCE_FILE_NAME); + DBMS_OUTPUT.PUT_LINE(' Deleted: ' || rec.SOURCE_FILE_NAME); vFileCount := vFileCount + 1; EXCEPTION WHEN OTHERS THEN - IF SQLCODE = -20404 THEN DBMS_OUTPUT.PUT_LINE(' Skipped (not found): ' || rec.object_name); + IF SQLCODE = -20404 THEN DBMS_OUTPUT.PUT_LINE(' Skipped (not found): ' || rec.SOURCE_FILE_NAME); ELSE RAISE; END IF; END; END LOOP; @@ -185,19 +180,18 @@ DECLARE vFileCount NUMBER := 0; BEGIN vDataBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('DATA'); - DBMS_OUTPUT.PUT_LINE('Deleting TOP_FULLBID_ARRAY_COMPILED files...'); + DBMS_OUTPUT.PUT_LINE('Deleting TOP_FULLBID_ARRAY_COMPILED files registered by MARS-1005...'); FOR rec IN ( - SELECT object_name FROM TABLE(DBMS_CLOUD.LIST_OBJECTS( - credential_name => 'OCI$RESOURCE_PRINCIPAL', - location_uri => vDataBucketUri || vFolderPath - )) WHERE object_name NOT LIKE '%/' + SELECT SOURCE_FILE_NAME FROM CT_MRDS.A_SOURCE_FILE_RECEIVED + WHERE PROCESS_NAME = 'MARS-1005' + AND SOURCE_FILE_NAME LIKE vFolderPath || '%' ) LOOP BEGIN - DBMS_CLOUD.DELETE_OBJECT(credential_name => 'OCI$RESOURCE_PRINCIPAL', object_uri => vDataBucketUri || vFolderPath || rec.object_name); - DBMS_OUTPUT.PUT_LINE(' Deleted: ' || rec.object_name); + DBMS_CLOUD.DELETE_OBJECT(credential_name => 'OCI$RESOURCE_PRINCIPAL', object_uri => vDataBucketUri || rec.SOURCE_FILE_NAME); + DBMS_OUTPUT.PUT_LINE(' Deleted: ' || rec.SOURCE_FILE_NAME); vFileCount := vFileCount + 1; EXCEPTION WHEN OTHERS THEN - IF SQLCODE = -20404 THEN DBMS_OUTPUT.PUT_LINE(' Skipped (not found): ' || rec.object_name); + IF SQLCODE = -20404 THEN DBMS_OUTPUT.PUT_LINE(' Skipped (not found): ' || rec.SOURCE_FILE_NAME); ELSE RAISE; END IF; END; END LOOP;