As in many databases, i am designing a database that should keep record of previous versions of the rows changed in each table.
The standard solution to this problem is
Since you are using Oracle, you could check Oracle Flashback Technology. It records changes of all changes in database, both data and structure. It also records time stamp and user name.
I didn't use it, but it looks capable.