Oracle Audit Table基于工作角色

时间:2013-04-12 12:36:27

标签: sql database oracle audit

我已经设法在Oracle中创建了一个审计表,用于在员工表上更新,删除或插入记录时对其进行审计。我也做了它,所以只在办公时间(上午9点到下午5点)进行更改时审核记录。

如果你想看到这个代码,请告诉我,但我只是想知道是否有可能只根据工作角色审核记录。在employee表中有一个job role列,例如this。

 Job_role
 Director
Security Guard II
Administration Manager
Warehouse Assistant I

我只希望它审核由例如保安人员或仓库助理所做的更改,因为这些工作角色不应该真正与员工数据库进行交互。

任何帮助表示感谢。

谢谢

1 个答案:

答案 0 :(得分:1)

您需要做的是将用户的职位描述存储在会话变量中。

要执行此操作,请使用CREATE CONTEXT命令声明命名空间。 Docs here.

然后您有an AFTER-LOGON database trigger查询USERS表并使用DBMS_SESSION.set_context()将作业描述存储在命名空间中。 Docs here.

最后,当涉及审计命令时,您使用SYS_CONTEXT()读取存储的值并做出相应的决定:

if sys_context('AUDIT_INFO', 'JOB_DESCR') = 'Warehouse Assistant I'   
then
    call_your_audit_proc(.....);
end if;