前面的语句审计、权限审计以及对象审计等标准审计: 只能发现访问了哪些对象以及由哪个用户访问,而不能知道用户访问了哪个对象中的哪些行哪些列。为此Oracle从9i开始加入了细粒度审计.
细粒度审计<使得审计变得更为关注某个方面,并且更为精确。可以在访问某些行和列时审计对表的访问,从个极大地减少了审计表的记录数量。
细粒度审计被称为FGA,有dbms_fga的pl/sql程序来实现。 dbms_fga包含了以下4个过程: add_policy() 添加使用为此和审计列的审计策略。 drop_policy() 删除审计策略 disable_policy() 禁用审计策略,但保留与表或视图关联的策略。 enable_policy() 启用策略。
按照需求创建细粒度审计名为dept_audit的审计如: begin dbms_fga。add_policy( object_schema -> 'scott', 对象模式指定为soctt 用户模式 object_name -> 'dept', 对象为dept表 policy_name ->'dept_audit', 策略名称 audit_column ->'deptno', 对应的列 audit_condition -> 'deptno > 20'); 对应列的条件>20,否则不会被审计。 end; /
[select * from dept where deptno < 20; select * from dept wheredeptno > 20; 查看细粒度审计信息记录: select timestamp,policy_name,sql_text from dba_fga_audit_trail;