ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 数据库的闪回

数据库的闪回

原创 Linux操作系统 作者:tonglei2000 时间:2012-01-11 09:05:18 0 删除 编辑
今天用户说他数据库的一条记录不知道被什么人给删除了,也不知道是有人恶意破坏还是具体其它原因!
和用户商量了一下,首先需要找到具体那个时间点被删掉的,确定使用数据库闪回查询,使用的语句是select  * from tablename as of scn scnnum  where 查询条件。
scn也可以换成timestamp,我们查询下午3点05分记录已经没有了,查询2点50的时候报ora-01555的错。用户说2点50的时候他还登陆过。现在基本可以把时间锁定在这15分钟。
然后开始分析当时的归档,希望找到数据库都在干什么。直接用logmnr分析归档太复杂了,用户打开toad,里面直接由logmnr的按钮,选择具体哪个归档,toad就开始进行分析,出来结果我们手工保存成文本文件,使用utraledit进行分析查找,我们在第二个实例的一个归档上找到了该条语句,delete那条记录。
查到这,知道具体的时间,具体执行的语句,我们抓了改实例主机上监听的log,查看没有发现可疑的连接,然后继续分析归档日志里面执行该语句前后数据库执行的其他语句,没有发现可疑的语句,基本判断不是有人恶意破坏,有发现上面有一条类似的语句,也是删除一条记录,两个删除时间基本挨着,有相同的条件关联。用户开始分析具体的应用程序,最后结论是程序的一个bug。
以前对闪回一知半解。又查看了具体的资料,尤其是闪回查询报ora-01555回滚段的错,他使用回滚段,那flash_recover_area用来存储什么,那个里面设置的db_flashback_retention_target的值又是管干啥的呢,回收站又是干啥的,存储在在哪了呢。
回来看看相关的资料,理解如下,flashback在10g中得到加强,分为三种类型的闪回,第一种是database的闪回,这使用的是flashbacklog,该log存储在flash_recover_area区里面,想要实现数据库的闪回,media错误是不行的,数据库也必须事先打开flash

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13337857/viewspace-714720/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-10-19

  • 博文量
    109
  • 访问量
    212527