You need to read about triggers. Truggers ae procedures that fire when something is done with an associated table — like insert, update, or delete. You are prsented the state of the data at the time (in the case of updaes — both before and after) so it easy to make such an audit trail. tSQL stored procedures can reach other databases on the same server easily. And, tables in databases on other servers by linking the servers. The only consideration is that you need to be certain your code will not fail (because it is unexpected in the normal users code) and that it does take a lot of time — poorly written triggers can cause serious delays in bulk insets and updates… There are many sources of free information about triggers in tSQL. You might want to start with a Google search…
Although the above answer mentions t-Sql and the question is about Oracle, the <a href=”http://download.oracle.com/docs/cd/B10501_01/server.920/a96524/c18trigs.htm”>trigger</a> concept is the same, but if you want to log changes to schema objects (and not DML operations to specific objects like inserts/deletes/updates), you should look at <a href=”http://download.oracle.com/docs/cd/B10501_01/server.920/a96524/c18trigs.htm#10004″>DDL triggers</a>, which can be created at the database level or the schema level.
As for writing this data to a remote server, you would have to create a <a href=”http://download.oracle.com/docs/cd/B10501_01/server.920/a96521/ds_concepts.htm#15997″>database link</a> (if the data is going to be stored in a database). Making this inaccessible to the DBA is a matter of privileges/permissions (which are usually managed by the DBA…).