This commit is contained in:
Grzegorz Michalski
2026-02-02 10:59:29 +01:00
commit ecd833f682
679 changed files with 122717 additions and 0 deletions

View File

@@ -0,0 +1,85 @@
--=============================================================================================================================
-- MARS-1049-ADHOC: Update CSDB Encoding Configuration
--=============================================================================================================================
-- Purpose: Change encoding for CSDB configurations from UTF8 to WE8MSWIN1252
-- Author: Grzegorz Michalski
-- Date: 2025-11-26
-- Related: MARS-1049 (CSV Encoding Support), MARS-821 (Original CSDB Setup)
--
-- Why WE8MSWIN1252 for CSDB:
-- - CSDB files contain international characters (Turkish: Türkiye, etc.)
-- - Source system uses Windows-1252 encoding
-- - Proper character handling requires matching encoding
--=============================================================================================================================
SET SERVEROUTPUT ON
PROMPT =========================================================================
PROMPT MARS-1049-ADHOC: Update CSDB Encoding Configuration
PROMPT =========================================================================
-- Step 1: Show current state
PROMPT
PROMPT Step 1: Current CSDB encoding configuration
PROMPT ========================================
SELECT
TABLE_ID,
SOURCE_FILE_ID,
ENCODING AS CURRENT_ENCODING,
TEMPLATE_TABLE_NAME
FROM CT_MRDS.A_SOURCE_FILE_CONFIG
WHERE TEMPLATE_TABLE_NAME LIKE '%CSDB%'
ORDER BY TABLE_ID, SOURCE_FILE_ID;
PROMPT
PROMPT Step 2: Update CSDB configurations to WE8MSWIN1252
PROMPT ========================================
-- Update all CSDB configurations to Windows-1252 encoding
UPDATE /*+ NOPARALLEL */ CT_MRDS.A_SOURCE_FILE_CONFIG
SET ENCODING = 'WE8MSWIN1252'
WHERE TEMPLATE_TABLE_NAME LIKE '%CSDB%';
PROMPT Updated CSDB configurations with WE8MSWIN1252 encoding
-- Commit changes
COMMIT;
PROMPT
PROMPT Step 3: Verify updated encoding configuration
PROMPT ========================================
SELECT
TABLE_ID,
SOURCE_FILE_ID,
ENCODING AS NEW_ENCODING,
TEMPLATE_TABLE_NAME
FROM CT_MRDS.A_SOURCE_FILE_CONFIG
WHERE TEMPLATE_TABLE_NAME LIKE '%CSDB%'
ORDER BY TABLE_ID, SOURCE_FILE_ID;
PROMPT
PROMPT Step 4: Overall encoding distribution
PROMPT ========================================
SELECT
ENCODING,
COUNT(*) AS CONFIG_COUNT,
LISTAGG(DISTINCT TABLE_ID, ', ') WITHIN GROUP (ORDER BY TABLE_ID) AS TABLES
FROM CT_MRDS.A_SOURCE_FILE_CONFIG
GROUP BY ENCODING
ORDER BY ENCODING;
PROMPT
PROMPT =========================================================================
PROMPT CSDB Encoding Update - COMPLETED
PROMPT =========================================================================
PROMPT
PROMPT Summary:
PROMPT - All CSDB configurations updated to WE8MSWIN1252
PROMPT - Encoding matches source system character set (Windows-1252)
PROMPT - Proper handling of international characters enabled
PROMPT
PROMPT Next Step: Run 01_MARS_1049_ADHOC_drop_external_tables.sql
PROMPT =========================================================================

View File

@@ -0,0 +1,94 @@
--=============================================================================================================================
-- MARS-1049-ADHOC: Drop External Tables for CSDB Encoding Change
--=============================================================================================================================
-- Purpose: Drop existing CSDB external tables before recreation with proper encoding parameter
-- Author: Grzegorz Michalski
-- Date: 2025-11-26
-- Related: MARS-1049 (CSV Encoding Support)
--
-- Tables to be dropped (16 total - existing and non-existing):
-- - CSDB_DEBT: ARCHIVE, INBOX, ODS
-- - CSDB_DEBT_DAILY: ARCHIVE, INBOX, ODS
-- - CSDB_INSTR_DESC_FULL: ARCHIVE, INBOX, ODS
-- - CSDB_INSTR_RAT_FULL: ARCHIVE, ODS
-- - CSDB_ISSUER_DESC_FULL: ARCHIVE, ODS
-- - CSDB_ISSUER_RAT_FULL: ARCHIVE, INBOX, ODS
--
-- Note: Script handles both existing and non-existing tables gracefully
--=============================================================================================================================
SET SERVEROUTPUT ON
DECLARE
TYPE t_string_array IS TABLE OF VARCHAR2(100);
-- Define list of tables to drop (16 total)
vTableList t_string_array := t_string_array(
'CSDB_DEBT_ARCHIVE',
'CSDB_DEBT_INBOX',
'CSDB_DEBT_ODS',
'CSDB_DEBT_DAILY_ARCHIVE',
'CSDB_DEBT_DAILY_INBOX',
'CSDB_DEBT_DAILY_ODS',
'CSDB_INSTR_DESC_FULL_ARCHIVE',
'CSDB_INSTR_DESC_FULL_INBOX',
'CSDB_INSTR_DESC_FULL_ODS',
'CSDB_INSTR_RAT_FULL_ARCHIVE',
'CSDB_INSTR_RAT_FULL_INBOX',
'CSDB_INSTR_RAT_FULL_ODS',
'CSDB_ISSUER_DESC_FULL_ARCHIVE',
'CSDB_ISSUER_DESC_FULL_INBOX',
'CSDB_ISSUER_DESC_FULL_ODS',
'CSDB_ISSUER_RAT_FULL_ARCHIVE',
'CSDB_ISSUER_RAT_FULL_INBOX',
'CSDB_ISSUER_RAT_FULL_ODS'
);
vDroppedCount NUMBER := 0;
vSkippedCount NUMBER := 0;
vErrorCount NUMBER := 0;
BEGIN
DBMS_OUTPUT.PUT_LINE('=========================================================================');
DBMS_OUTPUT.PUT_LINE('MARS-1049-ADHOC: Drop CSDB External Tables');
DBMS_OUTPUT.PUT_LINE('=========================================================================');
DBMS_OUTPUT.PUT_LINE('Tables to process: ' || vTableList.COUNT);
DBMS_OUTPUT.PUT_LINE('');
-- Loop through table list
FOR i IN 1..vTableList.COUNT LOOP
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE ODS.' || vTableList(i);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Dropped ODS.' || vTableList(i));
vDroppedCount := vDroppedCount + 1;
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE = -942 THEN
DBMS_OUTPUT.PUT_LINE('INFO: Table ODS.' || vTableList(i) || ' does not exist - skipping');
vSkippedCount := vSkippedCount + 1;
ELSE
DBMS_OUTPUT.PUT_LINE('ERROR: Failed to drop ODS.' || vTableList(i) || ' - ' || SQLERRM);
vErrorCount := vErrorCount + 1;
RAISE;
END IF;
END;
END LOOP;
DBMS_OUTPUT.PUT_LINE('');
DBMS_OUTPUT.PUT_LINE('=========================================================================');
DBMS_OUTPUT.PUT_LINE('Drop External Tables - COMPLETED');
DBMS_OUTPUT.PUT_LINE('=========================================================================');
DBMS_OUTPUT.PUT_LINE('Summary:');
DBMS_OUTPUT.PUT_LINE('- Tables processed: ' || vTableList.COUNT);
DBMS_OUTPUT.PUT_LINE('- Tables dropped: ' || vDroppedCount);
DBMS_OUTPUT.PUT_LINE('- Tables skipped: ' || vSkippedCount);
DBMS_OUTPUT.PUT_LINE('- Errors: ' || vErrorCount);
DBMS_OUTPUT.PUT_LINE('');
DBMS_OUTPUT.PUT_LINE('Next Step: Run 02_MARS_1049_ADHOC_recreate_external_tables.sql');
DBMS_OUTPUT.PUT_LINE('=========================================================================');
END;
/

