oracle開啟audit(審計)

hd_system發表於2016-11-24
1、檢視審計功能是否開啟(本機已經開啟,如果audit_sys_operations值為FALSE就是沒開審計)
  1. SQL> CONN /AS SYSDBA  
  2. SQL> show parameter audit  
  3.    
  4. NAME                                 TYPE        VALUE  
  5. ------------------------------------ ----------- ------------------------------  
  6. audit_file_dest                      string      F:\APP\ADMINISTRATOR\ADMIN\ORCL\ADUMP  
  7. audit_sys_operations                 boolean     TRUE  
  8. audit_trail                          string      DB_EXTENDED    


如果沒有使用下面語句更改:

  1. SQL> alter system set audit_trail=db_extended scope=spfile;  

注意audit_trail要為DB_EXTENDED才記錄執行的具體語句...

2、重啟例項

  1. SQL> shutdown immediate;  
  2. SQL> startup  


3、針對某表的DML審計(錯誤的也記錄)

  1. SQL> AUDIT UPDATE,DELETE,INSERT ON T_TEST by access;  

 

4、對該表做各種DML操作
用scott使用者登入

  1. SQL> conn scott/123        
  2. SQL> create table t_test as select * from emp;  
  3. SQL> update t_test set emp1='111';   
  4.                   *  
  5. 第 1 行出現錯誤:  
  6. ORA-00904: "EMP1": 識別符號無效       
  7. SQL> delete from t_test where rownum=1;  
  8.   
  9. 已刪除 1 行。  
  10.   
  11. SQL> commit;  


5、查詢審計資訊

  1. SQL> select EXTENDED_TIMESTAMP,SESSION_ID,SQL_TEXT   
  2.   
  3. SQL> from DBA_COMMON_AUDIT_TRAIL ORDER BY EXTENDED_TIMESTAMP DESC;  


或者

  1. SQL> select EXTENDED_TIMESTAMP,SESSION_ID,SQL_TEXT from DBA_COMMON_AUDIT_TRAIL  
  2. SQL> where OBJECT_NAME='T_TEST'  
  3. SQL> and STATEMENT_TYPE in ('INSERT','UPDATE','DELETE');  


---結果:

  1. SQL> /  
  2.   
  3. EXTENDED_TIMESTAMP                       SESSION_ID SQL_TEXT  
  4. ---------------------------------------- ---------- ----------------------------  
  5. ------------  
  6. 14-8月 -12 04.14.45.187000 下午 +08:00       190125 update t_test set emp1='111'  
  7. 14-8月 -12 04.26.02.968000 下午 +08:00       190125 delete from t_test where rownum=1  


注意:審計一般只用於對普通使用者操作,一般不審計SYS使用者
對於windows系統,對sys使用者的審計資訊並不存在AUDIT_FILE_DEST引數指定的目錄裡,而是在windows的事件管理器中。

---------------------------------------------------------------------------------------------------------------------

另外透過細粒度審計FGA也可以實現上述審計:

用法建立審計策略:

  1. Syntax  
  2.   
  3. DBMS_FGA.ADD_POLICY(  
  4.    object_schema   VARCHAR2,   
  5.    object_name     VARCHAR2,   
  6.    policy_name     VARCHAR2,   
  7.    audit_condition VARCHAR2,   
  8.    audit_column    VARCHAR2,   
  9.    handler_schema  VARCHAR2,   
  10.    handler_module  VARCHAR2,    
  11.    enable          BOOLEAN  );  

刪除審計策略:

  1. DBMS_FGA.DROP_POLICY(  
  2.    object_schema  VARCHAR2,   
  3.    object_name    VARCHAR2,   
  4.    policy_name    VARCHAR2 );  


啟用審計策略:

  1. DBMS_FGA.ENABLE_POLICY(  
  2.    object_schema  VARCHAR2 := NULL,  
  3.    object_name    VARCHAR2,  
  4.    policy_name    VARCHAR2,  
  5.    enable         BOOLEAN := TRUE);  


禁用審計策略:

  1. DBMS_FGA.DISABLE_POLICY(  
  2.    object_schema  VARCHAR2,   
  3.    object_name    VARCHAR2,   
  4.    policy_name    VARCHAR2 );   



 

首先,建立審計策略

  1. SQL> conn /as sysdba  
  2. 已連線。  
  3. SQL> begin  
  4.   2  dbms_fga.add_policy  
  5.   3  (  
  6.   4  object_schema=>'SCOTT',object_name=>'T_TEST',  
  7.   5  policy_name=>'Test_audit'  
  8.   6  );  
  9.   7  end;  
  10.   8  /  
  11.   
  12. PL/SQL 過程已成功完成。  
  13.   
  14. SQL> conn scott/tigger  


進行查詢

  1. SQL> select ename from t_test;  


使用SYS登入進行查詢,

  1. SQL> select statement_type,SQL_TEXT from dba_fga_audit_trail;  
  2.   
  3. STATEME SQL_TEXT  
  4. ------- ----------------------------------------  
  5. SELECT  select ename from t_test  


 ------------

注意: 經過發現審計到的SQL語句存在著大小寫2種格式。

直接執行的SQL語句,是什麼樣的語句,審計到的也就是什麼樣。

在儲存裡執行的語句,審計到的全是大寫的語句。

儲存裡動態執行的語句,是什麼樣的語句,審計到的也就是什麼樣的語句。

  1. BEGIN  
  2. EXECUTE immediate 'delete FrOm emp WHERE ROWNUM=1';  
  3. END;  


審計到的就是

  1. DELETE delete FrOm emp WHERE ROWNUM=1; 

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

相關文章