2017-04-25 15 views
0

잘라 내기 및 놓기 문을 한 테이블에 캡처하려고합니다. 잘라내 기와 놓기 검사

audit truncate, drop on schema.table; 

그래서 내가 시도 : 내가 그것을 실행하는 것은 불가능하다는있어 일부 구글 검색에서

내가 알고있는 것처럼,이 생성, 캡처 드롭 절단하는데

audit table; 

에 대한 모든 테이블.

그래서, 내 질문 :

  1. 가 정말 그것을 할 수있는 가장 좋은 방법이 있나요? 나는 단지 하나의 특정 테이블에서만 원한다.
  2. 심지어 그 문장으로 - 테이블에 잘라내기를 실행 한 후에도 캡처되지 않습니다. 데이터가없는

DBA_AUDIT_TRAIL

숙박 ..

고마워요.

답변

0

예 특정 테이블에서 DROP TABLE 및 TRUNCATE TABLE을 감사 할 수 있습니다.

내 audit_trail 매개 변수는 다음과 같습니다.

SQL> conn/as sysdba 
SQL> show parameter audit 

NAME      TYPE VALUE 
------------------------------------ ----------- ------------------------------ 
audit_file_dest    string /u01/app/oracle/admin/orcl/adu 
         mp 
audit_sys_operations    boolean  TRUE 
audit_syslog_level   string 
audit_trail    string DB, EXTENDED 
unified_audit_sga_queue_size   integer  1048576 

나는 tbl1이라는 테이블 테이블을 만들었습니다.

SQL> conn jay 
Password: 

Connected. 
SQL> create table tbl1(id number); 

Table created. 

이제 해당 테이블에서 감사를 사용하도록 설정해 보겠습니다. 테이블에 ALL을 지정하면 oracle은 CREATE TABLE, DROP TABLETRUNCATE TABLE 작업을 감사합니다. oracle로 하여금 감사 된 명령문 및 작업마다 하나의 레코드를 작성하게하려면 BY ACCESS을 지정하십시오.

SQL> conn/as sysdba 
SQL> audit all on jay.tbl1 by access; -- or just audit all on jay.tbl1 

Audit succeeded. 

제이 사용자를 사용하여 새 세션을 만들고 일부 작업을 수행하십시오.

SQL> conn jay 

SQL> truncate table tbl1; 

Table truncated. 

SQL> drop table tbl1; 

Table dropped. 

감사 추적을 확인해 봅시다.

SQL> conn/as sysdba 

SQL> select action_name from dba_audit_trail where obj_name='TBL1'; 

ACTION_NAME 
---------------------------- 
DROP TABLE 
TRUNCATE Table 
+0

감사합니다. 하지만 그것은 나를 위해 일하지 않습니다 ... 나는 사용자 A에 테이블을 만들었습니다. 그런 다음 감사를 실행합니다. 그런 다음 명령을 실행하십시오. 선택, 삽입 등은 dba_audit_trail로 작성되었습니다. 하지만 잘라내는 것만으로는 .. – user2671057

+0

마지막으로, my_user에 의한 감사 테이블을 사용합니다. 감사! – user2671057

+0

위의 코드를 Oracle 12.2에서 테스트했습니다.이 코드는 대답과 같이 완벽하게 작동합니다. 나는 당신이 다른 버전을 사용하고 있었다고 생각합니다. 아마도 – JSapkota