2012-01-04 5 views
1

오라클의 감사 기능을 사용하여 특정 테이블에 DELETE 구문을 기록하려고합니다. 나는 달렸다 :Oracle에서 특정 테이블의 삭제를 감사하는 방법은 무엇입니까?

SQL> AUDIT DELETE TABLE BY TPMDBO BY ACCESS; 

Audit succeeded. 

이 테이블 스키마 자체의 삭제를 감사 만약 내가 불분명 해요 (즉, 테이블을 삭제)하거나 (모든 테이블에서 하나 이상의 행의 삭제를 감사하는 경우 즉, 삭제 명령). 후자의 경우이 감사를 Foo이라는 테이블로 어떻게 제한합니까? 감사!

UPDATE :

SQL> show parameter audit 

NAME         TYPE  VALUE 
------------------------------------ ----------- ------------- 
audit_file_dest      string  /backup/audit 
audit_sys_operations     boolean  TRUE 
audit_syslog_level     string 
audit_trail       string  XML, EXTENDED 

답변

2

세밀한 감사 (FGA)라는 새로운 기능이 저장 SYS.FGA_LOG $ 대신 SYS.AUD $ 로그인 것을있다. 여기에 FGA manual이 있습니다.

BEGIN 
    DBMS_FGA.ADD_POLICY(
    object_schema  => 'HR', 
    object_name  => 'FOO', 
    policy_name  => 'my_policy', 
    policy_owner  => 'SEC_MGR', 
    enable    => TRUE, 
    statement_types => 'DELETE', 
    audit_condition => 'USER = ''myuser''', 
    audit_trail  => DBMS_FGA.DB); 
END; 
/

예, 원래 명령은 모든 테이블에서이 사용자에 대해 DELETE 작업 (DROP 아님)을 감사해야합니다. 검사 show parameter audit

+0

위의 'AUDIT'명령을 사용하면 감사 스키마 만 변경됩니까? 그러면 감사 기록에서 아무 것도 볼 수없는 이유가 설명됩니다. –

+0

예, 원래 명령은 모든 테이블에서이 사용자에 대해 DROP이 아닌 DELETE 작업을 감사해야합니다. 'show parameter audit' 검사하기 – kubanczyk

+0

감사합니다. 나는 실제로 사라진 행의 수수께끼를 풀었지만 나는 여전히 내 자신의 개인 개발에 대한 감사에 대해 배우고 싶다. :) –

관련 문제