Mearge recent development
This commit is contained in:
259
MARS_Packages/REL01_ADDITIONS/MARS-828/test/final_summary.sql
Normal file
259
MARS_Packages/REL01_ADDITIONS/MARS-828/test/final_summary.sql
Normal file
@@ -0,0 +1,259 @@
|
||||
-- ===================================================================
|
||||
-- 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 ================================================================
|
||||
Reference in New Issue
Block a user