-- =================================================================== -- MARS-1005 Rollback Verification: Confirm Rollback Completion -- =================================================================== -- Purpose: Verify that MARS-1005 rollback completed successfully -- Author: Grzegorz Michalski -- Date: 2026-02-12 SET SERVEROUTPUT ON SIZE UNLIMITED SET TIMING ON PROMPT ========================================================================= PROMPT MARS-1005 Rollback Verification PROMPT ========================================================================= -- Check 1: Verify file registrations were removed PROMPT Checking file registration cleanup... DECLARE vRemainingFiles NUMBER := 0; BEGIN SELECT COUNT(*) INTO vRemainingFiles FROM CT_MRDS.A_SOURCE_FILE_RECEIVED WHERE PROCESS_NAME = 'MARS-1005' AND RECEPTION_DATE >= SYSDATE - 7; -- Last week IF vRemainingFiles = 0 THEN DBMS_OUTPUT.PUT_LINE('SUCCESS: All MARS-1005 file registrations successfully removed'); ELSE DBMS_OUTPUT.PUT_LINE('WARNING: ' || vRemainingFiles || ' file registrations still exist'); -- Show remaining files FOR rec IN ( SELECT SUBSTR(SOURCE_FILE_NAME, 1, 50) AS FILE_NAME, TO_CHAR(RECEPTION_DATE, 'YYYY-MM-DD HH24:MI:SS') AS RECEIVED_TIME FROM CT_MRDS.A_SOURCE_FILE_RECEIVED WHERE PROCESS_NAME = 'MARS-1005' AND RECEPTION_DATE >= SYSDATE - 7 ) LOOP DBMS_OUTPUT.PUT_LINE(' Remaining: ' || rec.FILE_NAME); END LOOP; END IF; END; / -- Check 2: Verify process logs were cleaned PROMPT Checking process log cleanup... DECLARE vRemainingLogs NUMBER := 0; BEGIN SELECT COUNT(*) INTO vRemainingLogs FROM CT_MRDS.A_PROCESS_LOG WHERE PROCESS_NAME = 'MARS-1005' AND LOG_TIMESTAMP >= SYSDATE - 7; -- Last week IF vRemainingLogs = 0 THEN DBMS_OUTPUT.PUT_LINE('SUCCESS: All MARS-1005 process logs successfully removed'); ELSE DBMS_OUTPUT.PUT_LINE('WARNING: ' || vRemainingLogs || ' process log entries still exist'); -- Show remaining logs (first few) FOR rec IN ( SELECT TO_CHAR(LOG_TIMESTAMP, 'YYYY-MM-DD HH24:MI:SS') AS LOG_TIME, PROCEDURE_NAME, SUBSTR(LOG_MESSAGE, 1, 40) AS MESSAGE FROM CT_MRDS.A_PROCESS_LOG WHERE PROCESS_NAME = 'MARS-1005' AND LOG_TIMESTAMP >= SYSDATE - 7 ORDER BY LOG_TIMESTAMP DESC FETCH FIRST 3 ROWS ONLY ) LOOP DBMS_OUTPUT.PUT_LINE(' Remaining: ' || rec.LOG_TIME || ' ' || rec.PROCEDURE_NAME); END LOOP; END IF; END; / -- Check 3: Verify cloud bucket cleanup (informational only) PROMPT Checking cloud bucket status... DECLARE vCloudFileCount NUMBER := 0; vCredentialName VARCHAR2(100); vDataBucketUri VARCHAR2(500); BEGIN -- Get bucket URI and credential vDataBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('ODS'); vCredentialName := CT_MRDS.ENV_MANAGER.gvCredentialName; DBMS_OUTPUT.PUT_LINE('Checking ODS bucket: ' || vDataBucketUri); -- Count remaining files in cloud bucket BEGIN FOR rec IN ( SELECT object_name FROM TABLE(DBMS_CLOUD.LIST_OBJECTS( credential_name => vCredentialName, location_uri => vDataBucketUri )) WHERE object_name LIKE 'ODS/TOP/%' ) LOOP vCloudFileCount := vCloudFileCount + 1; IF vCloudFileCount <= 3 THEN -- Show first 3 files DBMS_OUTPUT.PUT_LINE(' Cloud file: ' || rec.object_name); END IF; END LOOP; IF vCloudFileCount = 0 THEN DBMS_OUTPUT.PUT_LINE('SUCCESS: No TOP files found in cloud bucket - clean'); ELSE DBMS_OUTPUT.PUT_LINE('INFO: ' || vCloudFileCount || ' TOP file(s) still in cloud bucket'); DBMS_OUTPUT.PUT_LINE(' Note: Cloud files are not automatically deleted by rollback'); DBMS_OUTPUT.PUT_LINE(' Run 90_MARS_1005_rollback_delete_csv_files.sql to remove them'); END IF; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('WARNING: Cannot check cloud bucket: ' || SQLERRM); END; END; / -- Check 4: Verify rollback logs were created PROMPT Checking rollback operation logs... DECLARE vRollbackLogs NUMBER := 0; BEGIN SELECT COUNT(*) INTO vRollbackLogs FROM CT_MRDS.A_PROCESS_LOG WHERE PROCESS_NAME = 'MARS-1005-ROLLBACK' AND LOG_TIMESTAMP >= SYSDATE - 1/24; -- Last hour IF vRollbackLogs > 0 THEN DBMS_OUTPUT.PUT_LINE('SUCCESS: Rollback operation logs found: ' || vRollbackLogs); -- Show recent rollback logs FOR rec IN ( SELECT TO_CHAR(LOG_TIMESTAMP, 'HH24:MI:SS') AS LOG_TIME, PROCEDURE_NAME, LOG_LEVEL, SUBSTR(LOG_MESSAGE, 1, 50) AS MESSAGE FROM CT_MRDS.A_PROCESS_LOG WHERE PROCESS_NAME = 'MARS-1005-ROLLBACK' AND LOG_TIMESTAMP >= SYSDATE - 1/24 ORDER BY LOG_TIMESTAMP DESC ) LOOP DBMS_OUTPUT.PUT_LINE(' ' || rec.LOG_TIME || ' [' || rec.LOG_LEVEL || '] ' || rec.PROCEDURE_NAME || ': ' || rec.MESSAGE); END LOOP; ELSE DBMS_OUTPUT.PUT_LINE('WARNING: Warning: No rollback operation logs found'); END IF; END; / PROMPT PROMPT ========================================================================= PROMPT MARS-1005 Rollback Verification Summary PROMPT ========================================================================= DECLARE vRemainingFiles NUMBER := 0; vRemainingLogs NUMBER := 0; vRollbackStatus VARCHAR2(20); BEGIN -- Count remaining registrations SELECT COUNT(*) INTO vRemainingFiles FROM CT_MRDS.A_SOURCE_FILE_RECEIVED WHERE PROCESS_NAME = 'MARS-1005' AND RECEPTION_DATE >= SYSDATE - 7; -- Count remaining process logs SELECT COUNT(*) INTO vRemainingLogs FROM CT_MRDS.A_PROCESS_LOG WHERE PROCESS_NAME = 'MARS-1005' AND LOG_TIMESTAMP >= SYSDATE - 7; -- Determine rollback status IF vRemainingFiles = 0 AND vRemainingLogs = 0 THEN vRollbackStatus := 'COMPLETE'; ELSIF vRemainingFiles = 0 OR vRemainingLogs = 0 THEN vRollbackStatus := 'PARTIAL'; ELSE vRollbackStatus := 'INCOMPLETE'; END IF; DBMS_OUTPUT.PUT_LINE('MARS-1005 Rollback Status: ' || vRollbackStatus); DBMS_OUTPUT.PUT_LINE('- Remaining file registrations: ' || vRemainingFiles); DBMS_OUTPUT.PUT_LINE('- Remaining process logs: ' || vRemainingLogs); IF vRollbackStatus = 'COMPLETE' THEN DBMS_OUTPUT.PUT_LINE('SUCCESS: Rollback completed successfully - system clean'); ELSE DBMS_OUTPUT.PUT_LINE('WARNING: Rollback incomplete - manual cleanup may be required'); END IF; DBMS_OUTPUT.PUT_LINE(''); DBMS_OUTPUT.PUT_LINE('Note: Cloud bucket files (OCI) are not automatically removed'); DBMS_OUTPUT.PUT_LINE(' Use OCI console or DBMS_CLOUD commands for file deletion if needed'); END; / PROMPT ========================================================================= PROMPT Rollback Verification Completed PROMPT =========================================================================