1

我已经设法在 Oracle 中创建了一个审计表,当记录被更新、删除或插入到员工表中时,它会审计记录。我也这样做了,因此它仅在办公时间以外(上午 9 点至下午 5 点)进行更改时审核记录。

如果您想查看此代码,请告诉我,但我只是想知道是否也可以仅根据工作角色审核记录。在员工表中有一个工作角色列,例如这样。

 Job_role
 Director
Security Guard II
Administration Manager
Warehouse Assistant I

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

任何帮助表示赞赏。

谢谢

4

1 回答 1

1

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

为此,您使用 CREATE CONTEXT 命令声明命名空间。 文档在这里。

然后你有一个 AFTER-LOGON 数据库触发器,它查询 USERS 表并使用DBMS_SESSION.set_context(). 文档在这里。

最后,当涉及到审计命令时,您可以读取存储的值SYS_CONTEXT() 并做出适当的决定:

if sys_context('AUDIT_INFO', 'JOB_DESCR') = 'Warehouse Assistant I'   
then
    call_your_audit_proc(.....);
end if;
于 2013-04-12T13:31:42.087 回答