| 
									Auditing a database   
									Introduction 
									As a DBA, you 
									are responsible for auditing the database 
									due to a suspicious transaction on certain 
									table. An unknown user is deleting records 
									and you have been assigned the task to 
									investigate and find out who that person is. 
									Your job�s responsibilities dictate that you 
									should at least be informed of the following 
									basic fundamental subjects: 
									  
									Starting 
									auditing 
									Stopping 
									auditing 
									Reading from 
									the AUDIT TRAIL table 
									Truncating the 
									AUD$ table 
									Using the 
									AUDIT_TRAIL view 
									Listing the 
									AUDIT_TRAIL parameter 
									Setting the 
									AUDIT_TRAIL parameter 
									Shutting down 
									and startup a database using SPFILE 
									Using the AUD$ 
									table 
									Auditing an 
									auditor 
									Auditing who 
									deletes a record 
									Viewing the 
									AUD$ table 
									Stopping all 
									auditing trail 
									Commands: 
									TRUNCATE TABLE 
									aud$ 
									SHOW PARAMETER 
									ALTER SYSTEM 
									SET audit_trail=db SCOPE=spfile 
									SHUTDOWN 
									IMMEDIATE 
									CONNECT 
									system/manager AS SYSDBA 
									STARTUP 
									AUDIT delete 
									ON sys.aud$ 
									AUDIT DELETE 
									ON BY ACCESS WHENEVER SUCCESSFUL 
									NOAUDIT ALL 
									  
									Hands-on 
									In this 
									exercise you will learn how to start and 
									stop auditing, how to read from the audit 
									trail table and more...
 Now, connect as the SYSTEM/MANAGER user.
 SQL> CONNECT 
									system/manager AS SYSDBA
 
 
									Clean audit 
									tableTruncate the database audit table. The 
									database audit table was truncated so any 
									old audited information will be deleted for 
									this exercise.
 SQL> TRUNCATE TABLE 
									aud$
 /
 
 Audit parameter
 
									View the 
									AUDIT_TRAIL parameter value.SQL> SHOW PARAMETER 
									audit_trail
 The NONE value indicates that the 
									audit process was not activated.
 
 Change the AUDIT_TRAIL parameter to db in 
									the Server Parameter File.
 SQL> ALTER 
									SYSTEM SET audit_trail=db SCOPE=spfile
 /
 
 
									Activate 
									auditingShutdown and startup the database. Use the 
									default Server Parameter File (SPFILE). 
									Notice that when the AUDIT_TRAIL option is 
									set to db, your audit trail information is 
									stored in the AUD$ table owned by sys. And 
									also, when AUDIT_TRAIL is set to Operating 
									System, your audit trail information will be 
									stored in the directory named by the 
									AUDIT_FILE_DEST parameter. In this example, 
									we are storing data into the AUD$ table in 
									the Oracle database.
 SQL> SHUTDOWN 
									IMMEDIATE
 SQL> CONNECT system/manager AS SYSDBA
 SQL> STARTUP
 
 View the AUDIT_TRAIL value again.
 SQL> SHOW PARAMETER 
									audit_trail
 Notice that this time, the value 
									was changed to db.
 
 Query the AUD$ table.
 SQL> SELECT * FROM 
									aud$
 /
 Notice that there are no records 
									in the audit table.
 
 
									Check what to 
									auditFirst, let's audit who ever deleted any 
									records from the aud$ table. That should be 
									our first target since an auditor may cover 
									his/her own actions by deleting records from 
									the AUD$ table.
 SQL> AUDIT delete 
									ON sys.aud$
 /
 Notice that this is very 
									important. You should be sure that no user 
									can remove records from the audit logs 
									undetected.
 
 Audit who ever deleted a record from the EMP 
									table. Since the 'audit trail process' 
									generates a lot of records you should be 
									very specific in regards to your auditing.
 SQL> AUDIT 
									DELETE
 ON oracle.emp
 BY ACCESS
 WHENEVER SUCCESSFUL
 /
 
 
									Check auditingConnect as the ORACLE user.
 SQL> CONNECT 
									oracle/learning
 
 Insert a record into the EMP table.
 SQL> INSERT INTO 
									emp
 VALUES (9999,'KAZ','RESEARCH',7788,'10-MAR-89',1000,null,30)
 /
 SQL> COMMIT
 /
 
 Now, delete the KAZ employee.
 SQL> DELETE FROM 
									emp
 WHERE empno = 9999
 /
 SQL> COMMIT
 /
 
 Connect again as the SYSTEM/MANAGER user.
 SQL> CONNECT 
									system/manager AS SYSDBA
 
 View the SYS.AUD$ table to display the date 
									and time who (username), and what (statement 
									of an action) was done.
 SQL> SELECT
 TO_CHAR(timestamp#,'DD-MON-YYYY HH24:MI:SS')
 
									as "Date and 
									Time", userid, name "Action by user"FROM sys.aud$ JOIN sys.audit_actions
 ON action = action#
 /
 
 
									Stop auditingSince auditing takes a lots of disk space be 
									sure to stop auditing when it is not needed. 
									Try, stop auditing.
 SQL> NOAUDIT 
									ALL
 /
 
 
									Reset audit 
									parameterNow, reset the AUDIT_TRAIL parameter value 
									to NONE and then shutdown and startup the 
									database. Shutdown and startup the database 
									by using the defualt Server Parameter File (SPFILE). 
									We took the AUDIT_TRAIL parameter back to 
									it's original value so you can do this 
									exercise over if you want.
 SQL> ALTER 
									SYSTEM SET audit_trail=NONE SCOPE=spfile
 /
 SQL> SHUTDOWN IMMEDIATE
 SQL> CONNECT system/manager AS SYSDBA
 SQL> STARTUP
 
 
									Questions: 
									Q: How do you 
									activate auditing a database? 
									Q: How do you 
									start auditing? 
									Q: How do you 
									stop auditing? 
									Q: How do you 
									read from the AUDIT_TRAIL table? 
									Q: When and 
									why do you truncate the AUD$ table? 
									Q: How do you 
									view the AUDIT_TRAIL parameter value? 
									Q: How do you 
									set the AUDIT_TRAIL parameter value? 
									Q: How do you 
									auditing an auditor? 
									Q: Audit all 
									the users who delete a record or records 
									from the EMP table? 
									Q: What do the 
									following SQL statements do? 
									SQL> TRUNCATE 
									TABLE aud$/
 
									SQL> ALTER SYSTEM SET audit_trail=db SCOPE=spfile
 /
 
									SQL> AUDIT delete ON sys.aud$
 /
 
									SQL> AUDIT DELETE
 ON oracle.emp
 BY ACCESS
 WHENEVER SUCCESSFUL
 /
 
									SQL> SELECT
 TO_CHAR(timestamp#,'DD-MON-YYYY HH24:MI:SS')
 
									as "Date and 
									Time", userid, name "Action by user"FROM sys.aud$ JOIN sys.audit_actions
 ON action = action#
 /
 
									SQL> NOAUDIT ALL
 /
 
 |