How to track changes to a record that spans multipe tables
In Oracle 12c specifically there is a new feature called "temporal flashback queries" that serves exactly this purpose. (Similar features are available in other databases: DB2, SQL Server, Vertica to name a few.)

To enable temporal queries you:


Ensure that each of the tables representing your document has a pair of dates indicating the start and end date (time) when a particular record was valid (active), and 
Keep historical records by not updating them in place but rather inserting new versions of the records, updating only the end dates of historical records.


You will then be able to issue queries against your tables that look much like SELECT whatever FROM mytable AS OF some_date, which would return the records that were active at the specified date.

You can read the detailed description here.