These are commonly called audit tables. As I usually understand, this is the use of triggers in the database. For each insert / update from the source table, the trigger copies the data to another table with the name of the same table with _AUDIT attached to it (the naming convention does not matter, this is what I use). ORACLE provides you with something called log tables. Using the ORACLE constructor (or manually), you can achieve the same, and developers often add _JN at the end of the log / audit table. This, however, works the same way: triggers in the source table copy data to the audit table.
EDIT: It should also be noted that you can create a new separate schema to manage only your audit tables or you can save them in your schema using the source tables. I do both, it just depends on the situation.
source share