- Removed CURRENT_MONTH_ONLY strategy, replacing it with MINIMUM_AGE_MONTHS = 0 for current month retention. - Updated validation logic to allow MINIMUM_AGE_MONTHS to be non-negative. - Consolidated documentation to reflect changes in archival strategies. - Adjusted rollback script to reset all archival parameters to NULL for 25 Release 01 tables. - Enhanced README and installation scripts to clarify new configuration requirements and usage examples. - Updated version history to indicate breaking changes and migration steps for existing configurations.
117 lines
5.3 KiB
Plaintext
117 lines
5.3 KiB
Plaintext
create or replace PACKAGE CT_MRDS.FILE_ARCHIVER
|
|
AUTHID CURRENT_USER
|
|
AS
|
|
/**
|
|
* General comment for package: Please put comments for functions and procedures as shown in below example.
|
|
* It is a standard.
|
|
* The structure of comment is used by GET_PACKAGE_DOCUMENTATION function
|
|
* which returns documentation text for confluence page (to Copy-Paste it).
|
|
**/
|
|
|
|
-- Example comment:
|
|
/**
|
|
* @name EX_PROCEDURE_NAME
|
|
* @desc Procedure description
|
|
* @example select LOGGING_AND_ERROR_MANAGER.EX_PROCEDURE_NAME(pParameter => 129) from dual;
|
|
* @ex_rslt Example Result
|
|
**/
|
|
|
|
-- Package Version Information (Semantic Versioning: MAJOR.MINOR.PATCH)
|
|
PACKAGE_VERSION CONSTANT VARCHAR2(10) := '3.1.0';
|
|
PACKAGE_BUILD_DATE CONSTANT VARCHAR2(20) := '2026-01-29 21:00:00';
|
|
PACKAGE_AUTHOR CONSTANT VARCHAR2(100) := 'Grzegorz Michalski';
|
|
|
|
-- Version History (Latest changes first)
|
|
VERSION_HISTORY CONSTANT VARCHAR2(4000) :=
|
|
'3.1.0 (2026-01-29): Added function overloads for ARCHIVE_TABLE_DATA and GATHER_TABLE_STAT returning SQLCODE for Python library integration' || CHR(13)||CHR(10) ||
|
|
'3.0.0 (2026-01-27): MARS-828 - Added flexible archival strategies (MINIMUM_AGE_MONTHS with 0=current month, HYBRID) via ARCHIVAL_STRATEGY configuration' || CHR(13)||CHR(10) ||
|
|
'2.0.0 (2025-10-22): Added package versioning system using centralized ENV_MANAGER functions' || CHR(13)||CHR(10) ||
|
|
'1.5.0 (2025-10-18): Enhanced ARCHIVE_TABLE_DATA with Hive-style partitioning support' || CHR(13)||CHR(10) ||
|
|
'1.0.0 (2025-09-15): Initial release with table archival and statistics gathering';
|
|
|
|
cgBL CONSTANT VARCHAR2(2) := ENV_MANAGER.cgBL;
|
|
|
|
/**
|
|
* @name ARCHIVE_TABLE_DATA
|
|
* @desc Wrapper procedure for DBMS_CLOUD.EXPORT_DATA.
|
|
* Exports data from table specified by pSourceFileConfigKey(A_SOURCE_FILE_CONFIG.A_SOURCE_FILE_CONFIG_KEY) into PARQUET file on OCI infrustructure.
|
|
* Each YEAR_MONTH pair goes to seperate file (implicit partitioning).
|
|
**/
|
|
PROCEDURE ARCHIVE_TABLE_DATA (
|
|
pSourceFileConfigKey IN CT_MRDS.A_SOURCE_FILE_CONFIG.A_SOURCE_FILE_CONFIG_KEY%TYPE
|
|
);
|
|
|
|
/**
|
|
* @name ARCHIVE_TABLE_DATA
|
|
* @desc Function overload for ARCHIVE_TABLE_DATA procedure.
|
|
* Returns SQLCODE for Python library integration.
|
|
* Calls the main ARCHIVE_TABLE_DATA procedure and captures execution result.
|
|
* @example SELECT FILE_ARCHIVER.ARCHIVE_TABLE_DATA(pSourceFileConfigKey => 123) FROM DUAL;
|
|
* @ex_rslt 0 (success) or error code
|
|
**/
|
|
FUNCTION ARCHIVE_TABLE_DATA (
|
|
pSourceFileConfigKey IN CT_MRDS.A_SOURCE_FILE_CONFIG.A_SOURCE_FILE_CONFIG_KEY%TYPE
|
|
) RETURN PLS_INTEGER;
|
|
|
|
|
|
|
|
/**
|
|
* @name GATHER_TABLE_STAT
|
|
* @desc Gather info about EXTERNAL TABLE specified by pSourceFileConfigKey parameter (A_SOURCE_FILE_CONFIG.A_SOURCE_FILE_CONFIG_KEY).
|
|
* Data is inserted into A_TABLE_STAT and A_TABLE_STAT_HIST.
|
|
**/
|
|
PROCEDURE GATHER_TABLE_STAT (
|
|
pSourceFileConfigKey IN CT_MRDS.A_SOURCE_FILE_CONFIG.A_SOURCE_FILE_CONFIG_KEY%TYPE
|
|
);
|
|
|
|
/**
|
|
* @name GATHER_TABLE_STAT
|
|
* @desc Function overload for GATHER_TABLE_STAT procedure.
|
|
* Returns SQLCODE for Python library integration.
|
|
* Calls the main GATHER_TABLE_STAT procedure and captures execution result.
|
|
* @example SELECT FILE_ARCHIVER.GATHER_TABLE_STAT(pSourceFileConfigKey => 123) FROM DUAL;
|
|
* @ex_rslt 0 (success) or error code
|
|
**/
|
|
FUNCTION GATHER_TABLE_STAT (
|
|
pSourceFileConfigKey IN CT_MRDS.A_SOURCE_FILE_CONFIG.A_SOURCE_FILE_CONFIG_KEY%TYPE
|
|
) RETURN PLS_INTEGER;
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------
|
|
-- PACKAGE VERSION MANAGEMENT FUNCTIONS
|
|
---------------------------------------------------------------------------------------------------------------------------
|
|
|
|
/**
|
|
* @name GET_VERSION
|
|
* @desc Returns the current version number of the FILE_ARCHIVER package.
|
|
* Uses semantic versioning format (MAJOR.MINOR.PATCH).
|
|
* @example SELECT FILE_ARCHIVER.GET_VERSION() FROM DUAL;
|
|
* @ex_rslt 2.0.0
|
|
**/
|
|
FUNCTION GET_VERSION RETURN VARCHAR2;
|
|
|
|
/**
|
|
* @name GET_BUILD_INFO
|
|
* @desc Returns comprehensive build information including version, build date, and author.
|
|
* Uses centralized ENV_MANAGER.GET_PACKAGE_VERSION_INFO function.
|
|
* @example SELECT FILE_ARCHIVER.GET_BUILD_INFO() FROM DUAL;
|
|
* @ex_rslt Package: FILE_ARCHIVER
|
|
* Version: 2.0.0
|
|
* Build Date: 2025-10-22 16:45:00
|
|
* Author: Grzegorz Michalski
|
|
**/
|
|
FUNCTION GET_BUILD_INFO RETURN VARCHAR2;
|
|
|
|
/**
|
|
* @name GET_VERSION_HISTORY
|
|
* @desc Returns complete version history with all releases and changes.
|
|
* Uses centralized ENV_MANAGER.FORMAT_VERSION_HISTORY function.
|
|
* @example SELECT FILE_ARCHIVER.GET_VERSION_HISTORY() FROM DUAL;
|
|
* @ex_rslt FILE_ARCHIVER Version History:
|
|
* 2.0.0 (2025-10-22): Added package versioning system...
|
|
**/
|
|
FUNCTION GET_VERSION_HISTORY RETURN VARCHAR2;
|
|
|
|
END;
|
|
|
|
/
|