"审核按会话创建会话"与"审核按访问创建会话"?

kup*_*upa 5 oracle audit auditing audit-tables

当我通过以下方式为创建会话启用审核时:

audit create session by session;
Run Code Online (Sandbox Code Playgroud)

然后我查询以下内容:

select * from dba_priv_audit_opts;
Run Code Online (Sandbox Code Playgroud)

结果是:

USERNAME | PROXY_NAME | AUDIT_OPTION   | SUCCESS   | FAILURE  |
...............................................................
 -       | -          | CREATE SESSION | BY ACCESS | BY ACCESS|
Run Code Online (Sandbox Code Playgroud)

但是,当我通过以下方式启用审核创建会话时:

 audit create session by access;
Run Code Online (Sandbox Code Playgroud)

然后我查询以下内容:

select * from dba_priv_audit_opts;
Run Code Online (Sandbox Code Playgroud)

结果是一样的:

USERNAME | PROXY_NAME | AUDIT_OPTION   | SUCCESS   | FAILURE  |
...............................................................
 -       | -          | CREATE SESSION | BY ACCESS | BY ACCESS|
Run Code Online (Sandbox Code Playgroud)

为什么?你有什么主意吗?

Vin*_*rat 6

11gR2及以上:

BY SESSION 被有效禁用,所有审核都是按访问完成的.

11gR1及以下:

BY SESSIONBY ACCESS之间的区别在于,当您指定BY SESSIONOracle会在会话和审计的操作匹配时尝试将多个审计条目合并到一个记录中.

它仅适用于DDL以外的SQL语句,但从以上链接:

如果指定审计数据定义语言(DDL)语句的语句选项或系统特权,则无论是否指定BY SESSION子句或BY ACCESS子句,数据库都会通过访问自动进行审计.

由于CREATE SESSION是DDL语句,因此Oracle会通过访问来审核此语句.