94 lines
3.9 KiB
MySQL
94 lines
3.9 KiB
MySQL
-- MARS-835: Manual cleanup of Parquet files only (after bugfix)
|
|
-- Description: Removes orphaned Parquet files from ARCHIVE bucket
|
|
-- Usage: Execute as CT_MRDS user
|
|
|
|
SET SERVEROUTPUT ON SIZE UNLIMITED
|
|
|
|
DECLARE
|
|
vCredentialName VARCHAR2(100) := CT_MRDS.ENV_MANAGER.gvCredentialName;
|
|
vHistBucketUri VARCHAR2(200) := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('ARCHIVE');
|
|
vFileCount NUMBER := 0;
|
|
vStartTime TIMESTAMP := SYSTIMESTAMP;
|
|
vElapsedTime INTERVAL DAY TO SECOND;
|
|
BEGIN
|
|
DBMS_OUTPUT.PUT_LINE('==========================================================');
|
|
DBMS_OUTPUT.PUT_LINE('MANUAL CLEANUP: Parquet files only');
|
|
DBMS_OUTPUT.PUT_LINE('==========================================================');
|
|
DBMS_OUTPUT.PUT_LINE('Start Time: ' || TO_CHAR(vStartTime, 'YYYY-MM-DD HH24:MI:SS'));
|
|
DBMS_OUTPUT.PUT_LINE('Credential: ' || vCredentialName);
|
|
DBMS_OUTPUT.PUT_LINE('Archive Bucket: ' || vHistBucketUri);
|
|
DBMS_OUTPUT.PUT_LINE('----------------------------------------------------------');
|
|
|
|
-- Delete CSDB_DEBT Parquet files
|
|
DBMS_OUTPUT.PUT_LINE(chr(10) || 'Deleting CSDB_DEBT Parquet files...');
|
|
vFileCount := 0;
|
|
|
|
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 NOT LIKE '%/' -- Exclude directories
|
|
) 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);
|
|
vFileCount := vFileCount + 1;
|
|
EXCEPTION
|
|
WHEN OTHERS THEN
|
|
IF SQLCODE = -20404 THEN
|
|
DBMS_OUTPUT.PUT_LINE(' Skipped (not found): ' || rec.object_name);
|
|
ELSE
|
|
DBMS_OUTPUT.PUT_LINE(' ERROR: ' || SQLERRM || ' - ' || rec.object_name);
|
|
END IF;
|
|
END;
|
|
END LOOP;
|
|
|
|
DBMS_OUTPUT.PUT_LINE('CSDB_DEBT Parquet files deleted: ' || vFileCount);
|
|
|
|
-- Delete CSDB_DEBT_DAILY Parquet files
|
|
DBMS_OUTPUT.PUT_LINE(chr(10) || 'Deleting CSDB_DEBT_DAILY Parquet files...');
|
|
vFileCount := 0;
|
|
|
|
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 NOT LIKE '%/' -- Exclude directories
|
|
) 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);
|
|
vFileCount := vFileCount + 1;
|
|
EXCEPTION
|
|
WHEN OTHERS THEN
|
|
IF SQLCODE = -20404 THEN
|
|
DBMS_OUTPUT.PUT_LINE(' Skipped (not found): ' || rec.object_name);
|
|
ELSE
|
|
DBMS_OUTPUT.PUT_LINE(' ERROR: ' || SQLERRM || ' - ' || rec.object_name);
|
|
END IF;
|
|
END;
|
|
END LOOP;
|
|
|
|
DBMS_OUTPUT.PUT_LINE('CSDB_DEBT_DAILY Parquet files deleted: ' || vFileCount);
|
|
|
|
-- Final summary
|
|
vElapsedTime := SYSTIMESTAMP - vStartTime;
|
|
DBMS_OUTPUT.PUT_LINE('----------------------------------------------------------');
|
|
DBMS_OUTPUT.PUT_LINE('End Time: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS'));
|
|
DBMS_OUTPUT.PUT_LINE('Elapsed Time: ' || vElapsedTime);
|
|
DBMS_OUTPUT.PUT_LINE('==========================================================');
|
|
DBMS_OUTPUT.PUT_LINE('MANUAL CLEANUP COMPLETED');
|
|
DBMS_OUTPUT.PUT_LINE('==========================================================');
|
|
END;
|
|
/
|