在每个方法中,审计跟踪均呈现不同的状态。如果会话启用了审计,则每个对象的每个会话中将只显示一个记录。该示例中的 action_name 列将显示 SESSION REC,且操作将记录到 ses_actions 列中。 select username, timestamp, ses_actions
from dba_audit_trail
where obj_name = 'CREDIT_CARDS'
and action_name = 'SESSION REC'
/
输出结果如下: USERNAME TIMESTAMP SES_ACTIONS
------------------------------ --------- -------------------
ARUP 16-JAN-06 ---------S------
当然,您还可以使用其他列,如 os_username、terminal 等。
注意,ses_actions 列显示了一系列的连字符和一个字母“S”。这表示用户 ARUP 执行了某些操作,这些操作记录在审计跟踪的单个记录中。值遵循某个模式,其中的每个位置均表示一个特定操作:
位置 |
操作 |
1 |
更改 |
2 |
审计 |
3 |
注释 |
4 |
删除 |
5 |
授权 |
6 |
索引 |
7 |
插入 |
8 |
锁定 |
9 |
重命名 |
10 |
选择 |
11 |
更新 |
12 |
引用 |
13 |
执行 |
14 |
未使用 |
15 |
未使用 |
16 |
未使用 |
在以上示例中,ses_actions 显示了以下内容: ---------S------
“S"”位于第 10 个位置,表示用户 ARUP 从表 credit_cards 中进行了选择。但它并未显示用户在此会话中从该表进行选择的频率,这是因为您只对会话而非访问启用了审计。如果用户还在查询中执行了插入和更新操作,则列值将为: ------S--SS-----
注意,第 7 个位置 (Insert)、第 10 个位置 (Select) 和第 11 个位置 (Update) 分别有一个 S。
为什么会显示“S”?启用审计时,可以指定在访问成功或失败时是否记录跟踪。例如,如果只在访问由于某种原因(如权限不足)而失败的情况下记录审计跟踪,可以按如下所示启用审计。 audit select on ccmaster.credit_cards by session whenever not successful;
随后,当用户 ARUP 成功地从表中进行选择时,审计跟踪中将没有记录。如果访问失败,则将有一个记录。这种情况下,ses_actions 列中的字母将为“F”(表示失败)。
同样,如果只想在访问成功时进行审计,请将子句“whenever not successful”替换为“whenever successful”。默认情况下,如果未指定该子句,则将同时记录成功和失败的访问。那么,如果在单个会话中,某些访问成功,而其他访问失败,则将出现什么情况?这种情况下字母将为“B”(表示成功和失败)。
(编辑:aniston)
|