如何记录在oracle表上执行的所有oracle select语句
我想记录在特定oracle表上执行的所有oracle select语句 和如何记录在oracle表上执行的所有oracle select语句,oracle,oracleforms,Oracle,Oracleforms,我想记录在特定oracle表上执行的所有oracle select语句 和pc ip地址,windows用户名,pc名称 SELECT SYS_CONTEXT ('USERENV', 'IP_ADDRESS'), SYS_CONTEXT ('USERENV', 'HOST'), SYS_CONTEXT ('userenv', 'OS_USER') FROM DUAL; 换句话说,我需要知道谁和什么时候读了一张表 我搜索并发现此查询将返回pc ip地址,windo
pc ip地址
,windows用户名
,pc名称
SELECT SYS_CONTEXT ('USERENV', 'IP_ADDRESS'),
SYS_CONTEXT ('USERENV', 'HOST'),
SYS_CONTEXT ('userenv', 'OS_USER')
FROM DUAL;
换句话说,我需要知道谁和什么时候读了一张表
我搜索并发现此查询将返回pc ip地址
,windows用户名
,pc名称
SELECT SYS_CONTEXT ('USERENV', 'IP_ADDRESS'),
SYS_CONTEXT ('USERENV', 'HOST'),
SYS_CONTEXT ('userenv', 'OS_USER')
FROM DUAL;
但我想知道,当电脑上没有数据库时,这会返回正确的信息吗
既然无法在select上启动触发器,那么如何处理该情况
我正在使用oracle forms 6i应用程序,如果也有可能的解决方案您可以对单个SQL DML/DDL语句使用数据库审核 例如:
SQL> conn sys as sysdba
SQL> alter system set audit_trail=DB,EXTENDED scope=spfile;
重新启动数据库
我有一个名为T1
的表,我希望针对它触发auditSELECT
语句
SQL> audit select on t1 by access;
Audit succeeded.
SQL> select * from t1;
no rows selected
审计信息可以从用户审计跟踪
视图中获得
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
这将适用于oracle9i,但它不会向我显示sql\u文本是他们的任何解决方法?您可以按照我的更新建议投影
ACTION\u NAME
列,它只告诉我使用了哪个DML/DDL,而不是完整的语句。