View File

@@ -0,0 +1,297 @@
--=============================================================================================================================
-- MARS-1049-ADHOC: Recreate External Tables for CSDB with Encoding Support
--=============================================================================================================================
-- Purpose: Recreate CSDB external tables with proper pEncoding parameter (WE8MSWIN1252)
-- Author: Grzegorz Michalski
-- Date: 2025-11-26
-- Related: MARS-1049 (CSV Encoding Support), MARS-821 (Original CSDB Setup)
--
-- Tables to be created (5 existing + 11 missing = 16 total):
-- CSDB_DEBT: INBOX, ODS, ARCHIVE
-- CSDB_DEBT_DAILY: INBOX, ODS, ARCHIVE
-- CSDB_INSTR_DESC_FULL: INBOX, ODS, ARCHIVE
-- CSDB_INSTR_RAT_FULL: INBOX, ODS, ARCHIVE
-- CSDB_ISSUER_DESC_FULL: INBOX, ODS, ARCHIVE
-- CSDB_ISSUER_RAT_FULL: INBOX, ODS, ARCHIVE
--
-- Prerequisites:
-- - Template tables must exist in CT_ET_TEMPLATES schema
-- - FILE_MANAGER_ODS v2.1.0+ with pEncoding parameter support
-- - Proper bucket URIs configured in ENV_MANAGER
--=============================================================================================================================
SET SERVEROUTPUT ON
PROMPT ========================================================
PROMPT Step 1: Create CSDB_DEBT External Tables with Encoding
PROMPT ========================================================
-- INBOX - For incoming files awaiting processing
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_DEBT_INBOX',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_DEBT',
pPrefix => 'INBOX/CSDB/CentralizedSecuritiesDissemination/CSDB_DEBT',
pBucketUri => CT_MRDS.ENV_MANAGER.gvInboxBucketUri,
pEncoding => 'WE8MSWIN1252'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_DEBT_INBOX with encoding WE8MSWIN1252');
END;
/
-- ODS - For processed files in operational data store
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_DEBT_ODS',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_DEBT',
pPrefix => 'ODS/CSDB/CSDB_DEBT',
pBucketUri => CT_MRDS.ENV_MANAGER.gvDataBucketUri,
pEncoding => 'WE8MSWIN1252'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_DEBT_ODS with encoding WE8MSWIN1252');
END;
/
-- ARCHIVE - For historical/archived files
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_DEBT_ARCHIVE',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_DEBT',
pPrefix => 'ARCHIVE/CSDB/CSDB_DEBT',
pBucketUri => CT_MRDS.ENV_MANAGER.gvArchiveBucketUri,
pEncoding => 'WE8MSWIN1252'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_DEBT_ARCHIVE with encoding WE8MSWIN1252');
END;
/
PROMPT ================================================================
PROMPT Step 2: Create CSDB_DEBT_DAILY External Tables with Encoding
PROMPT ================================================================
-- INBOX - For incoming files awaiting processing
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_DEBT_DAILY_INBOX',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_DEBT_DAILY',
pPrefix => 'INBOX/CSDB/CentralizedSecuritiesDailyReferenceDataDissemination/CSDB_DEBT_DAILY',
pBucketUri => CT_MRDS.ENV_MANAGER.gvInboxBucketUri,
pEncoding => 'WE8MSWIN1252'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_DEBT_DAILY_INBOX with encoding WE8MSWIN1252');
END;
/
-- ODS - For processed files in operational data store
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_DEBT_DAILY_ODS',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_DEBT_DAILY',
pPrefix => 'ODS/CSDB/CSDB_DEBT_DAILY',
pBucketUri => CT_MRDS.ENV_MANAGER.gvDataBucketUri,
pEncoding => 'WE8MSWIN1252'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_DEBT_DAILY_ODS with encoding WE8MSWIN1252');
END;
/
-- ARCHIVE - For historical/archived files
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_DEBT_DAILY_ARCHIVE',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_DEBT_DAILY',
pPrefix => 'ARCHIVE/CSDB/CSDB_DEBT_DAILY',
pBucketUri => CT_MRDS.ENV_MANAGER.gvArchiveBucketUri,
pEncoding => 'WE8MSWIN1252'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_DEBT_DAILY_ARCHIVE with encoding WE8MSWIN1252');
END;
/
PROMPT ========================================================================
PROMPT Step 3: Create CSDB_INSTR_DESC_FULL External Tables with Encoding
PROMPT ========================================================================
-- INBOX - For incoming files awaiting processing
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_INSTR_DESC_FULL_INBOX',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_INSTR_DESC_FULL',
pPrefix => 'INBOX/CSDB/FullRatingsDissemination/CSDB_INSTR_DESC_FULL',
pBucketUri => CT_MRDS.ENV_MANAGER.gvInboxBucketUri,
pEncoding => 'WE8MSWIN1252'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_INSTR_DESC_FULL_INBOX with encoding WE8MSWIN1252');
END;
/
-- ODS - For processed files in operational data store
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_INSTR_DESC_FULL_ODS',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_INSTR_DESC_FULL',
pPrefix => 'ODS/CSDB/CSDB_INSTR_DESC_FULL',
pBucketUri => CT_MRDS.ENV_MANAGER.gvDataBucketUri,
pEncoding => 'WE8MSWIN1252'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_INSTR_DESC_FULL_ODS with encoding WE8MSWIN1252');
END;
/
-- ARCHIVE - For historical/archived files
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_INSTR_DESC_FULL_ARCHIVE',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_INSTR_DESC_FULL',
pPrefix => 'ARCHIVE/CSDB/CSDB_INSTR_DESC_FULL',
pBucketUri => CT_MRDS.ENV_MANAGER.gvArchiveBucketUri,
pEncoding => 'WE8MSWIN1252'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_INSTR_DESC_FULL_ARCHIVE with encoding WE8MSWIN1252');
END;
/
PROMPT ========================================================================
PROMPT Step 4: Create CSDB_INSTR_RAT_FULL External Tables with Encoding
PROMPT ========================================================================
-- INBOX - For incoming files awaiting processing
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_INSTR_RAT_FULL_INBOX',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_INSTR_RAT_FULL',
pPrefix => 'INBOX/CSDB/FullRatingsDissemination/CSDB_INSTR_RAT_FULL',
pBucketUri => CT_MRDS.ENV_MANAGER.gvInboxBucketUri,
pEncoding => 'WE8MSWIN1252'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_INSTR_RAT_FULL_INBOX with encoding WE8MSWIN1252');
END;
/
-- ODS - For processed files in operational data store
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_INSTR_RAT_FULL_ODS',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_INSTR_RAT_FULL',
pPrefix => 'ODS/CSDB/CSDB_INSTR_RAT_FULL',
pBucketUri => CT_MRDS.ENV_MANAGER.gvDataBucketUri,
pEncoding => 'WE8MSWIN1252'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_INSTR_RAT_FULL_ODS with encoding WE8MSWIN1252');
END;
/
-- ARCHIVE - For historical/archived files
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_INSTR_RAT_FULL_ARCHIVE',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_INSTR_RAT_FULL',
pPrefix => 'ARCHIVE/CSDB/CSDB_INSTR_RAT_FULL',
pBucketUri => CT_MRDS.ENV_MANAGER.gvArchiveBucketUri,
pEncoding => 'WE8MSWIN1252'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_INSTR_RAT_FULL_ARCHIVE with encoding WE8MSWIN1252');
END;
/
PROMPT =========================================================================
PROMPT Step 5: Create CSDB_ISSUER_DESC_FULL External Tables with Encoding
PROMPT =========================================================================
-- INBOX - For incoming files awaiting processing
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_ISSUER_DESC_FULL_INBOX',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_ISSUER_DESC_FULL',
pPrefix => 'INBOX/CSDB/FullRatingsDissemination/CSDB_ISSUER_DESC_FULL',
pBucketUri => CT_MRDS.ENV_MANAGER.gvInboxBucketUri,
pEncoding => 'WE8MSWIN1252'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_ISSUER_DESC_FULL_INBOX with encoding WE8MSWIN1252');
END;
/
-- ODS - For processed files in operational data store
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_ISSUER_DESC_FULL_ODS',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_ISSUER_DESC_FULL',
pPrefix => 'ODS/CSDB/CSDB_ISSUER_DESC_FULL',
pBucketUri => CT_MRDS.ENV_MANAGER.gvDataBucketUri,
pEncoding => 'WE8MSWIN1252'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_ISSUER_DESC_FULL_ODS with encoding WE8MSWIN1252');
END;
/
-- ARCHIVE - For historical/archived files
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_ISSUER_DESC_FULL_ARCHIVE',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_ISSUER_DESC_FULL',
pPrefix => 'ARCHIVE/CSDB/CSDB_ISSUER_DESC_FULL',
pBucketUri => CT_MRDS.ENV_MANAGER.gvArchiveBucketUri,
pEncoding => 'WE8MSWIN1252'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_ISSUER_DESC_FULL_ARCHIVE with encoding WE8MSWIN1252');
END;
/
PROMPT =========================================================================
PROMPT Step 6: Create CSDB_ISSUER_RAT_FULL External Tables with Encoding
PROMPT =========================================================================
-- INBOX - For incoming files awaiting processing
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_ISSUER_RAT_FULL_INBOX',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_ISSUER_RAT_FULL',
pPrefix => 'INBOX/CSDB/FullRatingsDissemination/CSDB_ISSUER_RAT_FULL',
pBucketUri => CT_MRDS.ENV_MANAGER.gvInboxBucketUri,
pEncoding => 'WE8MSWIN1252'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_ISSUER_RAT_FULL_INBOX with encoding WE8MSWIN1252');
END;
/
-- ODS - For processed files in operational data store
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_ISSUER_RAT_FULL_ODS',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_ISSUER_RAT_FULL',
pPrefix => 'ODS/CSDB/CSDB_ISSUER_RAT_FULL',
pBucketUri => CT_MRDS.ENV_MANAGER.gvDataBucketUri,
pEncoding => 'WE8MSWIN1252'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_ISSUER_RAT_FULL_ODS with encoding WE8MSWIN1252');
END;
/
-- ARCHIVE - For historical/archived files
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_ISSUER_RAT_FULL_ARCHIVE',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_ISSUER_RAT_FULL',
pPrefix => 'ARCHIVE/CSDB/CSDB_ISSUER_RAT_FULL',
pBucketUri => CT_MRDS.ENV_MANAGER.gvArchiveBucketUri,
pEncoding => 'WE8MSWIN1252'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_ISSUER_RAT_FULL_ARCHIVE with encoding WE8MSWIN1252');
END;
/
PROMPT =========================================================================
PROMPT Recreate External Tables with Encoding - COMPLETED
PROMPT =========================================================================
PROMPT
PROMPT Summary:
PROMPT - CSDB_DEBT tables: 3 created (INBOX, ODS, ARCHIVE)
PROMPT - CSDB_DEBT_DAILY tables: 3 created (INBOX, ODS, ARCHIVE)
PROMPT - CSDB_INSTR_DESC_FULL tables: 3 created (INBOX, ODS, ARCHIVE)
PROMPT - CSDB_INSTR_RAT_FULL tables: 3 created (INBOX, ODS, ARCHIVE)
PROMPT - CSDB_ISSUER_DESC_FULL tables: 3 created (INBOX, ODS, ARCHIVE)
PROMPT - CSDB_ISSUER_RAT_FULL tables: 3 created (INBOX, ODS, ARCHIVE)
PROMPT - Total: 18 external tables created with WE8MSWIN1252 encoding
PROMPT
PROMPT Next Step: Run 03_MARS_1049_ADHOC_verify_external_tables.sql
PROMPT =========================================================================

