Oracle Total Recall 是 Oracle Enterprise Edition (11g) 的一个选项,可以提供历史数据的安全保留和访问。
白皮书中写道:
闪回数据存档为每个跟踪表创建一个内部历史表。内部历史表最初是启用 FDA 的表的副本,并带有附加元数据列。当跟踪表中的一个或多个列更新时,将向历史表中插入一个新行,该行是事务之前的行的前像。UPDATE 和 DELETE 操作会在历史表中生成新记录,但 INSERT 操作不会 - 插入的行出现在基表中。内部历史表经过分区以提高性能,并经过压缩以减少磁盘空间要求。不允许对内部历史表进行任何修改。应用程序和用户可以使用“AS OF”和“VERSIONS BETWEEN”SQL 结构无缝查询历史数据。
那里是否有一个(开源)历史记录的替代方案?
答案1
您可以在大多数 RDBMS 中使用日志恢复,但它不像 Oracle 那样“简单”。基本上,所有 RDBMS 都可以跟踪所有执行的查询。
因此,您可以在单独的服务器上使用它来重放完整备份中已执行的查询,并在任何给定时间点恢复数据库的状态(即,您可以看到事务 xxx 之后 12 月 3 日 13:53 的数据库状态)。您还可以分析日志并查看发生了什么。
这是非常有限的并且不太实用。
在这里查看 PostgreSQL 文档:http://www.postgresql.org/docs/8.4/static/continuous-archiving.html
答案2
这通常是通过触发器(或在 ORM 领域,使用等效信号)来完成的。我不知道有什么通用的数据库内解决方案,尽管像 PGQ 这样的复制队列很接近。
答案3
你可以看看工作区管理器它是标准数据库的一部分。
该功能的概述如下: http://www.oracle-base.com/articles/9i/WorkspaceManagement9i.php