Oracle10g審計

guyuanli發表於2008-07-30

Oracle10g審計

要使用oracle的審計功能必須先設定初始化引數audit_trail

audit_trail 引數的值可以設定為以下幾種:

1. NONE
:不開啟審計功能。
2. DB
:開啟審計功能,並將審計記錄儲存在資料庫系統提供的審計檢視內,要求用於審計功能實現的檢視已經建立。

[@more@]

Oracle10g審計

要使用oracle的審計功能必須先設定初始化引數audit_trail

audit_trail 引數的值可以設定為以下幾種:

1. NONE
:不開啟審計功能。
2. DB
:開啟審計功能,並將審計記錄儲存在資料庫系統提供的審計檢視內,要求用於審計功能實現的檢視已經建立。
3. OS
:審計記錄寫入一個作業系統檔案。
4. TRUE
:與引數DB效果等同。
5. FALSE
:不開啟審計功能。

注意此引數不是一個動態引數,需要重啟資料庫才能生效.

Oracle10g審計比9i在功能上有了加強,9i當中你能看到是誰做的操作,但不能看到具體操作內容,10g倪補了這一點,例子如下:

add_policy過程建立審計任務

begin
dbms_fga.add_policy (
object_schema => 'TEST',
object_name => 'T',
policy_name => 'ACCOUNTS_ACCESS',
audit_column => 'ID',
audit_condition => 'ID>1',
statement_types => 'UPDATE'
);
end;
執行語句觸發審計:

update t set name = 'aa' where id = 100

這樣可以在DBA_FGA_AUDIT_TRAIL檢視的SQL_TEXT欄位中找到執行的語句

第二種審計方法是使用語句

例如:

想對使用者gu的所有表的所有sql跟蹤用如下語句

Audit table by gu by access;

想對錶testinsert進行跟蹤用如下語句

Audit insert on test by access

然後可以在DBA_AUDIT_TRAIL檢視中檢視審計資訊

這種方法記錄了事務的transactionid,透過和檢視FLASHBACK_TRANSACTION_QUERY連線查詢可以知道記錄中實際記錄的是什麼.

select start_scn, start_timestamp,
commit_scn, commit_timestamp, undo_change#, row_id, undo_sql
from flashback_transaction_query
where xid = '';

這兩種方法都有記錄操作的SCN,這可以透過閃回功能來找回操作之前的資料

Select * from test as of SCN 12345

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7490392/viewspace-1008150/,如需轉載,請註明出處,否則將追究法律責任。