View File

@@ -0,0 +1,184 @@
--=============================================================================================================================
-- MARS-1049-ADHOC: Verify CSDB External Tables Creation
--=============================================================================================================================
-- Purpose: Verify all 18 CSDB external tables exist with correct configuration
-- Author: Grzegorz Michalski
-- Date: 2025-11-26
-- Related: MARS-1049 (CSV Encoding Support), MARS-821 (Original CSDB Setup)
--
-- Expected Tables (18 total):
-- CSDB_DEBT: INBOX, ODS, ARCHIVE
-- CSDB_DEBT_DAILY: INBOX, ODS, ARCHIVE
-- CSDB_INSTR_DESC_FULL: INBOX, ODS, ARCHIVE
-- CSDB_INSTR_RAT_FULL: INBOX, ODS, ARCHIVE
-- CSDB_ISSUER_DESC_FULL: INBOX, ODS, ARCHIVE
-- CSDB_ISSUER_RAT_FULL: INBOX, ODS, ARCHIVE
--=============================================================================================================================
SET LINESIZE 200
SET PAGESIZE 100
SET SERVEROUTPUT ON
PROMPT =========================================================================
PROMPT MARS-1049-ADHOC: External Tables Verification Report
PROMPT =========================================================================
PROMPT
PROMPT ========================================
PROMPT Step 1: Check External Tables Existence
PROMPT ========================================
SELECT
owner,
table_name,
CASE
WHEN table_name LIKE '%_INBOX' THEN 'INBOX'
WHEN table_name LIKE '%_ODS' THEN 'ODS'
WHEN table_name LIKE '%_ARCHIVE' THEN 'ARCHIVE'
END AS bucket_area,
default_directory_name AS directory,
type_name
FROM all_external_tables
WHERE owner = 'ODS'
AND table_name IN (
'CSDB_DEBT_ARCHIVE',
'CSDB_DEBT_INBOX',
'CSDB_DEBT_ODS',
'CSDB_DEBT_DAILY_ARCHIVE',
'CSDB_DEBT_DAILY_INBOX',
'CSDB_DEBT_DAILY_ODS',
'CSDB_INSTR_DESC_FULL_ARCHIVE',
'CSDB_INSTR_DESC_FULL_INBOX',
'CSDB_INSTR_DESC_FULL_ODS',
'CSDB_INSTR_RAT_FULL_ARCHIVE',
'CSDB_INSTR_RAT_FULL_INBOX',
'CSDB_INSTR_RAT_FULL_ODS',
'CSDB_ISSUER_DESC_FULL_ARCHIVE',
'CSDB_ISSUER_DESC_FULL_INBOX',
'CSDB_ISSUER_DESC_FULL_ODS',
'CSDB_ISSUER_RAT_FULL_ARCHIVE',
'CSDB_ISSUER_RAT_FULL_INBOX',
'CSDB_ISSUER_RAT_FULL_ODS'
)
ORDER BY table_name;
PROMPT
PROMPT ========================================
PROMPT Step 2: Verify Table Counts by Category
PROMPT ========================================
SELECT
CASE
WHEN table_name LIKE 'CSDB_DEBT_DAILY%' THEN 'CSDB_DEBT_DAILY'
WHEN table_name LIKE 'CSDB_DEBT%' THEN 'CSDB_DEBT'
WHEN table_name LIKE 'CSDB_INSTR_DESC_FULL%' THEN 'CSDB_INSTR_DESC_FULL'
WHEN table_name LIKE 'CSDB_INSTR_RAT_FULL%' THEN 'CSDB_INSTR_RAT_FULL'
WHEN table_name LIKE 'CSDB_ISSUER_DESC_FULL%' THEN 'CSDB_ISSUER_DESC_FULL'
WHEN table_name LIKE 'CSDB_ISSUER_RAT_FULL%' THEN 'CSDB_ISSUER_RAT_FULL'
END AS table_category,
COUNT(*) AS table_count,
CASE WHEN COUNT(*) = 3 THEN 'COMPLETE' ELSE 'INCOMPLETE' END AS status
FROM all_external_tables
WHERE owner = 'ODS'
AND table_name IN (
'CSDB_DEBT_ARCHIVE', 'CSDB_DEBT_INBOX', 'CSDB_DEBT_ODS',
'CSDB_DEBT_DAILY_ARCHIVE', 'CSDB_DEBT_DAILY_INBOX', 'CSDB_DEBT_DAILY_ODS',
'CSDB_INSTR_DESC_FULL_ARCHIVE', 'CSDB_INSTR_DESC_FULL_INBOX', 'CSDB_INSTR_DESC_FULL_ODS',
'CSDB_INSTR_RAT_FULL_ARCHIVE', 'CSDB_INSTR_RAT_FULL_INBOX', 'CSDB_INSTR_RAT_FULL_ODS',
'CSDB_ISSUER_DESC_FULL_ARCHIVE', 'CSDB_ISSUER_DESC_FULL_INBOX', 'CSDB_ISSUER_DESC_FULL_ODS',
'CSDB_ISSUER_RAT_FULL_ARCHIVE', 'CSDB_ISSUER_RAT_FULL_INBOX', 'CSDB_ISSUER_RAT_FULL_ODS'
)
GROUP BY
CASE
WHEN table_name LIKE 'CSDB_DEBT_DAILY%' THEN 'CSDB_DEBT_DAILY'
WHEN table_name LIKE 'CSDB_DEBT%' THEN 'CSDB_DEBT'
WHEN table_name LIKE 'CSDB_INSTR_DESC_FULL%' THEN 'CSDB_INSTR_DESC_FULL'
WHEN table_name LIKE 'CSDB_INSTR_RAT_FULL%' THEN 'CSDB_INSTR_RAT_FULL'
WHEN table_name LIKE 'CSDB_ISSUER_DESC_FULL%' THEN 'CSDB_ISSUER_DESC_FULL'
WHEN table_name LIKE 'CSDB_ISSUER_RAT_FULL%' THEN 'CSDB_ISSUER_RAT_FULL'
END
ORDER BY table_category;
PROMPT
PROMPT ========================================
PROMPT Step 3: Overall Summary
PROMPT ========================================
DECLARE
v_total_count NUMBER;
v_expected_count NUMBER := 18;
v_status VARCHAR2(20);
BEGIN
SELECT COUNT(*) INTO v_total_count
FROM all_external_tables
WHERE owner = 'ODS'
AND table_name IN (
'CSDB_DEBT_ARCHIVE', 'CSDB_DEBT_INBOX', 'CSDB_DEBT_ODS',
'CSDB_DEBT_DAILY_ARCHIVE', 'CSDB_DEBT_DAILY_INBOX', 'CSDB_DEBT_DAILY_ODS',
'CSDB_INSTR_DESC_FULL_ARCHIVE', 'CSDB_INSTR_DESC_FULL_INBOX', 'CSDB_INSTR_DESC_FULL_ODS',
'CSDB_INSTR_RAT_FULL_ARCHIVE', 'CSDB_INSTR_RAT_FULL_INBOX', 'CSDB_INSTR_RAT_FULL_ODS',
'CSDB_ISSUER_DESC_FULL_ARCHIVE', 'CSDB_ISSUER_DESC_FULL_INBOX', 'CSDB_ISSUER_DESC_FULL_ODS',
'CSDB_ISSUER_RAT_FULL_ARCHIVE', 'CSDB_ISSUER_RAT_FULL_INBOX', 'CSDB_ISSUER_RAT_FULL_ODS'
);
IF v_total_count = v_expected_count THEN
v_status := 'SUCCESS';
ELSE
v_status := 'FAILED';
END IF;
DBMS_OUTPUT.PUT_LINE('=========================================================================');
DBMS_OUTPUT.PUT_LINE('VERIFICATION STATUS: ' || v_status);
DBMS_OUTPUT.PUT_LINE('=========================================================================');
DBMS_OUTPUT.PUT_LINE('Expected Tables: ' || v_expected_count);
DBMS_OUTPUT.PUT_LINE('Found Tables: ' || v_total_count);
DBMS_OUTPUT.PUT_LINE('Missing Tables: ' || (v_expected_count - v_total_count));
DBMS_OUTPUT.PUT_LINE('=========================================================================');
IF v_total_count = v_expected_count THEN
DBMS_OUTPUT.PUT_LINE('');
DBMS_OUTPUT.PUT_LINE('All 18 CSDB external tables created successfully with WE8MSWIN1252 encoding');
DBMS_OUTPUT.PUT_LINE('MARS-1049-ADHOC deployment completed successfully');
ELSE
DBMS_OUTPUT.PUT_LINE('');
DBMS_OUTPUT.PUT_LINE('WARNING: Not all tables were created. Review errors from step 02.');
RAISE_APPLICATION_ERROR(-20001, 'External tables verification failed');
END IF;
END;
/
PROMPT
PROMPT ========================================
PROMPT Step 4: Check Missing Tables (if any)
PROMPT ========================================
WITH expected_tables AS (
SELECT 'CSDB_DEBT_ARCHIVE' AS table_name FROM DUAL UNION ALL
SELECT 'CSDB_DEBT_INBOX' FROM DUAL UNION ALL
SELECT 'CSDB_DEBT_ODS' FROM DUAL UNION ALL
SELECT 'CSDB_DEBT_DAILY_ARCHIVE' FROM DUAL UNION ALL
SELECT 'CSDB_DEBT_DAILY_INBOX' FROM DUAL UNION ALL
SELECT 'CSDB_DEBT_DAILY_ODS' FROM DUAL UNION ALL
SELECT 'CSDB_INSTR_DESC_FULL_ARCHIVE' FROM DUAL UNION ALL
SELECT 'CSDB_INSTR_DESC_FULL_INBOX' FROM DUAL UNION ALL
SELECT 'CSDB_INSTR_DESC_FULL_ODS' FROM DUAL UNION ALL
SELECT 'CSDB_INSTR_RAT_FULL_ARCHIVE' FROM DUAL UNION ALL
SELECT 'CSDB_INSTR_RAT_FULL_INBOX' FROM DUAL UNION ALL
SELECT 'CSDB_INSTR_RAT_FULL_ODS' FROM DUAL UNION ALL
SELECT 'CSDB_ISSUER_DESC_FULL_ARCHIVE' FROM DUAL UNION ALL
SELECT 'CSDB_ISSUER_DESC_FULL_INBOX' FROM DUAL UNION ALL
SELECT 'CSDB_ISSUER_DESC_FULL_ODS' FROM DUAL UNION ALL
SELECT 'CSDB_ISSUER_RAT_FULL_ARCHIVE' FROM DUAL UNION ALL
SELECT 'CSDB_ISSUER_RAT_FULL_INBOX' FROM DUAL UNION ALL
SELECT 'CSDB_ISSUER_RAT_FULL_ODS' FROM DUAL
)
SELECT e.table_name AS missing_table
FROM expected_tables e
LEFT JOIN all_external_tables t ON e.table_name = t.table_name AND t.owner = 'ODS'
WHERE t.table_name IS NULL
ORDER BY e.table_name;
PROMPT
PROMPT =========================================================================
PROMPT Verification Report Complete
PROMPT =========================================================================

