近日正在学习审计相关的知识,以下是一点理解,不知对否,恳请各位指点:
从方案对象审计选项视图DBA_OBJ_AUDIT_OPTS的脚本可以看出,如果要对某张表进行审计,可以通过修改tab$表的audit$列的值达到对相应表的审计控制,达到与“audit all on 表名 by access”命令相同的效果,因此可以创建一系统触发器,在某个用户登录时触发修改tab$的值以开通审计功能,记录下该用户对另一用户下的某张表的所有操作。
可是还有个问题就是,这样是开通了在某一张表上的审计功能,会纪录所有用户在该表上的操作信息,这样一来,恐怕会对系统资源有比较显著的消耗。请问各位,如何控制,以使得审计只针对某个用户在某张表上的操作,而不是所有用户对该表的操作?
还有就是经过测试发现,不能在触发器中执行audit/noaudit all on tab1 by access;这条语句(否则就不会想要通过修改相关系统表的值来达到开启/关闭审计的目的),而我就想建立一个系统级触发器,当某个用户登录时,开启审计功能,其登出时,关掉审计功能,就只对该用户的操作进行审计,这样就可以把审计对系统的影响降低,毕竟被审计的用户是不经常登入系统的,但其任何操作被记录下来。