Refactor rollback script to delete only files registered by MARS-1005 and improve output messages
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user