5

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

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|

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

4

1 回答 1

6

11gR2 及以上:

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

11gR1 及以下:

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

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

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

由于CREATE SESSION是 DDL 语句,Oracle 通过访问来审计该语句。

于 2011-02-09T09:21:44.543 回答