64 lines
3.0 KiB
SQL
64 lines
3.0 KiB
SQL
/*
|
|
UPDATE sessions SET log_id = NULL;
|
|
UPDATE uploaded_file_sheets SET result_log_id = NULL;
|
|
--
|
|
DROP TABLE logs_events PURGE;
|
|
DROP TABLE logs_lobs PURGE;
|
|
DROP TABLE logs_setup PURGE;
|
|
DROP TABLE logs PURGE;
|
|
--
|
|
SELECT * FROM logs ORDER BY 1 DESC;
|
|
*/
|
|
CREATE TABLE logs (
|
|
log_id INTEGER CONSTRAINT nn_logs_log_id NOT NULL, -- NUMBER GENERATED BY DEFAULT AS IDENTITY NOT NULL
|
|
log_parent INTEGER,
|
|
--
|
|
app_id NUMBER(4) CONSTRAINT nn_logs_app_id NOT NULL,
|
|
page_id NUMBER(6),
|
|
user_id VARCHAR2(30),
|
|
flag CHAR(1) CONSTRAINT nn_logs_flag NOT NULL,
|
|
--
|
|
action_name VARCHAR2(32),
|
|
module_name VARCHAR2(48), -- 48 chars, DBMS_APPLICATION_INFO limit
|
|
module_line NUMBER(8),
|
|
module_time VARCHAR2(12), -- 00:00:00.000 - INTERVAL DAY(1) TO SECOND(3),
|
|
arguments VARCHAR2(2000),
|
|
payload VARCHAR2(4000),
|
|
--
|
|
session_id NUMBER,
|
|
created_at TIMESTAMP CONSTRAINT nn_logs_created_at NOT NULL,
|
|
--
|
|
CONSTRAINT pk_logs
|
|
PRIMARY KEY (log_id)
|
|
--
|
|
-- NO MORE CONSTRAINTS TO KEEP THIS AS FAST AS POSSIBLE
|
|
--
|
|
)
|
|
PARTITION BY RANGE (created_at)
|
|
INTERVAL (NUMTODSINTERVAL(1, 'DAY')) (
|
|
PARTITION P00 VALUES LESS THAN (TIMESTAMP '2021-01-01 00:00:00')
|
|
/*
|
|
--today VARCHAR2(10) CONSTRAINT nn_logs_today NOT NULL, -- virtual column?
|
|
PARTITION BY LIST (today, app_id) AUTOMATIC (
|
|
PARTITION "P_20210101_0" VALUES (('2021-01-01', 0)) SEGMENT CREATION IMMEDIATE
|
|
*/
|
|
);
|
|
--
|
|
COMMENT ON TABLE logs IS 'Various logs raised in application; daily partitions';
|
|
--
|
|
COMMENT ON COLUMN logs.log_id IS 'Log ID generated from LOG_ID sequence';
|
|
COMMENT ON COLUMN logs.log_parent IS 'Parent log record; dont use FK to avoid deadlocks';
|
|
COMMENT ON COLUMN logs.app_id IS 'APEX Application ID';
|
|
COMMENT ON COLUMN logs.user_id IS 'User ID';
|
|
COMMENT ON COLUMN logs.page_id IS 'APEX Application PAGE ID';
|
|
COMMENT ON COLUMN logs.flag IS 'Type of error listed in tree package specification; FK missing for performance reasons';
|
|
COMMENT ON COLUMN logs.action_name IS 'Action name to distinguish position in module or use it as warning/error names';
|
|
COMMENT ON COLUMN logs.module_name IS 'Module name (procedure or function name)';
|
|
COMMENT ON COLUMN logs.module_line IS 'Line in the module';
|
|
COMMENT ON COLUMN logs.module_time IS 'Time interval indicating successful finish';
|
|
COMMENT ON COLUMN logs.arguments IS 'Arguments passed to module';
|
|
COMMENT ON COLUMN logs.payload IS 'Formatted call stack, error stack or query with DML error';
|
|
COMMENT ON COLUMN logs.session_id IS 'Session ID (generated by APEX) from sessions table';
|
|
COMMENT ON COLUMN logs.created_at IS 'Timestamp of creation';
|
|
|