title: How to log in an Oracle database?
body: <p>I am interested in what methods of logging is frequent in an Oracle database.
  Our method is the following:</p>
  
  <p>We create a log table for the table to be logged. The log table contains all the columns of the original table plus some special fields including timestamp, modification type (insert, update, delete), modifier's id. A trigger on the original table creates one log row for each insertion and deletion, and two rows for a modification. Log rows contain the data before and after the alteration of the original one.</p>
  
  <p>Although state of the records can be mined back in time using this method, it has some drawbacks:</p>
  
  <ul>
  <li>Introduction of a new column in the original table does not automatically involves log modification.</li>
  <li>Log modification affects log table and trigger and it is easy to mess up.</li>
  <li>State of a record at a specific past time cannot be determined in a straightforward way.</li>
  <li>...</li>
  </ul>
  
  <p>What other possibilities exist?
  What kind of tools can be used to solve this problem?</p>
  
  <p>I only know of <a href="http://log4plsql.sourceforge.net/" rel="noreferrer">log4plsql</a>. What are the pros/cons of this tool?</p>
  
  <p>Edit: Based on Brian's answer I have found the following <a href="http://www.oracle-base.com/articles/10g/Auditing_10gR2.php" rel="noreferrer">reference</a> that explains standard and fine grain auditing.</p>