Traces of Operations

This page describes the tracing mechanisms of E-Maj operations.

The emaj_hist Table

All operations performed by E-Maj that impact a table group in any way are traced in a table named emaj_hist.

Any user with emaj_adm or emaj_viewer rights can view the emaj_hist content.

The emaj_hist table structure is as follows:

Column

Type

Description

hist_id

BIGSERIAL

Serial number identifying a row in this history table

hist_datetime

TIMESTAMPTZ

Recording date and time of the row

hist_function

TEXT

Function associated with the traced event

hist_event

TEXT

Kind of event

hist_object

TEXT

Object related to the event (group, table, or sequence)

hist_wording

TEXT

Additional comments

hist_user

TEXT

Role whose action generated the event

hist_txid

BIGINT

Identifier of the transaction that generated the event

The hist_function Column

The hist_function column can take the following values:

Value

Meaning

ASSIGN_SEQUENCE

Sequence assigned to a table group

ASSIGN_SEQUENCES

Sequences assigned to a table group

ASSIGN_TABLE

Table assigned to a table group

ASSIGN_TABLES

Tables assigned to a table group

CLEANUP_RLBK_STATE

Clean up the state of recently completed rollback operations

COMMENT_GROUP

Comment set on a group

COMMENT_MARK_GROUP

Comment set on a mark for a table group

COMMENT_ROLLBACK

Comment set on an E-Maj rollback

CONSOLIDATE_RLBK_GROUP

Consolidate a logged rollback operation

CREATE_GROUP

Table group creation

DBLINK_OPEN_CNX

Open a dblink connection for a rollback operation

DBLINK_CLOSE_CNX

Close a dblink connection for a rollback operation

DELETE_MARK_GROUP

Mark deletion for a table group

DISABLE_PROTECTION

Deactivate event triggers

DROP_GROUP

Table group suppression

EMAJ_INSTALL

E-Maj installation or version update

ENABLE_PROTECTION

Activate event triggers

EXPORT_GROUPS

Export a table groups configuration

EXPORT_PARAMETERS

Export an E-Maj parameters configuration

FORCE_DROP_GROUP

Table group forced suppression

FORCE_STOP_GROUP

Table group forced stop

FORGET_GROUP

Erase historical traces for a dropped table group

GEN_SQL_GROUP

Generate a psql script to replay updates for a table group

GEN_SQL_GROUPS

Generate a psql script to replay updates for several table groups

IMPORT_GROUPS

Import a table groups configuration

IMPORT_PARAMETERS

Import an E-Maj parameters configuration

LOCK_GROUP

Lock set on tables of a group

LOCK_GROUPS

Lock set on tables of several groups

LOCK_SESSION

Lock set on tables for a rollback session

MODIFY_TABLE

Table properties change

MODIFY_TABLES

Tables properties change

MOVE_SEQUENCE

Sequence moved to another table group

MOVE_SEQUENCES

Sequences moved to another table group

MOVE_TABLE

Table moved to another table group

MOVE_TABLES

Tables moved to another table group

PROTECT_GROUP

Set protection against rollbacks on a group

PROTECT_MARK_GROUP

Set protection against rollbacks on a mark for a group

PURGE_HISTORIES

Delete events older than the retention delay from historical tables

REMOVE_SEQUENCE

Sequence removed from its table group

REMOVE_SEQUENCES

Sequences removed from their table group

REMOVE_TABLE

Table removed from its table group

REMOVE_TABLES

Tables removed from their table group

RENAME_MARK_GROUP

Mark renamed for a table group

RESET_GROUP

Log tables content reset for a group

ROLLBACK_GROUP

Rollback updates for a table group

ROLLBACK_GROUPS

Rollback updates for several table groups

ROLLBACK_SEQUENCE

Rollback one sequence

ROLLBACK_TABLE

Rollback updates for one table

SET_MARK_GROUP

Mark set on a table group

SET_MARK_GROUPS

Mark set on several table groups

SET_PARAM

Parameter value change

SNAP_GROUP

Snap all tables and sequences for a group

SNAP_LOG_GROUP

Snap all log tables for a group

START_GROUP

Table group start

START_GROUPS

Table groups start

STOP_GROUP

Table group stop

STOP_GROUPS

Table groups stop

UNPROTECT_GROUP

Remove protection against rollbacks on a group

UNPROTECT_MARK_GROUP

Remove protection against rollbacks on a mark for a group

The hist_event Column

The hist_event column can take the following values:

Value

Meaning

BEGIN

Beginning of an operation

DELETED PARAMETER

Parameter deleted from emaj_param

END

End of an operation

EVENT TRIGGER RECREATED

Event trigger recreated

EVENT TRIGGERS DISABLED

Event triggers disabled

EVENT TRIGGERS ENABLED

Event triggers enabled

GROUP CREATED

New table group created

INSERTED PARAMETER

Parameter inserted into emaj_param

LOG DATA TABLESPACE CHANGED

Tablespace for the log table modified

LOG INDEX TABLESPACE CHANGED

Tablespace for the log index modified

LOG_SCHEMA CREATED

Secondary schema created

LOG_SCHEMA DROPPED

Secondary schema dropped

MARK DELETED

Mark deleted

NAMES PREFIX CHANGED

E-Maj names prefix modified

NOTICE

Warning message issued by a rollback

PRIORITY CHANGED

Priority level modified

SEQUENCE ADDED

Sequence added to a logging table group

SEQUENCE MOVED

Sequence moved from one group to another

SEQUENCE REMOVED

Sequence removed from a logging table group

TABLE ADDED

Table added to a logging table group

TABLE MOVED

Table moved from one group to another

TABLE REMOVED

Table removed from a logging table group

TABLE REPAIRED

Table repaired for E-Maj

TIME STAMP SET

Internal timestamp recorded

TRIGGERS TO IGNORE CHANGED

Set of application triggers to ignore at rollback time changed

UPDATED PARAMETER

Parameter updated in emaj_param

WARNING

Warning message issued by a rollback


Other History Tables

Several other internal tables store historical data:

  • emaj_version_hist: Keeps track of extension version changes.

  • emaj_group_hist: Records table group creations and drops.

  • emaj_rel_hist: Keeps track of tables and sequences assignments to table groups.

  • emaj_log_session: Records the periods when table groups are enabled (started).

  • Several other tables handle E-Maj rollback data.

The Emaj_web client is the easiest way to examine the content of these tables.


Purge Obsolete Traces

When a table group is started with reset (emaj_start_group() function) or when old marks are deleted (emaj_delete_before_mark_group() function), the oldest events are deleted from most historical tables. The events kept are those not older than:

  • A configurable retention delay.

  • The oldest mark.

  • The oldest uncompleted rollback operation.

By default, the retention delay for events is 1 year. However, this value can be modified at any time by changing the history_retention E-Maj parameter. If the history_retention parameter is set to 100 years or more, no history purge is attempted.

The obsolete traces purge can also be initiated by explicitly calling the emaj_purge_histories() function. The input parameter of the function defines a retention delay that overrides the history_retention E-Maj parameter.

To schedule purges periodically, it is possible to set the history_retention parameter to a very high value (e.g., ‘100 YEARS’),and schedule purge operations using any tool (crontab, pgAgent, pgTimeTable, or any other tool).