View File

@@ -0,0 +1,84 @@
--=============================================================================================================================
-- MARS-1049-ADHOC: Rollback CSDB Encoding Configuration
--=============================================================================================================================
-- Purpose: Rollback CSDB encoding from WE8MSWIN1252 to UTF8
-- Author: Grzegorz Michalski
-- Date: 2025-11-26
-- Related: MARS-1049 (CSV Encoding Support), MARS-821 (Original CSDB Setup)
--
-- Use Case: Restore original UTF8 encoding if WE8MSWIN1252 causes issues
--
-- WARNING: External tables must be recreated after encoding change
--=============================================================================================================================
SET SERVEROUTPUT ON
PROMPT =========================================================================
PROMPT MARS-1049-ADHOC: Rollback CSDB Encoding to UTF8
PROMPT =========================================================================
-- Step 1: Show current state
PROMPT
PROMPT Step 1: Current CSDB encoding configuration
PROMPT ========================================
SELECT
TABLE_ID,
SOURCE_FILE_ID,
ENCODING AS CURRENT_ENCODING,
TEMPLATE_TABLE_NAME
FROM CT_MRDS.A_SOURCE_FILE_CONFIG
WHERE TEMPLATE_TABLE_NAME LIKE '%CSDB%'
ORDER BY TABLE_ID, SOURCE_FILE_ID;
PROMPT
PROMPT Step 2: Rollback CSDB configurations to UTF8
PROMPT ========================================
-- Rollback all CSDB configurations to UTF8 encoding
UPDATE /*+ NOPARALLEL */ CT_MRDS.A_SOURCE_FILE_CONFIG
SET ENCODING = 'UTF8'
WHERE TEMPLATE_TABLE_NAME LIKE '%CSDB%';
PROMPT Rolled back CSDB configurations to UTF8 encoding
-- Commit changes
COMMIT;
PROMPT
PROMPT Step 3: Verify rolled back encoding configuration
PROMPT ========================================
SELECT
TABLE_ID,
SOURCE_FILE_ID,
ENCODING AS RESTORED_ENCODING,
TEMPLATE_TABLE_NAME
FROM CT_MRDS.A_SOURCE_FILE_CONFIG
WHERE TEMPLATE_TABLE_NAME LIKE '%CSDB%'
ORDER BY TABLE_ID, SOURCE_FILE_ID;
PROMPT
PROMPT Step 4: Overall encoding distribution
PROMPT ========================================
SELECT
ENCODING,
COUNT(*) AS CONFIG_COUNT,
LISTAGG(DISTINCT TABLE_ID, ', ') WITHIN GROUP (ORDER BY TABLE_ID) AS TABLES
FROM CT_MRDS.A_SOURCE_FILE_CONFIG
GROUP BY ENCODING
ORDER BY ENCODING;
PROMPT
PROMPT =========================================================================
PROMPT CSDB Encoding Rollback - COMPLETED
PROMPT =========================================================================
PROMPT
PROMPT Summary:
PROMPT - All CSDB configurations rolled back to UTF8
PROMPT - Original encoding restored
PROMPT
PROMPT IMPORTANT: External tables must be recreated with new encoding
PROMPT - Use MARS-821 scripts to recreate external tables with UTF8
PROMPT =========================================================================

