通过以下方式启用创建会话的审核时:
audit create session by session;
然后我查询以下内容:
select * from dba_priv_audit_opts;
结果是:
USERNAME | PROXY_NAME | AUDIT_OPTION | SUCCESS | FAILURE |
...............................................................
- | - | CREATE SESSION | BY ACCESS | BY ACCESS|
但是,当我通过以下方式为创建会话启用审核时:
audit create session by access;
然后我查询以下内容:
select * from dba_priv_audit_opts;
结果是一样的:
USERNAME | PROXY_NAME | AUDIT_OPTION | SUCCESS | FAILURE |
...............................................................
- | - | CREATE SESSION | BY ACCESS | BY ACCESS|
为什么呢?你有什么想法吗?
答案 0 :(得分:6)
11gR2及以上:
BY SESSION
被有效禁用,所有审核都是按访问完成的。
11gR1及以下:
BY SESSION
and BY ACCESS
之间的区别在于,当您指定BY SESSION
时,当会话和审核的操作匹配时,Oracle会尝试将多个审核条目合并到一条记录中。
它仅适用于DDL以外的SQL语句,但从以上链接:
如果指定了审计数据定义语言(DDL)语句的语句选项或系统特权,则无论是否指定BY SESSION子句或BY ACCESS子句,数据库都会通过访问自动进行审计。
由于CREATE SESSION
是DDL语句,因此Oracle会通过访问来审核此语句。