Oracle 11g闪回数据归档新功能(一)

日期: 2008-12-17 翻译:开心果 来源:TechTarget中国 英文

  简介

  Oracle数据库10g提供了五个新的闪回功能:闪回版本查询,闪回事务查询,闪回删除,闪回表和闪回数据库。Oracle数据库11gR1提供了一个有趣的新的闪回功能:闪回数据存档,它允许一个Oracle数据库管理员维护一个记录,对指定时间范围内对所有表的的改变情况进行记录。

  许多年前——事实上,在上个世纪-我是一名美国大西部饮料生产厂家人力资源系统的承包商。有一天,人力资源总监问我:“如何为我们的雇员数据配置一个delta表,使我们能够跟踪所有对雇员数据的更改情况?”出现在我脑袋中的答案就像最近的美国总统大选期间CNN用来显示和分析投票结果的“神奇地图”一样:

  我想创建一个名为EMPLOYEES_HISTORY的表,除了增加了一个相应的时间戳记的日期和时间的变化外,它与Employees表的列完全一样。

  我希望把这个新表放在一个单独的表空间。

  我想套用外键参照完整性约束EMPLOYEES_HISTORY表,以确保两个表之间的数据一致。

  最后,我想创建一个AFTER … FOR EACH ROW触发器,无论何时在Employees表上发生INSERT,UPDATE或DELETE事务时,都将在EMPLOYEES_HISTORY表中插入delta记录。

  然后一些潜在的问题开始萦绕着我,这样做了会发生什么,我不停地问我自己,如果某人:

  禁用了EMPLOYEES_HISTORY表上的触发器,并且忘记重新开启了,会发生什么事情?

  需要向EMPLOYEES表中增加新列,或修改数据类型,但忘记同步修改EMPLOYEES_HISTORY表上对应的列了,会发生什么?

  虽然同时对EMPLOYEES和EMPLOYEES_HISTORY表做了一致的修改,但忘记修改触发器了,会发  生什么?

  如果需要删除EMPLOYEES表的列或将其标记为UNUSED时,会发生什么?

  意外TRUNCATE掉EMPLOYEES_HISTORY表时会发生什么?

  意外删除了EMPLOYEES_HISTORY表时会发生什么?甚至更糟糕的是删除了EMPLOYEES表时会发生什么?

  这些问题的简单答案是,如果真发生了这些事情,我不得不向客户解释为什么弄丢了EMPLOYEES_HISTORY表中的delta数据。

  用闪回数据归档实现Oracle“完全撤销”

  如果我拥有Oracle 11g,我会直接告诉客户我花几分钟就能恢复数据,Oracle 11gR1新的闪回数据归档(FBDA)功能创建一个独立的仓库保留表中数据改变的历史记录。

  FBDA信息存储在一套独立的对象中,跟踪目标表的事务历史,这些对象存储在一个或多个表空间中,FBDA表的名称是由系统自动产生的,可以通过视图DBA_FLASHBACK_ARCHIVE_TABLES查看,一旦在表上开启了FBDA,所有保留的事务历史都可以查看,这样就不用再为关键事务表创建对应的历史跟踪表了,那样做很麻烦,因为创建历史跟踪表后,还有编写复杂的触发器,确保历史数据被精确跟踪。

  历史信息的捕捉也是非常高效的,因为Oracle 11g专门修改了内核,使保留历史数据的性能开销减到最小,此外,这些历史数据以压缩格式存储,减少了存储的需要,另外,只要在表上开启了FBDA,Oracle 11g就不会再对历史数据做使其无效的操作(如删除或清空目标表)或阻止捕捉(如删除目标表的列)。

  下面解释一下FBDA是如何工作的:

  闪回数据归档(FBDA)是一个新的后台进程,负责跟踪和归档开启了FBDA的表的历史数据,它通过异步处理自动收集和向指定的闪回数据归档写入原始数据。

  当开启FBDA的表中任何数据发生变化时,FBDA首先询问存储在数据库缓冲区中的UNDO数据,如果数据仍然在那里,FBDA就会使用它,如果UNDO数据已经从数据库缓冲区中移除,FBDA就会尝试从UNDO表空间中的UNDO段中获取数据发生的变化。

  当FBDA捕捉到变化数据时,它会整理开启FBDA的表中的行,然后将这些行写入FBDA中的历史表,这些表数据经过压缩,就和内部分区一样。

  有趣的是,FBDA不包括捕获数据的原始索引,当在FBDA中可以对历史数据创建另一个索引。

  自动保留策略:按照类似的保留需求,可以将FBDA对象中的历史表数据聚集在一起,Oracle 11g也提供了自动清理FBDA中数据的方法,一旦超出了指定的保留期限就会自动执行清理工作,多个表可以共享同一个数据保留和清理策略,因为FBDA是由一个或多个表空间构成的,所以可以创建多个FBDA,每个FBDA指定不同的保留期限,这样就可以创建多个FBDA满足不同需求的保留策略,下面是一些常见的示例:

  为普通的短期历史查询保留90天

  为普通的长期历史查询保留1整年

  为国家法律需要保留20年

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