2017-04-03 7 views
1

테이블 오라클에서 실행되는 모든 오라클 SELECT 문을 녹음 할 때 테이블을합니다 읽은 .. 어떻게 사람을 알 필요가 즉 <code>PC name</code></p> <p>, 내가 특정 테이블 오라클 및 <code>pc ip address</code>, <code>windows username</code>에서 실행되는 모든 오라클 SELECT 문을 녹음 할

나는 검색하고,이 쿼리가 반환 발견 pc ip address, windows username, PC name

SELECT SYS_CONTEXT ('USERENV', 'IP_ADDRESS'), 
     SYS_CONTEXT ('USERENV', 'HOST'), 
     SYS_CONTEXT ('userenv', 'OS_USER') 
    FROM DUAL; 

하지만 그 컴퓨터에 데이터베이스가 없을 때 이것이 올바른 정보를 리턴 할까 궁금합니다.

트리거를 선택하면 시작할 수 없으므로 어떻게 대처할 수 있습니까? 너무

답변

2

당신은 개별 SQL의 DML/DDL 문에 대한 데이터베이스 감사를 사용하여 가능한 솔루션이 있다면 제가 오라클을 사용하고

는 6i는 응용 프로그램을 형성한다.

예 :

SQL> conn sys as sysdba 
SQL> alter system set audit_trail=DB,EXTENDED scope=spfile; 

재부팅 데이터베이스.

나는 T1이라는 테이블을 가지고 있으며 감사 내용 SELECT이 발효되기를 바랍니다.

SQL> audit select on t1 by access; 

Audit succeeded. 

SQL> select * from t1; 

no rows selected 

감사 정보는 USER_AUDIT_TRAIL보기에서 가져올 수 있습니다.

SQL> select OS_USERNAME,USERNAME, USERHOST, SQL_TEXT, ACTION_NAME from dba_audit_trail where obj_name='T1'; 

OS_USERNAME  USERNAME USERHOST  SQL_TEXT   ACTION_NAME 
------------ --------- ------------ ----------------- ------------ 
oracle   JAY  myserver.js  select * from t1 SELECT 

Individually Auditing SQL Statements

+0

오라클과 함께 작동있어하지만이 SQL_TEXT 자신의 모든 작업이 주위에 나에게 보여 실 거예요? – sam

+0

내 업데이트가 제안한대로'ACTION_NAME' 열을 투영 할 수 있습니다.이 명령문은 완전한 문이 아닌 DML/DDL 만 사용되었음을 알려줍니다. – JSapkota