当我通过以下方式启用创建 session 审核时:
audit create session by session;
然后我查询以下内容:
select * from dba_priv_audit_opts;
结果是:
USERNAME | PROXY_NAME | AUDIT_OPTION | SUCCESS | FAILURE |
...............................................................
- | - | CREATE SESSION | BY ACCESS | BY ACCESS|
但是,当我通过以下方式启用创建 session 审核时:
audit create session by access;
然后我查询以下内容:
select * from dba_priv_audit_opts;
结果是一样的:
USERNAME | PROXY_NAME | AUDIT_OPTION | SUCCESS | FAILURE |
...............................................................
- | - | CREATE SESSION | BY ACCESS | BY ACCESS|
为什么?你有什么想法吗?
最佳答案
11gR2 及以上:
BY SESSION
已被有效禁用,并且所有审核均在每次访问时完成。
11gR1 及以下:
BY SESSION
and BY ACCESS
之间的区别是,当您指定BY SESSION
时,当 session 和审核的操作匹配时,Oracle将尝试将多个审核条目合并到一条记录中。
它仅适用于除 DDL 之外的 SQL 语句,来自上面的链接:
If you specify statement options or system privileges that audit data definition language (DDL) statements, then the database automatically audits by access regardless of whether you specify the BY SESSION clause or BY ACCESS clause.
由于CREATE SESSION
是一条DDL语句,Oracle通过访问来审核该语句。
关于oracle - "audit create session by session"与 "audit create session by access"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4942672/