View File

@@ -0,0 +1,297 @@
--=============================================================================================================================
-- MARS-1049-ADHOC: Recreate External Tables with UTF8 Encoding (Rollback Step)
--=============================================================================================================================
-- Purpose: Recreate CSDB external tables with UTF8 encoding (original encoding)
-- Author: Grzegorz Michalski
-- Date: 2025-11-26
-- Related: MARS-1049 (CSV Encoding Support), MARS-821 (Original CSDB Setup)
--
-- Tables to be created (18 total with UTF8 encoding):
-- CSDB_DEBT: INBOX, ODS, ARCHIVE
-- CSDB_DEBT_DAILY: INBOX, ODS, ARCHIVE
-- CSDB_INSTR_DESC_FULL: INBOX, ODS, ARCHIVE
-- CSDB_INSTR_RAT_FULL: INBOX, ODS, ARCHIVE
-- CSDB_ISSUER_DESC_FULL: INBOX, ODS, ARCHIVE
-- CSDB_ISSUER_RAT_FULL: INBOX, ODS, ARCHIVE
--
-- Prerequisites:
-- - Template tables must exist in CT_ET_TEMPLATES schema
-- - FILE_MANAGER_ODS v2.1.0+ with pEncoding parameter support
-- - Proper bucket URIs configured in ENV_MANAGER
--=============================================================================================================================
SET SERVEROUTPUT ON
PROMPT ========================================================
PROMPT Step 1: Create CSDB_DEBT External Tables with UTF8
PROMPT ========================================================
-- INBOX - For incoming files awaiting processing
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_DEBT_INBOX',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_DEBT',
pPrefix => 'INBOX/CSDB/CentralizedSecuritiesDissemination/CSDB_DEBT',
pBucketUri => CT_MRDS.ENV_MANAGER.gvInboxBucketUri,
pEncoding => 'UTF8'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_DEBT_INBOX with encoding UTF8');
END;
/
-- ODS - For processed files in operational data store
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_DEBT_ODS',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_DEBT',
pPrefix => 'ODS/CSDB/CSDB_DEBT',
pBucketUri => CT_MRDS.ENV_MANAGER.gvDataBucketUri,
pEncoding => 'UTF8'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_DEBT_ODS with encoding UTF8');
END;
/
-- ARCHIVE - For historical/archived files
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_DEBT_ARCHIVE',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_DEBT',
pPrefix => 'ARCHIVE/CSDB/CSDB_DEBT',
pBucketUri => CT_MRDS.ENV_MANAGER.gvArchiveBucketUri,
pEncoding => 'UTF8'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_DEBT_ARCHIVE with encoding UTF8');
END;
/
PROMPT ================================================================
PROMPT Step 2: Create CSDB_DEBT_DAILY External Tables with UTF8
PROMPT ================================================================
-- INBOX - For incoming files awaiting processing
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_DEBT_DAILY_INBOX',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_DEBT_DAILY',
pPrefix => 'INBOX/CSDB/CentralizedSecuritiesDailyReferenceDataDissemination/CSDB_DEBT_DAILY',
pBucketUri => CT_MRDS.ENV_MANAGER.gvInboxBucketUri,
pEncoding => 'UTF8'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_DEBT_DAILY_INBOX with encoding UTF8');
END;
/
-- ODS - For processed files in operational data store
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_DEBT_DAILY_ODS',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_DEBT_DAILY',
pPrefix => 'ODS/CSDB/CSDB_DEBT_DAILY',
pBucketUri => CT_MRDS.ENV_MANAGER.gvDataBucketUri,
pEncoding => 'UTF8'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_DEBT_DAILY_ODS with encoding UTF8');
END;
/
-- ARCHIVE - For historical/archived files
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_DEBT_DAILY_ARCHIVE',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_DEBT_DAILY',
pPrefix => 'ARCHIVE/CSDB/CSDB_DEBT_DAILY',
pBucketUri => CT_MRDS.ENV_MANAGER.gvArchiveBucketUri,
pEncoding => 'UTF8'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_DEBT_DAILY_ARCHIVE with encoding UTF8');
END;
/
PROMPT ========================================================================
PROMPT Step 3: Create CSDB_INSTR_DESC_FULL External Tables with UTF8
PROMPT ========================================================================
-- INBOX - For incoming files awaiting processing
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_INSTR_DESC_FULL_INBOX',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_INSTR_DESC_FULL',
pPrefix => 'INBOX/CSDB/FullRatingsDissemination/CSDB_INSTR_DESC_FULL',
pBucketUri => CT_MRDS.ENV_MANAGER.gvInboxBucketUri,
pEncoding => 'UTF8'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_INSTR_DESC_FULL_INBOX with encoding UTF8');
END;
/
-- ODS - For processed files in operational data store
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_INSTR_DESC_FULL_ODS',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_INSTR_DESC_FULL',
pPrefix => 'ODS/CSDB/CSDB_INSTR_DESC_FULL',
pBucketUri => CT_MRDS.ENV_MANAGER.gvDataBucketUri,
pEncoding => 'UTF8'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_INSTR_DESC_FULL_ODS with encoding UTF8');
END;
/
-- ARCHIVE - For historical/archived files
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_INSTR_DESC_FULL_ARCHIVE',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_INSTR_DESC_FULL',
pPrefix => 'ARCHIVE/CSDB/CSDB_INSTR_DESC_FULL',
pBucketUri => CT_MRDS.ENV_MANAGER.gvArchiveBucketUri,
pEncoding => 'UTF8'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_INSTR_DESC_FULL_ARCHIVE with encoding UTF8');
END;
/
PROMPT ========================================================================
PROMPT Step 4: Create CSDB_INSTR_RAT_FULL External Tables with UTF8
PROMPT ========================================================================
-- INBOX - For incoming files awaiting processing
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_INSTR_RAT_FULL_INBOX',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_INSTR_RAT_FULL',
pPrefix => 'INBOX/CSDB/FullRatingsDissemination/CSDB_INSTR_RAT_FULL',
pBucketUri => CT_MRDS.ENV_MANAGER.gvInboxBucketUri,
pEncoding => 'UTF8'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_INSTR_RAT_FULL_INBOX with encoding UTF8');
END;
/
-- ODS - For processed files in operational data store
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_INSTR_RAT_FULL_ODS',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_INSTR_RAT_FULL',
pPrefix => 'ODS/CSDB/CSDB_INSTR_RAT_FULL',
pBucketUri => CT_MRDS.ENV_MANAGER.gvDataBucketUri,
pEncoding => 'UTF8'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_INSTR_RAT_FULL_ODS with encoding UTF8');
END;
/
-- ARCHIVE - For historical/archived files
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_INSTR_RAT_FULL_ARCHIVE',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_INSTR_RAT_FULL',
pPrefix => 'ARCHIVE/CSDB/CSDB_INSTR_RAT_FULL',
pBucketUri => CT_MRDS.ENV_MANAGER.gvArchiveBucketUri,
pEncoding => 'UTF8'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_INSTR_RAT_FULL_ARCHIVE with encoding UTF8');
END;
/
PROMPT =========================================================================
PROMPT Step 5: Create CSDB_ISSUER_DESC_FULL External Tables with UTF8
PROMPT =========================================================================
-- INBOX - For incoming files awaiting processing
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_ISSUER_DESC_FULL_INBOX',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_ISSUER_DESC_FULL',
pPrefix => 'INBOX/CSDB/FullRatingsDissemination/CSDB_ISSUER_DESC_FULL',
pBucketUri => CT_MRDS.ENV_MANAGER.gvInboxBucketUri,
pEncoding => 'UTF8'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_ISSUER_DESC_FULL_INBOX with encoding UTF8');
END;
/
-- ODS - For processed files in operational data store
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_ISSUER_DESC_FULL_ODS',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_ISSUER_DESC_FULL',
pPrefix => 'ODS/CSDB/CSDB_ISSUER_DESC_FULL',
pBucketUri => CT_MRDS.ENV_MANAGER.gvDataBucketUri,
pEncoding => 'UTF8'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_ISSUER_DESC_FULL_ODS with encoding UTF8');
END;
/
-- ARCHIVE - For historical/archived files
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_ISSUER_DESC_FULL_ARCHIVE',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_ISSUER_DESC_FULL',
pPrefix => 'ARCHIVE/CSDB/CSDB_ISSUER_DESC_FULL',
pBucketUri => CT_MRDS.ENV_MANAGER.gvArchiveBucketUri,
pEncoding => 'UTF8'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_ISSUER_DESC_FULL_ARCHIVE with encoding UTF8');
END;
/
PROMPT =========================================================================
PROMPT Step 6: Create CSDB_ISSUER_RAT_FULL External Tables with UTF8
PROMPT =========================================================================
-- INBOX - For incoming files awaiting processing
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_ISSUER_RAT_FULL_INBOX',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_ISSUER_RAT_FULL',
pPrefix => 'INBOX/CSDB/FullRatingsDissemination/CSDB_ISSUER_RAT_FULL',
pBucketUri => CT_MRDS.ENV_MANAGER.gvInboxBucketUri,
pEncoding => 'UTF8'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_ISSUER_RAT_FULL_INBOX with encoding UTF8');
END;
/
-- ODS - For processed files in operational data store
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_ISSUER_RAT_FULL_ODS',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_ISSUER_RAT_FULL',
pPrefix => 'ODS/CSDB/CSDB_ISSUER_RAT_FULL',
pBucketUri => CT_MRDS.ENV_MANAGER.gvDataBucketUri,
pEncoding => 'UTF8'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_ISSUER_RAT_FULL_ODS with encoding UTF8');
END;
/
-- ARCHIVE - For historical/archived files
BEGIN
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
pTableName => 'CSDB_ISSUER_RAT_FULL_ARCHIVE',
pTemplateTableName => 'CT_ET_TEMPLATES.CSDB_ISSUER_RAT_FULL',
pPrefix => 'ARCHIVE/CSDB/CSDB_ISSUER_RAT_FULL',
pBucketUri => CT_MRDS.ENV_MANAGER.gvArchiveBucketUri,
pEncoding => 'UTF8'
);
DBMS_OUTPUT.PUT_LINE('SUCCESS: Created ODS.CSDB_ISSUER_RAT_FULL_ARCHIVE with encoding UTF8');
END;
/
PROMPT =========================================================================
PROMPT Recreate External Tables with UTF8 - COMPLETED
PROMPT =========================================================================
PROMPT
PROMPT Summary:
PROMPT - CSDB_DEBT tables: 3 created (INBOX, ODS, ARCHIVE)
PROMPT - CSDB_DEBT_DAILY tables: 3 created (INBOX, ODS, ARCHIVE)
PROMPT - CSDB_INSTR_DESC_FULL tables: 3 created (INBOX, ODS, ARCHIVE)
PROMPT - CSDB_INSTR_RAT_FULL tables: 3 created (INBOX, ODS, ARCHIVE)
PROMPT - CSDB_ISSUER_DESC_FULL tables: 3 created (INBOX, ODS, ARCHIVE)
PROMPT - CSDB_ISSUER_RAT_FULL tables: 3 created (INBOX, ODS, ARCHIVE)
PROMPT - Total: 18 external tables created with UTF8 encoding
PROMPT
PROMPT Next Step: Run 03_MARS_1049_ADHOC_verify_external_tables.sql
PROMPT =========================================================================

