| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- -- =============================================
- -- MESSAGE_QUEUE_HIS - History table for processed messages
- -- This table stores completed (success/failed) messages
- -- to keep MESSAGE_QUEUE table light for optimal performance
- -- =============================================
- CREATE TABLE LAOS_ESIM.MESSAGE_QUEUE_HIS (
- ID NUMBER(10) NOT NULL,
- MESSAGE_TYPE NUMBER(1) DEFAULT 1 NOT NULL,
- RECIPIENT VARCHAR2(500) NOT NULL,
- SUBJECT NVARCHAR2(500),
- CONTENT NCLOB,
- TEMPLATE_CODE VARCHAR2(100),
- TEMPLATE_DATA CLOB,
- PRIORITY NUMBER(1) DEFAULT 0,
- STATUS NUMBER(1) DEFAULT 0 NOT NULL,
- SCHEDULED_AT TIMESTAMP,
- PROCESSED_AT TIMESTAMP,
- RETRY_COUNT NUMBER(3) DEFAULT 0,
- MAX_RETRY NUMBER(3) DEFAULT 3,
- ERROR_MESSAGE VARCHAR2(2000),
- CREATED_BY NUMBER(10),
- CREATED_DATE TIMESTAMP DEFAULT SYSTIMESTAMP,
- MOVED_DATE TIMESTAMP DEFAULT SYSTIMESTAMP,
- CONSTRAINT MESSAGE_QUEUE_HIS_PK PRIMARY KEY (ID)
- );
- COMMENT ON TABLE LAOS_ESIM.MESSAGE_QUEUE_HIS IS 'History table for processed messages (success/failed)';
- COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE_HIS.ID IS 'Original ID from MESSAGE_QUEUE';
- COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE_HIS.MESSAGE_TYPE IS 'Message type: 1=Email, 2=SMS, 3=Push';
- COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE_HIS.RECIPIENT IS 'Recipient address (email/phone)';
- COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE_HIS.SUBJECT IS 'Email subject';
- COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE_HIS.CONTENT IS 'Message content';
- COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE_HIS.TEMPLATE_CODE IS 'Template code reference';
- COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE_HIS.TEMPLATE_DATA IS 'Template parameters (JSON)';
- COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE_HIS.PRIORITY IS 'Priority: 1=High, 0=Normal';
- COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE_HIS.STATUS IS 'Final status: 2=Success, 3=Failed';
- COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE_HIS.SCHEDULED_AT IS 'Scheduled send time';
- COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE_HIS.PROCESSED_AT IS 'Actual processing time';
- COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE_HIS.RETRY_COUNT IS 'Number of retries attempted';
- COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE_HIS.MAX_RETRY IS 'Maximum retries allowed';
- COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE_HIS.ERROR_MESSAGE IS 'Error message if failed';
- COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE_HIS.CREATED_BY IS 'User who created the message';
- COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE_HIS.CREATED_DATE IS 'Original creation date';
- COMMENT ON COLUMN LAOS_ESIM.MESSAGE_QUEUE_HIS.MOVED_DATE IS 'Date moved to history';
- -- Indexes for reporting and cleanup
- CREATE INDEX LAOS_ESIM.MESSAGE_QUEUE_HIS_DATE_IDX ON LAOS_ESIM.MESSAGE_QUEUE_HIS(MOVED_DATE);
- CREATE INDEX LAOS_ESIM.MESSAGE_QUEUE_HIS_STATUS_IDX ON LAOS_ESIM.MESSAGE_QUEUE_HIS(STATUS, MOVED_DATE);
- CREATE INDEX LAOS_ESIM.MESSAGE_QUEUE_HIS_RECIPIENT_IDX ON LAOS_ESIM.MESSAGE_QUEUE_HIS(RECIPIENT, MOVED_DATE);
- -- Optional: Partition by MOVED_DATE for large volume (millions of records)
- -- ALTER TABLE LAOS_ESIM.MESSAGE_QUEUE_HIS MODIFY
- -- PARTITION BY RANGE (MOVED_DATE)
- -- INTERVAL (NUMTOYMINTERVAL(1, 'MONTH'))
- -- (PARTITION p_init VALUES LESS THAN (TO_DATE('2024-01-01', 'YYYY-MM-DD')));
- -- Cleanup job (run monthly to delete old history)
- -- DELETE FROM LAOS_ESIM.MESSAGE_QUEUE_HIS WHERE MOVED_DATE < ADD_MONTHS(SYSDATE, -6);
|