ric*_*ics 6 database oracle logging
我对Oracle数据库中常见的日志记录方法感兴趣.我们的方法如下:
我们为要记录的表创建一个日志表.日志表包含原始表的所有列以及一些特殊字段,包括时间戳,修改类型(插入,更新,删除),修饰符的id.原始表上的触发器为每个插入和删除创建一个日志行,为修改创建两行.日志行包含更改原始行之前和之后的数据.
虽然使用此方法可以及时挖掘记录的状态,但它有一些缺点:
还有其他可能性吗?可以使用哪种工具来解决这个问题?
我只知道log4plsql.这个工具的优点/缺点是什么?
编辑:根据Brian的回答,我找到了以下参考资料,解释了标准和细粒度审核.
Bri*_*ian 10
这听起来像是在'审计'之后.Oracle有一个名为Fine Grain Auditing(FGA)的内置功能.简而言之,您可以审核所有内容或特定条件.真正酷的是你可以'审核'选择以及交易.简单的命令来开始审计:
audit UPDATE on SCOTT.EMP by access;
Run Code Online (Sandbox Code Playgroud)
将其视为select语句的"触发器".例如,您创建策略:
begin
dbms_fga.add_policy (
object_schema=>'BANK',
object_name=>'ACCOUNTS',
policy_name=>'ACCOUNTS_ACCESS'
);
end;
Run Code Online (Sandbox Code Playgroud)
定义策略后,当用户以常规方式查询表时,如下所示:
select * from bank.accounts;
Run Code Online (Sandbox Code Playgroud)
审计跟踪记录此操作.您可以通过发出以下内容来查看路径
select timestamp,
db_user,
os_user,
object_schema,
object_name,
sql_text
from dba_fga_audit_trail;
TIMESTAMP DB_USER OS_USER OBJECT_ OBJECT_N SQL_TEXT
--------- ------- ------- ------- -------- ----------------------
22-OCT-08 BANK ananda BANK ACCOUNTS select * from accounts
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13186 次 |
最近记录: |