View File

@@ -0,0 +1,102 @@
--=============================================================================================================================
-- MARS-1049-ADHOC: Master Installation Script
--=============================================================================================================================
-- Purpose: Execute all MARS-1049-ADHOC scripts to recreate CSDB external tables with encoding support
-- Author: Grzegorz Michalski
-- Date: 2025-11-26
-- Related: MARS-1049 (CSV Encoding Support), MARS-821 (Original CSDB Setup)
--
-- Prerequisites:
-- - FILE_MANAGER v3.2.1+ with pEncoding parameter support
-- - FILE_MANAGER_ODS v2.1.0+ with pEncoding parameter support
-- - Template tables exist in CT_ET_TEMPLATES schema
-- - Proper bucket URIs configured in ENV_MANAGER
-- - Execute as ODS user or with sufficient privileges
--
-- Deployment Sequence:
-- Step 1: Drop existing CSDB external tables
-- Step 2: Recreate all 18 CSDB external tables with WE8MSWIN1252 encoding
-- Step 3: Verify all tables created successfully
--
-- Rollback:
-- No rollback script provided - tables can be recreated using MARS-821 scripts if needed
--=============================================================================================================================
SET SERVEROUTPUT ON
SET ECHO ON
SET VERIFY OFF
-- ===================================================================
-- MARS-1049-ADHOC INSTALL SCRIPT: CSDB External Tables Encoding Update
-- ===================================================================
-- Purpose: Recreate CSDB external tables with WE8MSWIN1252 encoding
-- Author: Grzegorz Michalski
-- Date: 2025-11-26
-- Version: 1.0.0
-- Dynamic spool file generation (using SYS_CONTEXT - no DBA privileges required)
var filename VARCHAR2(100)
BEGIN
:filename := 'INSTALL_MARS_1049_ADHOC_' || SYS_CONTEXT('USERENV', 'CON_NAME') || '_' || TO_CHAR(SYSDATE,'YYYYMMDD_HH24MISS') || '.log';
END;
/
column filename new_value _filename
select :filename filename from dual;
spool &_filename
PROMPT =========================================================================
PROMPT MARS-1049-ADHOC: CSDB External Tables Encoding Update
PROMPT =========================================================================
PROMPT
PROMPT This script will:
PROMPT - Update CSDB configurations to WE8MSWIN1252 encoding
PROMPT - Drop existing CSDB external tables (if any)
PROMPT - Recreate 18 CSDB external tables with WE8MSWIN1252 encoding
PROMPT - Verify successful creation
PROMPT
PROMPT Expected Duration: 2-3 minutes
PROMPT =========================================================================
PROMPT
PROMPT =========================================================================
PROMPT Step 0: Update CSDB Encoding Configuration
PROMPT =========================================================================
@@00_MARS_1049_ADHOC_update_encoding.sql
PROMPT
PROMPT =========================================================================
PROMPT Step 1: Drop Existing CSDB External Tables
PROMPT =========================================================================
@@01_MARS_1049_ADHOC_drop_external_tables.sql
PROMPT
PROMPT =========================================================================
PROMPT Step 2: Recreate CSDB External Tables with Encoding
PROMPT =========================================================================
@@02_MARS_1049_ADHOC_recreate_external_tables.sql
PROMPT
PROMPT =========================================================================
PROMPT Step 3: Verify External Tables Creation
PROMPT =========================================================================
@@03_MARS_1049_ADHOC_verify_external_tables.sql
PROMPT
PROMPT =========================================================================
PROMPT MARS-1049-ADHOC Installation - COMPLETED
PROMPT =========================================================================
PROMPT Check the log file for complete installation details.
PROMPT =========================================================================
spool off
PROMPT
PROMPT =========================================================================
PROMPT MARS-1049-ADHOC Installation Complete
PROMPT =========================================================================
PROMPT
PROMPT All CSDB external tables have been updated with WE8MSWIN1252 encoding.
PROMPT
PROMPT =========================================================================
quit;

