260 lines
9.8 KiB
MySQL
260 lines
9.8 KiB
MySQL
-- ===================================================================
|
|
-- MARS-828: Final Summary Report
|
|
-- ===================================================================
|
|
-- Purpose: Complete status of MARS-828 implementation
|
|
-- Author: Grzegorz Michalski
|
|
-- Date: 2026-01-28
|
|
-- ===================================================================
|
|
|
|
SET SERVEROUTPUT ON SIZE UNLIMITED
|
|
SET LINESIZE 200
|
|
SET PAGESIZE 2000
|
|
|
|
PROMPT
|
|
PROMPT ================================================================
|
|
PROMPT MARS-828: FINAL IMPLEMENTATION SUMMARY REPORT
|
|
PROMPT ================================================================
|
|
PROMPT
|
|
|
|
-- 1. Package Status
|
|
PROMPT 1. PACKAGE STATUS
|
|
PROMPT ================================================================
|
|
SELECT
|
|
object_name,
|
|
object_type,
|
|
status,
|
|
TO_CHAR(last_ddl_time, 'YYYY-MM-DD HH24:MI:SS') as last_modified
|
|
FROM all_objects
|
|
WHERE owner = 'CT_MRDS'
|
|
AND object_name = 'FILE_ARCHIVER'
|
|
AND object_type IN ('PACKAGE', 'PACKAGE BODY')
|
|
ORDER BY object_type;
|
|
|
|
SELECT
|
|
'Version: ' || CT_MRDS.FILE_ARCHIVER.GET_VERSION() AS info
|
|
FROM DUAL
|
|
UNION ALL
|
|
SELECT
|
|
'Build Date: ' || SUBSTR(CT_MRDS.FILE_ARCHIVER.GET_BUILD_INFO(),
|
|
INSTR(CT_MRDS.FILE_ARCHIVER.GET_BUILD_INFO(), 'Build Date:') + 12, 19)
|
|
FROM DUAL;
|
|
|
|
-- 2. Package Version Tracking
|
|
PROMPT
|
|
PROMPT 2. PACKAGE VERSION TRACKING
|
|
PROMPT ================================================================
|
|
SELECT
|
|
PACKAGE_NAME,
|
|
PACKAGE_VERSION,
|
|
PACKAGE_BUILD_DATE,
|
|
TO_CHAR(TRACKING_DATE, 'YYYY-MM-DD HH24:MI:SS') AS tracked_on,
|
|
CT_MRDS.ENV_MANAGER.CHECK_PACKAGE_CHANGES(PACKAGE_OWNER, PACKAGE_NAME) AS status
|
|
FROM CT_MRDS.A_PACKAGE_VERSION_TRACKING
|
|
WHERE PACKAGE_OWNER = 'CT_MRDS'
|
|
AND PACKAGE_NAME = 'FILE_ARCHIVER'
|
|
ORDER BY TRACKING_DATE DESC
|
|
FETCH FIRST 1 ROW ONLY;
|
|
|
|
-- 3. Database Schema Changes
|
|
PROMPT
|
|
PROMPT 3. DATABASE SCHEMA CHANGES
|
|
PROMPT ================================================================
|
|
PROMPT New columns in A_SOURCE_FILE_CONFIG:
|
|
SELECT
|
|
column_name,
|
|
data_type ||
|
|
CASE
|
|
WHEN data_type = 'VARCHAR2' THEN '(' || data_length || ')'
|
|
WHEN data_type = 'NUMBER' THEN '(' || NVL(TO_CHAR(data_precision), '*') ||
|
|
CASE WHEN data_scale IS NOT NULL THEN ',' || data_scale END || ')'
|
|
ELSE ''
|
|
END AS data_type,
|
|
nullable,
|
|
data_default
|
|
FROM all_tab_columns
|
|
WHERE owner = 'CT_MRDS'
|
|
AND table_name = 'A_SOURCE_FILE_CONFIG'
|
|
AND column_name IN ('ARCHIVAL_STRATEGY', 'MINIMUM_AGE_MONTHS')
|
|
ORDER BY column_name;
|
|
|
|
PROMPT
|
|
PROMPT Constraints:
|
|
SELECT
|
|
constraint_name,
|
|
constraint_type,
|
|
search_condition
|
|
FROM all_constraints
|
|
WHERE owner = 'CT_MRDS'
|
|
AND table_name = 'A_SOURCE_FILE_CONFIG'
|
|
AND constraint_name = 'CHK_ARCHIVAL_STRATEGY';
|
|
|
|
PROMPT
|
|
PROMPT Triggers:
|
|
SELECT
|
|
trigger_name,
|
|
status,
|
|
trigger_type,
|
|
triggering_event
|
|
FROM all_triggers
|
|
WHERE owner = 'CT_MRDS'
|
|
AND trigger_name = 'TRG_BI_A_SRC_FILE_CFG_ARCH_VAL';
|
|
|
|
-- 4. Archival Strategy Distribution
|
|
PROMPT
|
|
PROMPT 4. ARCHIVAL STRATEGY DISTRIBUTION
|
|
PROMPT ================================================================
|
|
SELECT
|
|
ARCHIVAL_STRATEGY,
|
|
COUNT(*) AS config_count,
|
|
ROUND(COUNT(*) * 100.0 / SUM(COUNT(*)) OVER (), 2) AS percentage
|
|
FROM CT_MRDS.A_SOURCE_FILE_CONFIG
|
|
WHERE SOURCE_FILE_TYPE = 'INPUT'
|
|
GROUP BY ARCHIVAL_STRATEGY
|
|
ORDER BY config_count DESC;
|
|
|
|
-- 5. Strategy Examples by Source
|
|
PROMPT
|
|
PROMPT 5. STRATEGY EXAMPLES BY SOURCE
|
|
PROMPT ================================================================
|
|
SELECT
|
|
A_SOURCE_KEY AS source,
|
|
ARCHIVAL_STRATEGY AS strategy,
|
|
MINIMUM_AGE_MONTHS AS min_age,
|
|
DAYS_FOR_ARCHIVE_THRESHOLD AS threshold_days,
|
|
COUNT(*) AS tables
|
|
FROM CT_MRDS.A_SOURCE_FILE_CONFIG
|
|
WHERE SOURCE_FILE_TYPE = 'INPUT'
|
|
GROUP BY A_SOURCE_KEY, ARCHIVAL_STRATEGY, MINIMUM_AGE_MONTHS, DAYS_FOR_ARCHIVE_THRESHOLD
|
|
HAVING A_SOURCE_KEY IN ('C2D', 'LM', 'CSDB', 'TOP', 'CEPH', 'TMS')
|
|
ORDER BY A_SOURCE_KEY, ARCHIVAL_STRATEGY;
|
|
|
|
-- 6. CSDB Configuration (Special Case - 6 months retention)
|
|
PROMPT
|
|
PROMPT 6. CSDB DEBT CONFIGURATION (6-Month Retention Requirement)
|
|
PROMPT ================================================================
|
|
SELECT
|
|
SOURCE_FILE_ID,
|
|
TABLE_ID,
|
|
ARCHIVAL_STRATEGY,
|
|
MINIMUM_AGE_MONTHS,
|
|
'Retains data for ' || MINIMUM_AGE_MONTHS || ' months before archival' AS retention_policy
|
|
FROM CT_MRDS.A_SOURCE_FILE_CONFIG
|
|
WHERE A_SOURCE_KEY = 'CSDB'
|
|
AND SOURCE_FILE_TYPE = 'INPUT'
|
|
AND TABLE_ID LIKE 'CSDB_DEBT%'
|
|
ORDER BY TABLE_ID;
|
|
|
|
-- 7. Implementation Testing Summary
|
|
PROMPT
|
|
PROMPT 7. IMPLEMENTATION TESTING SUMMARY
|
|
PROMPT ================================================================
|
|
DECLARE
|
|
vCurrentMonth DATE := TRUNC(SYSDATE, 'MM');
|
|
v3MonthsAgo DATE := ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -3);
|
|
v6MonthsAgo DATE := ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -6);
|
|
v30DaysAgo TIMESTAMP := SYSTIMESTAMP - INTERVAL '30' DAY;
|
|
BEGIN
|
|
DBMS_OUTPUT.PUT_LINE('Reference Dates for Strategy Testing:');
|
|
DBMS_OUTPUT.PUT_LINE('--------------------------------------');
|
|
DBMS_OUTPUT.PUT_LINE('Current Month Start: ' || TO_CHAR(vCurrentMonth, 'YYYY-MM-DD'));
|
|
DBMS_OUTPUT.PUT_LINE('3 Months Ago: ' || TO_CHAR(v3MonthsAgo, 'YYYY-MM-DD'));
|
|
DBMS_OUTPUT.PUT_LINE('6 Months Ago: ' || TO_CHAR(v6MonthsAgo, 'YYYY-MM-DD'));
|
|
DBMS_OUTPUT.PUT_LINE('30 Days Ago: ' || TO_CHAR(v30DaysAgo, 'YYYY-MM-DD HH24:MI:SS'));
|
|
DBMS_OUTPUT.PUT_LINE('');
|
|
|
|
DBMS_OUTPUT.PUT_LINE('WHERE Clause Logic by Strategy:');
|
|
DBMS_OUTPUT.PUT_LINE('--------------------------------------');
|
|
DBMS_OUTPUT.PUT_LINE('1. THRESHOLD_BASED:');
|
|
DBMS_OUTPUT.PUT_LINE(' extract(day from (systimestamp - workflow_start)) > DAYS_FOR_ARCHIVE_THRESHOLD');
|
|
DBMS_OUTPUT.PUT_LINE(' Example: Data older than 30 days archived');
|
|
DBMS_OUTPUT.PUT_LINE('');
|
|
|
|
DBMS_OUTPUT.PUT_LINE('2. CURRENT_MONTH_ONLY:');
|
|
DBMS_OUTPUT.PUT_LINE(' TRUNC(workflow_start, ''MM'') < TRUNC(SYSDATE, ''MM'')');
|
|
DBMS_OUTPUT.PUT_LINE(' Example: All data from previous months archived');
|
|
DBMS_OUTPUT.PUT_LINE(' Current month data (' || TO_CHAR(vCurrentMonth, 'YYYY-MM') || ') retained');
|
|
DBMS_OUTPUT.PUT_LINE('');
|
|
|
|
DBMS_OUTPUT.PUT_LINE('3. MINIMUM_AGE_MONTHS (CSDB = 6 months):');
|
|
DBMS_OUTPUT.PUT_LINE(' workflow_start < ADD_MONTHS(TRUNC(SYSDATE, ''MM''), -6)');
|
|
DBMS_OUTPUT.PUT_LINE(' Example: Data before ' || TO_CHAR(v6MonthsAgo, 'YYYY-MM-DD') || ' archived');
|
|
DBMS_OUTPUT.PUT_LINE(' Last 6 months retained');
|
|
DBMS_OUTPUT.PUT_LINE('');
|
|
|
|
DBMS_OUTPUT.PUT_LINE('4. HYBRID (TOP = current month + 3 months):');
|
|
DBMS_OUTPUT.PUT_LINE(' TRUNC(workflow_start, ''MM'') < TRUNC(SYSDATE, ''MM'')');
|
|
DBMS_OUTPUT.PUT_LINE(' AND workflow_start < ADD_MONTHS(TRUNC(SYSDATE, ''MM''), -3)');
|
|
DBMS_OUTPUT.PUT_LINE(' Example: Previous months AND before ' || TO_CHAR(v3MonthsAgo, 'YYYY-MM-DD'));
|
|
DBMS_OUTPUT.PUT_LINE(' Both conditions must be met');
|
|
END;
|
|
/
|
|
|
|
-- 8. Business Requirements Validation
|
|
PROMPT
|
|
PROMPT 8. BUSINESS REQUIREMENTS VALIDATION
|
|
PROMPT ================================================================
|
|
DECLARE
|
|
vCsdbCount NUMBER;
|
|
vLmCount NUMBER;
|
|
vTopCount NUMBER;
|
|
BEGIN
|
|
-- Requirement 1: CSDB 6-month retention
|
|
SELECT COUNT(*) INTO vCsdbCount
|
|
FROM CT_MRDS.A_SOURCE_FILE_CONFIG
|
|
WHERE A_SOURCE_KEY = 'CSDB'
|
|
AND TABLE_ID LIKE 'CSDB_DEBT%'
|
|
AND ARCHIVAL_STRATEGY = 'MINIMUM_AGE_MONTHS'
|
|
AND MINIMUM_AGE_MONTHS = 6;
|
|
|
|
-- Requirement 2: LM/TOP current month only
|
|
SELECT COUNT(*) INTO vLmCount
|
|
FROM CT_MRDS.A_SOURCE_FILE_CONFIG
|
|
WHERE A_SOURCE_KEY IN ('LM', 'TOP')
|
|
AND ARCHIVAL_STRATEGY IN ('CURRENT_MONTH_ONLY', 'HYBRID');
|
|
|
|
DBMS_OUTPUT.PUT_LINE('Requirement 1: CSDB 6-month retention');
|
|
DBMS_OUTPUT.PUT_LINE(' Status: ' || CASE WHEN vCsdbCount >= 4 THEN 'PASS ✓' ELSE 'FAIL ✗' END);
|
|
DBMS_OUTPUT.PUT_LINE(' Configured tables: ' || vCsdbCount || ' (expected: 4)');
|
|
DBMS_OUTPUT.PUT_LINE('');
|
|
|
|
DBMS_OUTPUT.PUT_LINE('Requirement 2: Non-current month archival (LM/TOP)');
|
|
DBMS_OUTPUT.PUT_LINE(' Status: ' || CASE WHEN vLmCount > 0 THEN 'PASS ✓' ELSE 'FAIL ✗' END);
|
|
DBMS_OUTPUT.PUT_LINE(' Configured tables: ' || vLmCount);
|
|
DBMS_OUTPUT.PUT_LINE('');
|
|
|
|
DBMS_OUTPUT.PUT_LINE('Overall Implementation: ' ||
|
|
CASE WHEN vCsdbCount >= 4 AND vLmCount > 0 THEN 'SUCCESS ✓✓✓' ELSE 'INCOMPLETE' END);
|
|
END;
|
|
/
|
|
|
|
PROMPT
|
|
PROMPT ================================================================
|
|
PROMPT MARS-828: IMPLEMENTATION COMPLETE
|
|
PROMPT ================================================================
|
|
PROMPT
|
|
PROMPT Summary of Changes:
|
|
PROMPT - FILE_ARCHIVER upgraded to v3.0.0
|
|
PROMPT - Added ARCHIVAL_STRATEGY column (4 strategies supported)
|
|
PROMPT - Added MINIMUM_AGE_MONTHS column for age-based retention
|
|
PROMPT - Created validation trigger (TRG_BI_A_SRC_FILE_CFG_ARCH_VAL)
|
|
PROMPT - Implemented GET_ARCHIVAL_WHERE_CLAUSE private function
|
|
PROMPT - Updated ARCHIVE_TABLE_DATA to use strategy-based filtering
|
|
PROMPT - Updated GATHER_TABLE_STAT to use strategy-based statistics
|
|
PROMPT
|
|
PROMPT Business Requirements Met:
|
|
PROMPT ✓ CSDB data retention: 6 months (MINIMUM_AGE_MONTHS strategy)
|
|
PROMPT ✓ General archival: Current month only (CURRENT_MONTH_ONLY/HYBRID)
|
|
PROMPT ✓ Backward compatibility: THRESHOLD_BASED (existing behavior)
|
|
PROMPT
|
|
PROMPT Files Deployed:
|
|
PROMPT - 01_MARS_828_install_add_archival_strategy_columns.sql
|
|
PROMPT - 02_MARS_828_install_archival_strategy_trigger.sql
|
|
PROMPT - 03_MARS_828_install_CT_MRDS_FILE_ARCHIVER_SPEC.sql
|
|
PROMPT - 04_MARS_828_install_CT_MRDS_FILE_ARCHIVER_BODY.sql
|
|
PROMPT - 05_MARS_828_verify_installation.sql
|
|
PROMPT - 06_MARS_828_track_version.sql
|
|
PROMPT - 07_MARS_828_verify_packages_version.sql
|
|
PROMPT
|
|
PROMPT Rollback Available: rollback_mars828.sql
|
|
PROMPT ================================================================
|