2017-04-03 1 views
1

ich auf bestimmte Tabellen Orakel ausgeführt alle Oracle-select-Anweisung aufnehmen möchten und pc ip address, windows username, PC name, wie man alle Oracle-select-Anweisung auf dem Tisch Orakel ausgeführt aufzeichnen

in anderen Worten, die ich wissen müssen, wer und wann eine Tabelle gelesen wurde ..

ich gesucht und gefunden wird die diese Abfrage zurückgeben pc ip address, windows username, PC name

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

Aber ich frage mich, ob das korrekte Informationen zurückgibt, wenn es keine Datenbank auf diesem PC gibt?

seit Trigger kann nicht gestartet werden bei Auswahl dann Wie geht man mit diesem Fall?

ich Orakel bin mit bildet 6i Anwendung, wenn es mögliche Lösung ist zu

Antwort

2

Sie können Datenbankprüfung für einzelne SQL-DML/DDL-Anweisungen verwenden.

Beispiel:

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

Reboot der Datenbank.

Ich habe eine Tabelle mit dem Namen T1 und ich möchte Audit SELECT Aussagen dagegen gefeuert werden.

SQL> audit select on t1 by access; 

Audit succeeded. 

SQL> select * from t1; 

no rows selected 

Die Audit-Informationen aus USER_AUDIT_TRAIL Sicht erhalten werden.

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

, die mit Oracle9i funktioniert hat, aber es wird nicht zeigen mir die sql_text ist ihr jede Arbeit um? – sam

+0

Sie können die Spalte "ACTION_NAME" so projizieren, wie es in meinem Update vorgeschlagen wird. Dort wird nur angegeben, welche DML/DDL verwendet wurde und nicht die vollständige Anweisung. – JSapkota

Verwandte Themen