Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle的行级修订控制?_Oracle_Logging_Revision - Fatal编程技术网

Oracle的行级修订控制?

Oracle的行级修订控制?,oracle,logging,revision,Oracle,Logging,Revision,我正在寻找一个oracle包,它将捕获对表的更改并将其保存到日志或日志表中。例如,执行sql语句,例如 insert into foo(x,y) values (12,34); 将这些操作捕获到适当的表中,例如: timestamp who operation column value --------- --- --------- ------ ----- 12-JAN-2012 13:22 MH inser

我正在寻找一个oracle包,它将捕获对表的更改并将其保存到日志或日志表中。例如,执行sql语句,例如

insert into foo(x,y) values (12,34);
将这些操作捕获到适当的表中,例如:

timestamp          who     operation   column    value
---------          ---     ---------   ------    -----
12-JAN-2012 13:22  MH      insert      x         12
12-JAN-2012 13:22  MH      insert      y         13

如果有基于此信息生成sql语句的工具,那就太好了。这可以通过在目标表上进行简单的插入操作来实现。也许是这样的:

CREATE OR REPLACE TRIGGER foo_audit
AFTER INSERT OR DELETE OR UPDATE ON foo
FOR EACH ROW
BEGIN
    IF INSERTING THEN
        ...
    ELSIF UPDATING THEN
        ...
    ELSIF DELETING THEN
        ...
    END IF;

END;
/

这种触发器的格式非常简单,您实际上可以通过编程生成它们

这可以使用细粒度审核来完成:

作为替代方案,您还可以为相关表启用闪回归档。然后可以在过去的任何时候查询表的内容。但这并不会告诉你是谁做了改变(以及是如何做的)