feat: Implement MARS-1409 changes to add ARCHIVAL_STRATEGY and ARCH_MINIMUM_AGE_MONTHS columns to A_TABLE_STAT and A_TABLE_STAT_HIST, and update FILE_ARCHIVER for handling these new fields
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
-- ====================================================================
|
||||
-- A_TABLE_STAT Table
|
||||
-- ====================================================================
|
||||
-- Purpose: Store current table statistics and archival thresholds
|
||||
-- ====================================================================
|
||||
|
||||
CREATE TABLE CT_MRDS.A_TABLE_STAT (
|
||||
A_TABLE_STAT_KEY NUMBER(38,0) PRIMARY KEY,
|
||||
A_SOURCE_FILE_CONFIG_KEY NUMBER(38,0) NOT NULL,
|
||||
TABLE_NAME VARCHAR2(200) NOT NULL,
|
||||
FILE_COUNT NUMBER(38,0),
|
||||
OVER_ARCH_THRESOLD_FILE_COUNT NUMBER(38,0),
|
||||
ROW_COUNT NUMBER(38,0),
|
||||
OVER_ARCH_THRESOLD_ROW_COUNT NUMBER(38,0),
|
||||
SIZE NUMBER(38,0),
|
||||
OVER_ARCH_THRESOLD_SIZE NUMBER(38,0),
|
||||
ARCH_THRESHOLD_DAYS NUMBER(4,0),
|
||||
CREATED TIMESTAMP(6) DEFAULT SYSTIMESTAMP,
|
||||
ARCHIVAL_STRATEGY VARCHAR2(30),
|
||||
ARCH_MINIMUM_AGE_MONTHS NUMBER(4,0),
|
||||
CONSTRAINT A_TABLE_STAT_UK1 UNIQUE(A_SOURCE_FILE_CONFIG_KEY)
|
||||
) TABLESPACE "DATA";
|
||||
|
||||
COMMENT ON COLUMN CT_MRDS.A_TABLE_STAT.ARCHIVAL_STRATEGY IS 'Archival strategy used when statistics were gathered (THRESHOLD_BASED, MINIMUM_AGE_MONTHS, HYBRID). Populated by FILE_ARCHIVER.GATHER_TABLE_STAT (MARS-1409)';
|
||||
COMMENT ON COLUMN CT_MRDS.A_TABLE_STAT.ARCH_MINIMUM_AGE_MONTHS IS 'Minimum age threshold in months used when statistics were gathered. Populated for MINIMUM_AGE_MONTHS and HYBRID strategies; NULL for THRESHOLD_BASED. Complements ARCH_THRESHOLD_DAYS. Populated by FILE_ARCHIVER.GATHER_TABLE_STAT (MARS-1409)';
|
||||
|
||||
-- Unique constraint index (from production export)
|
||||
CREATE UNIQUE INDEX "CT_MRDS"."A_TABLE_STAT_UK1"
|
||||
ON "CT_MRDS"."A_TABLE_STAT" ("A_SOURCE_FILE_CONFIG_KEY")
|
||||
TABLESPACE "DATA";
|
||||
@@ -0,0 +1,24 @@
|
||||
-- ====================================================================
|
||||
-- A_TABLE_STAT_HIST Table
|
||||
-- ====================================================================
|
||||
-- Purpose: Store historical table statistics for trend analysis
|
||||
-- ====================================================================
|
||||
|
||||
CREATE TABLE CT_MRDS.A_TABLE_STAT_HIST (
|
||||
A_TABLE_STAT_HIST_KEY NUMBER(38,0) PRIMARY KEY,
|
||||
A_SOURCE_FILE_CONFIG_KEY NUMBER(38,0) NOT NULL,
|
||||
TABLE_NAME VARCHAR2(200) NOT NULL,
|
||||
FILE_COUNT NUMBER(38,0),
|
||||
OVER_ARCH_THRESOLD_FILE_COUNT NUMBER(38,0),
|
||||
ROW_COUNT NUMBER(38,0),
|
||||
OVER_ARCH_THRESOLD_ROW_COUNT NUMBER(38,0),
|
||||
SIZE NUMBER(38,0),
|
||||
OVER_ARCH_THRESOLD_SIZE NUMBER(38,0),
|
||||
ARCH_THRESHOLD_DAYS NUMBER(4,0),
|
||||
CREATED TIMESTAMP(6) DEFAULT SYSTIMESTAMP,
|
||||
ARCHIVAL_STRATEGY VARCHAR2(30),
|
||||
ARCH_MINIMUM_AGE_MONTHS NUMBER(4,0)
|
||||
) TABLESPACE "DATA";
|
||||
|
||||
COMMENT ON COLUMN CT_MRDS.A_TABLE_STAT_HIST.ARCHIVAL_STRATEGY IS 'Archival strategy used when statistics were gathered (THRESHOLD_BASED, MINIMUM_AGE_MONTHS, HYBRID). Populated by FILE_ARCHIVER.GATHER_TABLE_STAT (MARS-1409)';
|
||||
COMMENT ON COLUMN CT_MRDS.A_TABLE_STAT_HIST.ARCH_MINIMUM_AGE_MONTHS IS 'Minimum age threshold in months used when statistics were gathered. Populated for MINIMUM_AGE_MONTHS and HYBRID strategies; NULL for THRESHOLD_BASED. Complements ARCH_THRESHOLD_DAYS. Populated by FILE_ARCHIVER.GATHER_TABLE_STAT (MARS-1409)';
|
||||
@@ -498,6 +498,8 @@ AS
|
||||
,nvl(sum(case when ' || vWhereClause || ' then r.bytes else 0 end), 0) as OLD_BYTES
|
||||
,'||COALESCE(TO_CHAR(vSourceFileConfig.ARCHIVE_THRESHOLD_DAYS), 'NULL')||' as ARCHIVE_THRESHOLD_DAYS
|
||||
,systimestamp as CREATED
|
||||
,'''||vSourceFileConfig.ARCHIVAL_STRATEGY||''' as ARCHIVAL_STRATEGY
|
||||
,'||COALESCE(TO_CHAR(vSourceFileConfig.MINIMUM_AGE_MONTHS), 'NULL')||' as ARCH_MINIMUM_AGE_MONTHS
|
||||
from tmp_gr t
|
||||
join (SELECT * from DBMS_CLOUD.LIST_OBJECTS(
|
||||
credential_name => '''||CT_MRDS.ENV_MANAGER.gvCredentialName||''',
|
||||
@@ -524,6 +526,8 @@ AS
|
||||
vStats.OVER_ARCH_THRESOLD_SIZE := 0;
|
||||
vStats.ARCH_THRESHOLD_DAYS := vSourceFileConfig.ARCHIVE_THRESHOLD_DAYS;
|
||||
vStats.CREATED := SYSTIMESTAMP;
|
||||
vStats.ARCHIVAL_STRATEGY := vSourceFileConfig.ARCHIVAL_STRATEGY;
|
||||
vStats.ARCH_MINIMUM_AGE_MONTHS := vSourceFileConfig.MINIMUM_AGE_MONTHS;
|
||||
ELSE
|
||||
RAISE;
|
||||
END IF;
|
||||
|
||||
@@ -23,7 +23,7 @@ AS
|
||||
|
||||
-- Version History (Latest changes first)
|
||||
VERSION_HISTORY CONSTANT VARCHAR2(4000) :=
|
||||
'3.3.1 (2026-03-13): MARS-1468 - Fixed ORA-29913 handling in ARCHIVE_TABLE_DATA (graceful RETURN when ODS bucket is empty) and GATHER_TABLE_STAT (saves zero statistics instead of raising error)' || CHR(13)||CHR(10) ||
|
||||
'3.3.1 (2026-03-13): Fixed ORA-29913 handling in ARCHIVE_TABLE_DATA (graceful RETURN when ODS bucket is empty) and GATHER_TABLE_STAT (saves zero statistics instead of raising error)' || CHR(13)||CHR(10) ||
|
||||
'3.3.0 (2026-02-11): Added IS_ARCHIVE_ENABLED and IS_KEEP_IN_TRASH columns to A_SOURCE_FILE_CONFIG for selective archiving and config-based TRASH policy. Removed pKeepInTrash parameter (now from config). Added ARCHIVE_ALL batch procedure with 3-level granularity (config/source/all). Added GATHER_TABLE_STAT_ALL batch statistics procedure with 3-level granularity. Added RESTORE_FILE_FROM_TRASH and PURGE_TRASH_FOLDER with 3-level granularity' || CHR(13)||CHR(10) ||
|
||||
'3.2.1 (2026-02-10): Fixed status update - ARCHIVED → ARCHIVED_AND_TRASHED when moving files to TRASH folder (critical bug fix)' || CHR(13)||CHR(10) ||
|
||||
'3.2.0 (2026-02-06): Added pKeepInTrash parameter (DEFAULT TRUE) to ARCHIVE_TABLE_DATA for TRASH folder retention control - files kept in TRASH subfolder (DATA bucket) by default for safety and compliance' || CHR(13)||CHR(10) ||
|
||||
|
||||
Reference in New Issue
Block a user