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 ROLLBACK: Deleting OU_TOP LEGACY exported files from DATA Bucket
|
||||||
PROMPT ========================================================================
|
PROMPT ========================================================================
|
||||||
PROMPT WARNING: This will delete files registered with PROCESS_NAME = 'MARS-1005'
|
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 ========================================================================
|
PROMPT ========================================================================
|
||||||
|
|
||||||
-- Helper: generic delete procedure for one TOP table folder
|
-- Helper: generic delete procedure for one TOP table folder
|
||||||
@@ -28,27 +28,26 @@ DECLARE
|
|||||||
vFileCount NUMBER := 0;
|
vFileCount NUMBER := 0;
|
||||||
BEGIN
|
BEGIN
|
||||||
vDataBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('DATA');
|
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 (
|
FOR rec IN (
|
||||||
SELECT object_name
|
SELECT SOURCE_FILE_NAME
|
||||||
FROM TABLE(DBMS_CLOUD.LIST_OBJECTS(
|
FROM CT_MRDS.A_SOURCE_FILE_RECEIVED
|
||||||
credential_name => 'OCI$RESOURCE_PRINCIPAL',
|
WHERE PROCESS_NAME = 'MARS-1005'
|
||||||
location_uri => vDataBucketUri || vFolderPath
|
AND SOURCE_FILE_NAME LIKE vFolderPath || '%'
|
||||||
))
|
|
||||||
WHERE object_name NOT LIKE '%/'
|
|
||||||
) LOOP
|
) LOOP
|
||||||
BEGIN
|
BEGIN
|
||||||
DBMS_CLOUD.DELETE_OBJECT(
|
DBMS_CLOUD.DELETE_OBJECT(
|
||||||
credential_name => 'OCI$RESOURCE_PRINCIPAL',
|
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;
|
vFileCount := vFileCount + 1;
|
||||||
EXCEPTION
|
EXCEPTION
|
||||||
WHEN OTHERS THEN
|
WHEN OTHERS THEN
|
||||||
IF SQLCODE = -20404 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;
|
ELSE RAISE;
|
||||||
END IF;
|
END IF;
|
||||||
END;
|
END;
|
||||||
@@ -69,19 +68,18 @@ DECLARE
|
|||||||
vFileCount NUMBER := 0;
|
vFileCount NUMBER := 0;
|
||||||
BEGIN
|
BEGIN
|
||||||
vDataBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('DATA');
|
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 (
|
FOR rec IN (
|
||||||
SELECT object_name FROM TABLE(DBMS_CLOUD.LIST_OBJECTS(
|
SELECT SOURCE_FILE_NAME FROM CT_MRDS.A_SOURCE_FILE_RECEIVED
|
||||||
credential_name => 'OCI$RESOURCE_PRINCIPAL',
|
WHERE PROCESS_NAME = 'MARS-1005'
|
||||||
location_uri => vDataBucketUri || vFolderPath
|
AND SOURCE_FILE_NAME LIKE vFolderPath || '%'
|
||||||
)) WHERE object_name NOT LIKE '%/'
|
|
||||||
) LOOP
|
) LOOP
|
||||||
BEGIN
|
BEGIN
|
||||||
DBMS_CLOUD.DELETE_OBJECT(credential_name => 'OCI$RESOURCE_PRINCIPAL', object_uri => vDataBucketUri || vFolderPath || 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.object_name);
|
DBMS_OUTPUT.PUT_LINE(' Deleted: ' || rec.SOURCE_FILE_NAME);
|
||||||
vFileCount := vFileCount + 1;
|
vFileCount := vFileCount + 1;
|
||||||
EXCEPTION WHEN OTHERS THEN
|
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;
|
ELSE RAISE; END IF;
|
||||||
END;
|
END;
|
||||||
END LOOP;
|
END LOOP;
|
||||||
@@ -98,19 +96,18 @@ DECLARE
|
|||||||
vFileCount NUMBER := 0;
|
vFileCount NUMBER := 0;
|
||||||
BEGIN
|
BEGIN
|
||||||
vDataBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('DATA');
|
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 (
|
FOR rec IN (
|
||||||
SELECT object_name FROM TABLE(DBMS_CLOUD.LIST_OBJECTS(
|
SELECT SOURCE_FILE_NAME FROM CT_MRDS.A_SOURCE_FILE_RECEIVED
|
||||||
credential_name => 'OCI$RESOURCE_PRINCIPAL',
|
WHERE PROCESS_NAME = 'MARS-1005'
|
||||||
location_uri => vDataBucketUri || vFolderPath
|
AND SOURCE_FILE_NAME LIKE vFolderPath || '%'
|
||||||
)) WHERE object_name NOT LIKE '%/'
|
|
||||||
) LOOP
|
) LOOP
|
||||||
BEGIN
|
BEGIN
|
||||||
DBMS_CLOUD.DELETE_OBJECT(credential_name => 'OCI$RESOURCE_PRINCIPAL', object_uri => vDataBucketUri || vFolderPath || 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.object_name);
|
DBMS_OUTPUT.PUT_LINE(' Deleted: ' || rec.SOURCE_FILE_NAME);
|
||||||
vFileCount := vFileCount + 1;
|
vFileCount := vFileCount + 1;
|
||||||
EXCEPTION WHEN OTHERS THEN
|
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;
|
ELSE RAISE; END IF;
|
||||||
END;
|
END;
|
||||||
END LOOP;
|
END LOOP;
|
||||||
@@ -127,19 +124,18 @@ DECLARE
|
|||||||
vFileCount NUMBER := 0;
|
vFileCount NUMBER := 0;
|
||||||
BEGIN
|
BEGIN
|
||||||
vDataBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('DATA');
|
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 (
|
FOR rec IN (
|
||||||
SELECT object_name FROM TABLE(DBMS_CLOUD.LIST_OBJECTS(
|
SELECT SOURCE_FILE_NAME FROM CT_MRDS.A_SOURCE_FILE_RECEIVED
|
||||||
credential_name => 'OCI$RESOURCE_PRINCIPAL',
|
WHERE PROCESS_NAME = 'MARS-1005'
|
||||||
location_uri => vDataBucketUri || vFolderPath
|
AND SOURCE_FILE_NAME LIKE vFolderPath || '%'
|
||||||
)) WHERE object_name NOT LIKE '%/'
|
|
||||||
) LOOP
|
) LOOP
|
||||||
BEGIN
|
BEGIN
|
||||||
DBMS_CLOUD.DELETE_OBJECT(credential_name => 'OCI$RESOURCE_PRINCIPAL', object_uri => vDataBucketUri || vFolderPath || 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.object_name);
|
DBMS_OUTPUT.PUT_LINE(' Deleted: ' || rec.SOURCE_FILE_NAME);
|
||||||
vFileCount := vFileCount + 1;
|
vFileCount := vFileCount + 1;
|
||||||
EXCEPTION WHEN OTHERS THEN
|
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;
|
ELSE RAISE; END IF;
|
||||||
END;
|
END;
|
||||||
END LOOP;
|
END LOOP;
|
||||||
@@ -156,19 +152,18 @@ DECLARE
|
|||||||
vFileCount NUMBER := 0;
|
vFileCount NUMBER := 0;
|
||||||
BEGIN
|
BEGIN
|
||||||
vDataBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('DATA');
|
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 (
|
FOR rec IN (
|
||||||
SELECT object_name FROM TABLE(DBMS_CLOUD.LIST_OBJECTS(
|
SELECT SOURCE_FILE_NAME FROM CT_MRDS.A_SOURCE_FILE_RECEIVED
|
||||||
credential_name => 'OCI$RESOURCE_PRINCIPAL',
|
WHERE PROCESS_NAME = 'MARS-1005'
|
||||||
location_uri => vDataBucketUri || vFolderPath
|
AND SOURCE_FILE_NAME LIKE vFolderPath || '%'
|
||||||
)) WHERE object_name NOT LIKE '%/'
|
|
||||||
) LOOP
|
) LOOP
|
||||||
BEGIN
|
BEGIN
|
||||||
DBMS_CLOUD.DELETE_OBJECT(credential_name => 'OCI$RESOURCE_PRINCIPAL', object_uri => vDataBucketUri || vFolderPath || 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.object_name);
|
DBMS_OUTPUT.PUT_LINE(' Deleted: ' || rec.SOURCE_FILE_NAME);
|
||||||
vFileCount := vFileCount + 1;
|
vFileCount := vFileCount + 1;
|
||||||
EXCEPTION WHEN OTHERS THEN
|
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;
|
ELSE RAISE; END IF;
|
||||||
END;
|
END;
|
||||||
END LOOP;
|
END LOOP;
|
||||||
@@ -185,19 +180,18 @@ DECLARE
|
|||||||
vFileCount NUMBER := 0;
|
vFileCount NUMBER := 0;
|
||||||
BEGIN
|
BEGIN
|
||||||
vDataBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('DATA');
|
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 (
|
FOR rec IN (
|
||||||
SELECT object_name FROM TABLE(DBMS_CLOUD.LIST_OBJECTS(
|
SELECT SOURCE_FILE_NAME FROM CT_MRDS.A_SOURCE_FILE_RECEIVED
|
||||||
credential_name => 'OCI$RESOURCE_PRINCIPAL',
|
WHERE PROCESS_NAME = 'MARS-1005'
|
||||||
location_uri => vDataBucketUri || vFolderPath
|
AND SOURCE_FILE_NAME LIKE vFolderPath || '%'
|
||||||
)) WHERE object_name NOT LIKE '%/'
|
|
||||||
) LOOP
|
) LOOP
|
||||||
BEGIN
|
BEGIN
|
||||||
DBMS_CLOUD.DELETE_OBJECT(credential_name => 'OCI$RESOURCE_PRINCIPAL', object_uri => vDataBucketUri || vFolderPath || 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.object_name);
|
DBMS_OUTPUT.PUT_LINE(' Deleted: ' || rec.SOURCE_FILE_NAME);
|
||||||
vFileCount := vFileCount + 1;
|
vFileCount := vFileCount + 1;
|
||||||
EXCEPTION WHEN OTHERS THEN
|
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;
|
ELSE RAISE; END IF;
|
||||||
END;
|
END;
|
||||||
END LOOP;
|
END LOOP;
|
||||||
|
|||||||
Reference in New Issue
Block a user