In my developing-life there was often the question vor "versioning" a table. That means somebody wanted to know WHO WHEN changed what column of the database, what was the old value, what was the new value...
There were different possibilities how you could implement it, save the data in the same table, make a second table, and some tools that could automate the generation of the "history" and also called "journal" table, and the PL/SQL-Code to fill them correctly, for example the Oracle-Designer.
What i didn't knew was that Oracle implemented a feature that enables the versioning of a table by just entering:
DBMS_WM.EnableVersioning ('emp', 'VIEW_WO_OVERWRITE');
And the best: it works... More info of the so called Workload Manager (WM) can be found here.
Versioning of a table in Oracle