我已经设法在Oracle中创建了一个审计表,用于在员工表上更新,删除或插入记录时对其进行审计。我也做了它,所以只在办公时间(上午9点到下午5点)进行更改时审核记录。
如果你想看到这个代码,请告诉我,但我只是想知道是否有可能只根据工作角色审核记录。在employee表中有一个job role列,例如this。
Job_role
Director
Security Guard II
Administration Manager
Warehouse Assistant I
我只希望它审核由例如保安人员或仓库助理所做的更改,因为这些工作角色不应该真正与员工数据库进行交互。
任何帮助表示感谢。
谢谢
答案 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;