View File

@@ -0,0 +1,106 @@
--=============================================================================================================================
-- MARS-1049-ADHOC: Master Rollback Script
--=============================================================================================================================
-- Purpose: Rollback CSDB external tables encoding changes from WE8MSWIN1252 to UTF8
-- Author: Grzegorz Michalski
-- Date: 2025-11-26
-- Related: MARS-1049 (CSV Encoding Support), MARS-821 (Original CSDB Setup)
--
-- Prerequisites:
-- - FILE_MANAGER v3.2.1+ with pEncoding parameter support
-- - FILE_MANAGER_ODS v2.1.0+ with pEncoding parameter support
-- - Template tables exist in CT_ET_TEMPLATES schema
-- - Proper bucket URIs configured in ENV_MANAGER
-- - Execute as ODS user or with sufficient privileges
--
-- Rollback Sequence:
-- Step 1: Rollback CSDB configurations to UTF8 encoding
-- Step 2: Drop CSDB external tables with WE8MSWIN1252 encoding
-- Step 3: Recreate CSDB external tables with UTF8 encoding (using MARS-821 patterns)
-- Step 4: Verify all tables created successfully
--
-- Post-Rollback:
-- - CSDB configurations restored to UTF8
-- - External tables recreated with UTF8 encoding
-- - System restored to pre-MARS-1049-ADHOC state
--=============================================================================================================================
SET SERVEROUTPUT ON
SET ECHO ON
SET VERIFY OFF
-- ===================================================================
-- MARS-1049-ADHOC ROLLBACK SCRIPT: Restore UTF8 Encoding for CSDB
-- ===================================================================
-- Purpose: Rollback CSDB external tables to UTF8 encoding
-- Author: Grzegorz Michalski
-- Date: 2025-11-26
-- Version: 1.0.0
-- Dynamic spool file generation (using SYS_CONTEXT - no DBA privileges required)
var filename VARCHAR2(100)
BEGIN
:filename := 'ROLLBACK_MARS_1049_ADHOC_' || SYS_CONTEXT('USERENV', 'CON_NAME') || '_' || TO_CHAR(SYSDATE,'YYYYMMDD_HH24MISS') || '.log';
END;
/
column filename new_value _filename
select :filename filename from dual;
spool &_filename
PROMPT =========================================================================
PROMPT MARS-1049-ADHOC: Rollback to UTF8 Encoding
PROMPT =========================================================================
PROMPT
PROMPT This script will:
PROMPT - Rollback CSDB configurations to UTF8 encoding
PROMPT - Drop existing CSDB external tables (WE8MSWIN1252)
PROMPT - Recreate 18 CSDB external tables with UTF8 encoding
PROMPT - Verify successful rollback
PROMPT
PROMPT Expected Duration: 2-3 minutes
PROMPT =========================================================================
PROMPT
PROMPT =========================================================================
PROMPT Step 1: Rollback CSDB Encoding Configuration to UTF8
PROMPT =========================================================================
@@91_MARS_1049_ADHOC_rollback_encoding.sql
PROMPT
PROMPT =========================================================================
PROMPT Step 2: Drop Existing CSDB External Tables
PROMPT =========================================================================
@@01_MARS_1049_ADHOC_drop_external_tables.sql
PROMPT
PROMPT =========================================================================
PROMPT Step 3: Recreate CSDB External Tables with UTF8 Encoding
PROMPT =========================================================================
@@92_MARS_1049_ADHOC_recreate_tables_utf8.sql
PROMPT
PROMPT =========================================================================
PROMPT Step 4: Verify External Tables Creation
PROMPT =========================================================================
@@03_MARS_1049_ADHOC_verify_external_tables.sql
PROMPT
PROMPT =========================================================================
PROMPT MARS-1049-ADHOC Rollback - COMPLETED
PROMPT =========================================================================
PROMPT Check the log file for complete rollback details.
PROMPT =========================================================================
spool off
PROMPT
PROMPT =========================================================================
PROMPT MARS-1049-ADHOC Rollback Complete
PROMPT =========================================================================
PROMPT
PROMPT All CSDB external tables have been restored to UTF8 encoding.
PROMPT System returned to pre-MARS-1049-ADHOC state.
PROMPT
PROMPT =========================================================================
quit;