Oracle 基于值审计
Value-Based Auditing:基于值的审计
进行数据库审计时会记录审计对象中发生的插入、更新和删除操作,但是不会捕获更改的实际值。
要扩展数据库审计,可使用基于值的审计,利用数据库触发器(事件驱动的PL/SQL 构造)来捕获更改的值。
用户在相应触发器的表中插入、更新或删除数据时,触发器在后台将审计信息复制到包含审计信息的表中。
因为审计触发器代码在每次插入、更新或删除操作发生时都必须执行,所以与标准数据库审计相比,使用基于值的审计时,性能下降幅度比较大。
性能下降幅度取决于触发器代码的效率。只在标准数据库审计捕获的信息不足的情况下,才使用基于值的审计。
基于值的审计由用户或第三方代码实施。Oracle DB 提供了可用来构建基于值的审计系统的PL/SQL 构造。
基于值的审计的关键部分是审计触发器,这是一个单纯为了捕获审计信息而构造的PL/SQL 触发器。
以下是一个审计触发器的典型示例:
SYS@orcl> drop table hr.e purge;
SYS@orcl> create table hr.e as select * from hr.employees;
SYS@orcl> create table log_aud ( uname varchar2(20),udate date,empid number,oldsal number,newsal number);
SYS@orcl> create or replace trigger tri_emp_sal
2 after update of salary
3 on hr.e
4 for each row
5 declare
6 pragma autonomous_transaction;
7 begin
8 if :new.salary > 5000 then
9 insert into log_aud
10 values(sys_context('userenv','current_user'),sysdate,:old.employee_id,:old.salary,:new.salary);
11 end if;
12 commit;
13* end;
/
SYS@orcl> update hr.e set salary=6000 where employee_id=200;
SYS@orcl> select * from log_aud;
UNAME UDATE EMPID OLDSAL NEWSAL
-------------------- ---------------- ---------- ---------- ----------
SYS 27-APR-16 200 4401 6000
相关文章
- Oracle基于布尔的盲注总结
- poi操作oracle数据库导出excel文件2
- 问题-delphi无法编辑oracle表
- 《oracle每日一练》oralce数据库的导入导出
- oracle字段NCHAR查询,
- ORACLE临时表空间总结
- 去除前后空格,Oracle和SQLSERVER都适用。ltrim(rtrim(’ ‘))
- Oracle Install logs
- 使用Navicat for Oracle新建表空间、用户及权限赋予
- MySql、Oracle、MSSQL中的字符串的拼接
- oracle中schema指的是什么?
- 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇一:WPF常用知识以及本项目设计总结
- Oracle Install logs
- Oracle 手工建库第三步 创建数据字典
- C# VS2010中,用微软自带的System.Data.OracleClient来连接Oracle数据库
- atitit.客户端连接oracle数据库的方式总结
- Window Oracle 11G RMAN 单实例异机迁移恢复
- 药物优化中的Oracle什么意思?评价指标(Metrics)是什么?