diff --git a/MARS_Packages/REL02_POST/MARS-956/00_MARS_956_pre_check_prerequisites.sql b/MARS_Packages/REL02_POST/MARS-956/00_MARS_956_pre_check_prerequisites.sql deleted file mode 100644 index 7f3c548..0000000 --- a/MARS_Packages/REL02_POST/MARS-956/00_MARS_956_pre_check_prerequisites.sql +++ /dev/null @@ -1,287 +0,0 @@ --- ===================================================================================== --- Script: 00_MARS_956_pre_check_prerequisites.sql --- Purpose: Verify prerequisites for C2D MPEC data export --- Author: System Generated --- Created: 2026-02-12 --- MARS Issue: MARS-956 --- Target Locations: mrds_data_dev/ODS/C2D/ --- ===================================================================================== - -SET SERVEROUTPUT ON SIZE UNLIMITED; -SET FEEDBACK ON; -SET VERIFY OFF; -SET LINESIZE 200; - -PROMPT ===================================================================================== -PROMPT MARS-956 Pre-Check: Prerequisites for C2D MPEC Data Export -PROMPT ===================================================================================== - -DECLARE - vDataBucketUri VARCHAR2(500); - vCredentialName VARCHAR2(100); - vFileCount NUMBER := 0; - vAdminRows NUMBER := 0; - vContentRows NUMBER := 0; - vCriterionRows NUMBER := 0; - vAdminCols NUMBER := 0; - vContentCols NUMBER := 0; - vCriterionCols NUMBER := 0; -BEGIN - -- Get bucket URI and credential from FILE_MANAGER configuration - vDataBucketUri := CT_MRDS.FILE_MANAGER.GET_BUCKET_URI('ODS'); - vCredentialName := CT_MRDS.ENV_MANAGER.gvCredentialName; - - DBMS_OUTPUT.PUT_LINE('CHECK TIME: ' || TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3')); - DBMS_OUTPUT.PUT_LINE('ODS Bucket URI: ' || vDataBucketUri); - DBMS_OUTPUT.PUT_LINE('Credential: ' || vCredentialName); - DBMS_OUTPUT.PUT_LINE(''); - - DBMS_OUTPUT.PUT_LINE('====================================================================================='); - DBMS_OUTPUT.PUT_LINE('Check 1: Verify DATA_EXPORTER Package Version'); - DBMS_OUTPUT.PUT_LINE('====================================================================================='); - - -- Check DATA_EXPORTER version - BEGIN - DBMS_OUTPUT.PUT_LINE('DATA_EXPORTER Version: ' || CT_MRDS.DATA_EXPORTER.PACKAGE_VERSION); - DBMS_OUTPUT.PUT_LINE('Build Date: ' || CT_MRDS.DATA_EXPORTER.PACKAGE_BUILD_DATE); - DBMS_OUTPUT.PUT_LINE('SUCCESS: DATA_EXPORTER package is available'); - EXCEPTION - WHEN OTHERS THEN - DBMS_OUTPUT.PUT_LINE('ERROR: ERROR: DATA_EXPORTER package not available: ' || SQLERRM); - RAISE; - END; - - DBMS_OUTPUT.PUT_LINE(''); - DBMS_OUTPUT.PUT_LINE('====================================================================================='); - DBMS_OUTPUT.PUT_LINE('Check 2: Verify Source Tables in OU_LEGACY_C2D Schema'); - DBMS_OUTPUT.PUT_LINE('====================================================================================='); - - -- Check source table row counts - EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM OU_LEGACY_C2D.MPEC_ADMIN' INTO vAdminRows; - EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM OU_LEGACY_C2D.MPEC_CONTENT' INTO vContentRows; - EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM OU_LEGACY_C2D.MPEC_CONTENT_CRITERION' INTO vCriterionRows; - - DBMS_OUTPUT.PUT_LINE('Source table row counts:'); - DBMS_OUTPUT.PUT_LINE('- MPEC_ADMIN: ' || vAdminRows || ' rows'); - DBMS_OUTPUT.PUT_LINE('- MPEC_CONTENT: ' || vContentRows || ' rows'); - DBMS_OUTPUT.PUT_LINE('- MPEC_CONTENT_CRITERION: ' || vCriterionRows || ' rows'); - - IF vAdminRows > 0 AND vContentRows > 0 AND vCriterionRows > 0 THEN - DBMS_OUTPUT.PUT_LINE('SUCCESS: All source tables have data'); - ELSE - DBMS_OUTPUT.PUT_LINE('ERROR: One or more source tables are empty'); - END IF; - - DBMS_OUTPUT.PUT_LINE(''); - DBMS_OUTPUT.PUT_LINE('====================================================================================='); - DBMS_OUTPUT.PUT_LINE('Check 3: Verify Template Tables in CT_ET_TEMPLATES Schema'); - DBMS_OUTPUT.PUT_LINE('====================================================================================='); - - -- Check template table structure - SELECT COUNT(*) - INTO vAdminCols - FROM all_tab_columns - WHERE owner = 'CT_ET_TEMPLATES' - AND table_name = 'C2D_MPEC_ADMIN'; - - SELECT COUNT(*) - INTO vContentCols - FROM all_tab_columns - WHERE owner = 'CT_ET_TEMPLATES' - AND table_name = 'C2D_MPEC_CONTENT'; - - SELECT COUNT(*) - INTO vCriterionCols - FROM all_tab_columns - WHERE owner = 'CT_ET_TEMPLATES' - AND table_name = 'C2D_MPEC_CONTENT_CRITERION'; - - DBMS_OUTPUT.PUT_LINE('Template table column counts:'); - DBMS_OUTPUT.PUT_LINE('- C2D_MPEC_ADMIN: ' || vAdminCols || ' columns'); - DBMS_OUTPUT.PUT_LINE('- C2D_MPEC_CONTENT: ' || vContentCols || ' columns'); - DBMS_OUTPUT.PUT_LINE('- C2D_MPEC_CONTENT_CRITERION: ' || vCriterionCols || ' columns'); - - IF vAdminCols > 0 AND vContentCols > 0 AND vCriterionCols > 0 THEN - DBMS_OUTPUT.PUT_LINE('SUCCESS: All template tables have defined structure'); - ELSE - DBMS_OUTPUT.PUT_LINE('ERROR: One or more template tables missing columns'); - END IF; - - DBMS_OUTPUT.PUT_LINE(''); - DBMS_OUTPUT.PUT_LINE('====================================================================================='); - DBMS_OUTPUT.PUT_LINE('Check 4: Verify ETL Key References in A_LOAD_HISTORY'); - DBMS_OUTPUT.PUT_LINE('====================================================================================='); - - -- Check ETL key validation - DECLARE - vValidKeys NUMBER := 0; - vTotalSourceKeys NUMBER := 0; - BEGIN - -- Count total distinct ETL keys in source tables - SELECT COUNT(DISTINCT etl_key) - INTO vTotalSourceKeys - FROM ( - SELECT A_ETL_LOAD_SET_FK AS etl_key FROM OU_LEGACY_C2D.MPEC_ADMIN - UNION - SELECT A_ETL_LOAD_SET_FK FROM OU_LEGACY_C2D.MPEC_CONTENT - UNION - SELECT A_ETL_LOAD_SET_FK FROM OU_LEGACY_C2D.MPEC_CONTENT_CRITERION - ); - - -- Count how many exist in A_LOAD_HISTORY - SELECT COUNT(DISTINCT etl_key) - INTO vValidKeys - FROM ( - SELECT A_ETL_LOAD_SET_FK AS etl_key FROM OU_LEGACY_C2D.MPEC_ADMIN - UNION - SELECT A_ETL_LOAD_SET_FK FROM OU_LEGACY_C2D.MPEC_CONTENT - UNION - SELECT A_ETL_LOAD_SET_FK FROM OU_LEGACY_C2D.MPEC_CONTENT_CRITERION - ) src - WHERE EXISTS ( - SELECT 1 FROM CT_ODS.A_LOAD_HISTORY h - WHERE h.A_ETL_LOAD_SET_KEY = src.etl_key - ); - - DBMS_OUTPUT.PUT_LINE('ETL key validation:'); - DBMS_OUTPUT.PUT_LINE('- Total distinct ETL keys in source: ' || vTotalSourceKeys); - DBMS_OUTPUT.PUT_LINE('- Valid keys (exist in A_LOAD_HISTORY): ' || vValidKeys); - - IF vValidKeys = vTotalSourceKeys THEN - DBMS_OUTPUT.PUT_LINE('SUCCESS: All source ETL keys are valid'); - ELSE - DBMS_OUTPUT.PUT_LINE('ERROR: Some ETL keys may be invalid: ' || (vTotalSourceKeys - vValidKeys)); - END IF; - END; - - DBMS_OUTPUT.PUT_LINE(''); - DBMS_OUTPUT.PUT_LINE('====================================================================================='); - DBMS_OUTPUT.PUT_LINE('Check 5: Verify External Tables in ODS Schema (Target Readiness)'); - DBMS_OUTPUT.PUT_LINE('====================================================================================='); - - -- Check target external table accessibility and current record counts - DECLARE - vAdminExtCount NUMBER := -1; - vContentExtCount NUMBER := -1; - vCriterionExtCount NUMBER := -1; - BEGIN - -- Check if external tables exist and are accessible - BEGIN - EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM ODS.C2D_MPEC_ADMIN_ODS' INTO vAdminExtCount; - EXCEPTION - WHEN OTHERS THEN - -- Acceptable errors for empty external tables: - -- ORA-29913: error in executing ODCIEXTTABLEOPEN callout - -- ORA-29400: data cartridge error - -- KUP-13023: nothing matched wildcard query (no files) - IF SQLCODE IN (-29913, -29400) OR SQLERRM LIKE '%KUP-13023%' OR SQLERRM LIKE '%does not exist%' THEN - vAdminExtCount := 0; -- Empty/non-existent is OK - ELSE - vAdminExtCount := -1; -- Real error - END IF; - END; - - BEGIN - EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM ODS.C2D_MPEC_CONTENT_ODS' INTO vContentExtCount; - EXCEPTION - WHEN OTHERS THEN - IF SQLCODE IN (-29913, -29400) OR SQLERRM LIKE '%KUP-13023%' OR SQLERRM LIKE '%does not exist%' THEN - vContentExtCount := 0; - ELSE - vContentExtCount := -1; - END IF; - END; - - BEGIN - EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM ODS.C2D_MPEC_CONTENT_CRITERION_ODS' INTO vCriterionExtCount; - EXCEPTION - WHEN OTHERS THEN - IF SQLCODE IN (-29913, -29400) OR SQLERRM LIKE '%KUP-13023%' OR SQLERRM LIKE '%does not exist%' THEN - vCriterionExtCount := 0; - ELSE - vCriterionExtCount := -1; - END IF; - END; - - DBMS_OUTPUT.PUT_LINE('Target external table current counts:'); - DBMS_OUTPUT.PUT_LINE('- ODS.C2D_MPEC_ADMIN_ODS: ' || - CASE WHEN vAdminExtCount = -1 THEN 'ERROR/INACCESSIBLE' - WHEN vAdminExtCount = 0 THEN '0 (empty/clean)' - ELSE TO_CHAR(vAdminExtCount) END); - DBMS_OUTPUT.PUT_LINE('- ODS.C2D_MPEC_CONTENT_ODS: ' || - CASE WHEN vContentExtCount = -1 THEN 'ERROR/INACCESSIBLE' - WHEN vContentExtCount = 0 THEN '0 (empty/clean)' - ELSE TO_CHAR(vContentExtCount) END); - DBMS_OUTPUT.PUT_LINE('- ODS.C2D_MPEC_CONTENT_CRITERION_ODS: ' || - CASE WHEN vCriterionExtCount = -1 THEN 'ERROR/INACCESSIBLE' - WHEN vCriterionExtCount = 0 THEN '0 (empty/clean)' - ELSE TO_CHAR(vCriterionExtCount) END); - - IF vAdminExtCount >= 0 AND vContentExtCount >= 0 AND vCriterionExtCount >= 0 THEN - IF vAdminExtCount = 0 AND vContentExtCount = 0 AND vCriterionExtCount = 0 THEN - DBMS_OUTPUT.PUT_LINE('SUCCESS: All target external tables are clean (ready for fresh export)'); - ELSE - DBMS_OUTPUT.PUT_LINE('WARNING: Target external tables contain data (' || - (vAdminExtCount + vContentExtCount + vCriterionExtCount) || ' total records)'); - DBMS_OUTPUT.PUT_LINE(' Consider rollback if this is a re-run'); - END IF; - ELSE - DBMS_OUTPUT.PUT_LINE('ERROR: Some external tables are inaccessible - check table definitions'); - END IF; - END; - - DBMS_OUTPUT.PUT_LINE(''); - DBMS_OUTPUT.PUT_LINE('====================================================================================='); - DBMS_OUTPUT.PUT_LINE('Check 6: Check Existing Files in ODS/C2D Bucket'); - DBMS_OUTPUT.PUT_LINE('====================================================================================='); - - -- Check for existing C2D MPEC files - BEGIN - FOR rec IN ( - SELECT object_name - FROM TABLE(DBMS_CLOUD.LIST_OBJECTS( - credential_name => vCredentialName, - location_uri => vDataBucketUri - )) - WHERE object_name LIKE 'ODS/C2D/C2D_MPEC_%' - ) LOOP - vFileCount := vFileCount + 1; - IF vFileCount = 1 THEN - DBMS_OUTPUT.PUT_LINE('Existing C2D MPEC files in ODS bucket:'); - END IF; - DBMS_OUTPUT.PUT_LINE('- ' || rec.object_name); - END LOOP; - - IF vFileCount = 0 THEN - DBMS_OUTPUT.PUT_LINE('SUCCESS: No existing C2D MPEC files found - ready for clean export'); - ELSE - DBMS_OUTPUT.PUT_LINE('WARNING: Warning: ' || vFileCount || ' existing C2D MPEC files found'); - DBMS_OUTPUT.PUT_LINE(' Consider rollback if this is a re-run'); - END IF; - EXCEPTION - WHEN OTHERS THEN - DBMS_OUTPUT.PUT_LINE('ERROR: ERROR checking existing files: ' || SQLERRM); - END; - - DBMS_OUTPUT.PUT_LINE(''); - DBMS_OUTPUT.PUT_LINE('====================================================================================='); - DBMS_OUTPUT.PUT_LINE('MARS-956 Pre-Check Summary'); - DBMS_OUTPUT.PUT_LINE('====================================================================================='); - DBMS_OUTPUT.PUT_LINE('SUCCESS: DATA_EXPORTER package available'); - DBMS_OUTPUT.PUT_LINE('SUCCESS: Source tables: ' || (vAdminRows + vContentRows + vCriterionRows) || ' total rows'); - DBMS_OUTPUT.PUT_LINE('SUCCESS: Template tables: All structures defined'); - DBMS_OUTPUT.PUT_LINE('SUCCESS: ETL keys: All validated in A_LOAD_HISTORY'); - DBMS_OUTPUT.PUT_LINE('SUCCESS: External tables: Accessible and ready'); - - IF vFileCount > 0 THEN - DBMS_OUTPUT.PUT_LINE('WARNING: Existing files: ' || vFileCount || ' (consider rollback)'); - ELSE - DBMS_OUTPUT.PUT_LINE('SUCCESS: Target bucket: Clean for export'); - END IF; - - DBMS_OUTPUT.PUT_LINE(''); - DBMS_OUTPUT.PUT_LINE('Prerequisites check completed - ready to proceed with MARS-956 export'); - DBMS_OUTPUT.PUT_LINE('====================================================================================='); - -END; -/ \ No newline at end of file diff --git a/MARS_Packages/REL02_POST/MARS-956/01_MARS_956_export_c2d_mpec_data.sql b/MARS_Packages/REL02_POST/MARS-956/01_MARS_956_export_c2d_mpec_data.sql index c13e8bd..8228eaf 100644 --- a/MARS_Packages/REL02_POST/MARS-956/01_MARS_956_export_c2d_mpec_data.sql +++ b/MARS_Packages/REL02_POST/MARS-956/01_MARS_956_export_c2d_mpec_data.sql @@ -1,7 +1,7 @@ -- ===================================================================================== -- Script: 01_MARS_956_export_c2d_mpec_data.sql -- Purpose: Export C2D MPEC historical data to ODS bucket --- Author: System Generated +-- Author: Grzegorz Michalski -- Created: 2026-02-12 -- MARS Issue: MARS-956 -- Target: mrds_data_dev/ODS/C2D/ diff --git a/MARS_Packages/REL02_POST/MARS-956/02_MARS_956_verify_exports.sql b/MARS_Packages/REL02_POST/MARS-956/02_MARS_956_verify_exports.sql index f50dc62..70dbbd2 100644 --- a/MARS_Packages/REL02_POST/MARS-956/02_MARS_956_verify_exports.sql +++ b/MARS_Packages/REL02_POST/MARS-956/02_MARS_956_verify_exports.sql @@ -2,7 +2,7 @@ -- MARS-956 Verify Exports: Check Export Results and File Creation -- =================================================================== -- Purpose: Verify that C2D MPEC export completed successfully --- Author: System Generated +-- Author: Grzegorz Michalski -- Date: 2026-02-12 SET SERVEROUTPUT ON SIZE UNLIMITED diff --git a/MARS_Packages/REL02_POST/MARS-956/03_MARS_956_verify_data_integrity.sql b/MARS_Packages/REL02_POST/MARS-956/03_MARS_956_verify_data_integrity.sql index 0c7af39..89f5d94 100644 --- a/MARS_Packages/REL02_POST/MARS-956/03_MARS_956_verify_data_integrity.sql +++ b/MARS_Packages/REL02_POST/MARS-956/03_MARS_956_verify_data_integrity.sql @@ -2,7 +2,7 @@ -- MARS-956 Verify Data Integrity: Source vs Exported Data Validation -- =================================================================== -- Purpose: Verify data integrity between source tables and exported files --- Author: System Generated +-- Author: Grzegorz Michalski -- Date: 2026-02-12 SET SERVEROUTPUT ON SIZE UNLIMITED diff --git a/MARS_Packages/REL02_POST/MARS-956/90_MARS_956_rollback_delete_csv_files.sql b/MARS_Packages/REL02_POST/MARS-956/90_MARS_956_rollback_delete_csv_files.sql index b447418..9e5c924 100644 --- a/MARS_Packages/REL02_POST/MARS-956/90_MARS_956_rollback_delete_csv_files.sql +++ b/MARS_Packages/REL02_POST/MARS-956/90_MARS_956_rollback_delete_csv_files.sql @@ -3,7 +3,7 @@ --============================================================================================================================= -- Purpose: Delete exported CSV files from ODS/C2D bucket folders for MPEC tables -- WARNING: This will permanently delete exported data files! --- Author: System Generated +-- Author: Grzegorz Michalski -- Date: 2026-02-12 -- Related: MARS-956 - C2D MPEC Data Export Rollback --============================================================================================================================= diff --git a/MARS_Packages/REL02_POST/MARS-956/91_MARS_956_rollback_file_registrations.sql b/MARS_Packages/REL02_POST/MARS-956/91_MARS_956_rollback_file_registrations.sql index 125f916..42050d5 100644 --- a/MARS_Packages/REL02_POST/MARS-956/91_MARS_956_rollback_file_registrations.sql +++ b/MARS_Packages/REL02_POST/MARS-956/91_MARS_956_rollback_file_registrations.sql @@ -2,7 +2,7 @@ -- MARS-956 Rollback Step 1: Delete File Registrations -- =================================================================== -- Purpose: Remove MARS-956 export file registrations from A_SOURCE_FILE_RECEIVED --- Author: System Generated +-- Author: Grzegorz Michalski -- Date: 2026-02-12 SET SERVEROUTPUT ON SIZE UNLIMITED diff --git a/MARS_Packages/REL02_POST/MARS-956/92_MARS_956_rollback_process_logs.sql b/MARS_Packages/REL02_POST/MARS-956/92_MARS_956_rollback_process_logs.sql index 9f3047e..6e4b82a 100644 --- a/MARS_Packages/REL02_POST/MARS-956/92_MARS_956_rollback_process_logs.sql +++ b/MARS_Packages/REL02_POST/MARS-956/92_MARS_956_rollback_process_logs.sql @@ -2,7 +2,7 @@ -- MARS-956 Rollback Step 2: Clean Process Logs -- =================================================================== -- Purpose: Remove MARS-956 process logs from A_PROCESS_LOG --- Author: System Generated +-- Author: Grzegorz Michalski -- Date: 2026-02-12 SET SERVEROUTPUT ON SIZE UNLIMITED diff --git a/MARS_Packages/REL02_POST/MARS-956/99_MARS_956_verify_rollback.sql b/MARS_Packages/REL02_POST/MARS-956/99_MARS_956_verify_rollback.sql index 510d0f3..f14648e 100644 --- a/MARS_Packages/REL02_POST/MARS-956/99_MARS_956_verify_rollback.sql +++ b/MARS_Packages/REL02_POST/MARS-956/99_MARS_956_verify_rollback.sql @@ -2,7 +2,7 @@ -- MARS-956 Rollback Verification: Confirm Rollback Completion -- =================================================================== -- Purpose: Verify that MARS-956 rollback completed successfully --- Author: System Generated +-- Author: Grzegorz Michalski -- Date: 2026-02-12 SET SERVEROUTPUT ON SIZE UNLIMITED diff --git a/MARS_Packages/REL02_POST/MARS-956/install_mars956.sql b/MARS_Packages/REL02_POST/MARS-956/install_mars956.sql index 11c6e8a..8fe639d 100644 --- a/MARS_Packages/REL02_POST/MARS-956/install_mars956.sql +++ b/MARS_Packages/REL02_POST/MARS-956/install_mars956.sql @@ -4,9 +4,8 @@ -- Purpose: One-time bulk export of 3 C2D MPEC tables from OU_LEGACY_C2D schema -- to OCI buckets (ODS bucket CSV format) -- Uses DATA_EXPORTER v2.7.5 with pRegisterExport for file registration --- Author: System Generated +-- Author: Grzegorz Michalski -- Date: 2026-02-12 --- Version: 1.0.0 -- Dynamic spool file generation (using SYS_CONTEXT - no DBA privileges required) -- Log files are automatically created in log/ subdirectory @@ -58,12 +57,6 @@ END; / WHENEVER SQLERROR CONTINUE -PROMPT -PROMPT ========================================================================= -PROMPT Pre-Check: Verify prerequisites and table readiness -PROMPT ========================================================================= -@@00_MARS_956_pre_check_prerequisites.sql - PROMPT PROMPT ========================================================================= PROMPT Step 1: Export C2D MPEC Data to ODS Bucket diff --git a/MARS_Packages/REL02_POST/MARS-956/rollback_mars956.sql b/MARS_Packages/REL02_POST/MARS-956/rollback_mars956.sql index 32b70f4..e349472 100644 --- a/MARS_Packages/REL02_POST/MARS-956/rollback_mars956.sql +++ b/MARS_Packages/REL02_POST/MARS-956/rollback_mars956.sql @@ -3,7 +3,7 @@ -- =================================================================== -- Purpose: Rollback MARS-956 - Delete exported CSV files and file registrations -- WARNING: This will DELETE all exported data files and registrations! --- Author: System Generated +-- Author: Grzegorz Michalski -- Date: 2026-02-12 -- Dynamic spool file generation (using SYS_CONTEXT - no DBA privileges required)