目录
审计是监视和记录所选用户的数据活动,通常用于调查可疑活动,以及监视与收集特定数据活动的数据。审计的操作类型分为登录企图,对象访问和数据库操作等。
管理员可以启用和禁用审计信息记录,但是,只有安全管理员才能对审计星级进行管理。当在数据库中启用审计时,可在语句执行阶段生成审计 记录。
用户连接数据库的过程称为登录。
- AUDIT SESSION:开 启连接数据库审计。
- AUDIT SESSION WHENEVER SUCCESSFUL: 审计成功的连接图。
- NOAUDIT SESSION:禁 止会话审计。
- AUDIT SESSION WHENEVER NOT SUCCESSFUL:只是审计 连接失败。
SELECT OS_Username, Username, Terminal,
DECODE(Returncode, '0', 'Connected', '1005', 'FailedNull', '1017', 'Failed', Returncode),
TO_CHAR(Timestamp, 'DD-MON-YY HH24:MI:SS'),
TO_CHAR(Logoff_time, 'DD-MON-YY HH24:MI:SS')
FROM DBA_AUDIT_SESSION
提示:数据库的审计记录存放在SYS方案中的AUD$表中,可以通过DBA_AUDIT_SESSION数据字典视图来查看 SYS.AUD$。
- OS_Username:使用 的操作系统账户
- Username:Oracle 账户名。
- Terminal:使用的 终端ID。
- Returncode:如果为0, 连接成功;否则就检查两个 常用错误号,确定失败的原 因。检查的两个错误号为 ORA-1005和ORA-1017, 这两个错误代码覆盖了经常 发生的登录错误
- Timestamp:登 录时间
- Logoff_time:注销 的时间。
对表、数据库链接、表空间、同义词、回滚段、用户或索引等数据库对象的任何操作都可被审计。这些操作 包括对象的建立、修改和删除。
AUDIT {<审计操作>∣<系统权限名>}
[BY <用户名> [,…n]]
[BY {SESSION∣ACCESS}]
[WHENEVER [NOT] SUCCESSFUL
- <审计操作>对于每个审计操作,其产生的审计记录都包含执行操作的用户、操作类型、操作涉及的 对象及操作的日期和时间等信息。
- <系统权限名>:指定审计的系统权限,Oracle为指定的系统权限和语句选项组提供捷径。
- BY <用户名>:指定审计的用户。若忽略该子句,Oracle审计所有用户的语句。
- BY SESSION:同一会话中同一类型的全部SQL语句仅写单个记录。
- BY ACCESS:每个被审计的语句写一个记录。
- WHENEVER SUCCESSFUL:只审计完全成功的SQL语句。包含NOT时,则只审计失败或产生错误的语句。
例子:将用户user1的插入操作都被审计
AUDIT INSERT TABLE BY user1;;

如果要让审计影响角色的所有命令:
则:AUDIT ROLE;否则禁止设置;NOAUDIT ROLE;
被审计的操作都会被计入一个数字代码:
使用该查询语句可以查看:
SELECT Action,Name
FROM AUDIT_ACTIONS;

已知上面的操作代码可以通过DBA_AUDIT_OBJECT视图检索登录审计:
SELECT
OS_Username, Username, Terminal, Owner, Obj_Name, Action_Name,
DECODE(Returncode, '0', 'Success',Returncode),
TO_CHAR(Timestamp, 'DD-MON-YYYYY HH24:MI:SS')
FROM DBA_AUDIT_OBJECT;
- OS_Username: 操作系统账户。
- Username: 账户名。
- Terminal:所用 的终端ID。
- Action_Name: 操作码。
- Owner:对象拥 有者。
- Obj_Name:对 象名。
- Returncode:返回代 码。若是0,则表示 连接成功;否则就报 告一个错误数值。
- Timestamp:登 录时间。

除了系统级的对象操作外,还可以审计对象的数据处理操作。这些操作可能包括对表的选择、插入、更新 和删除操作。
AUDIT {<审计选项>∣ALL} ON
{[用户方案名.]<对象名> ∣ DIRECTORY <逻辑目录名>∣DEFAULT}
[BY SESSION∣ACCESS]
[WHENEVER [NOT] SUCCESSFUL]
说明:
- ALL:指定所有对象类型的对象选项。
- <对象名>:标识审计对象。对象必须是表、视图、序列、存储过程、函数、包、快照或库,也可 是它们的同义词。
- ON DEFAULT:默认审计选项,以后创建的任何对象都自动用这些选项审计。用于视图的默认审计 选项总是视图基表的审计选项的联合。若改变默认审计选项,先前创建的对象的审计选项保持不变。
- ON DIRECTORY:指定审计的目录名。
- BY SESSION:Oracle在同一会话中对在同一对象上的同一类型的全部操作写单个记录。
- BY ACCESS:对每个被审计的操作写一个记录
<审计选项>
对象设计选项 对象选项 表 视图 序列 过程/函数/包 显形图/快照 目录 库 对象类型 环境 ALTER × × × × AUDIT × × × × × × × × COMENT × × × DELETE × × × EXECUTE × GRANT × × × × × × × × × INDEX × × INSERT × × × LOCK × × READ × × RENAME × × × SELECT × × × × × UPDATE × × ×
例子1:对表demo的INSERT命令进行审计
AUDIT INSERT ON SCOTT.DEMO;
例子2:对demo表每个命令都进行审计
AUDIT ALL ON SCOTT.DEMO;
权限审计表示只审计某一个系统权限的使用状况。既可以审计某个用户所使用的系统权限,也可以审计所有 用户使用的系统权限
例子:对用户user1进行系统权限的审计
AUDIT ALTER ANY TABLE,ALTER ANY PROCEDURE BY user1 BY ACCESS
WHENEVER NOT SUCCESSFUL;
提示:通过查询数据字典DBA_PRIV_AUDIT_OPTS查看哪些用户进行了权限的审计。
SELECT USER_NAME,PRIVILEGE,SUCCESS,FAILURE
FROM DBA_PRIV_AUDIT_OPTS;
