案例背景:用户反映有张表的数据总是莫名其妙被删除了,希望能恢复数据,并找出删除数据的人。
一、案例环境准备
要能使用 logminer 工具,数据库必须启用最小补充日志
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
新建一张表 TEST ,插入6行数据做测试

接下来,删除几行数据
# 正常删除
SQL> DELETE FROM TEST WHERE ID=1;
SQL> COMMIT;
# 绑定变量方式删除
SQL> DELETE FROM TEST WHERE ID=:1;
SQL> COMMIT;
假设发现删除的时候已经过去了很长时间,闪回恢复已经无法发挥作用,那么接下来只能挖掘日志了,通过挖掘日志可以得到恢复数据的SQL语句,还能追查是谁在什么时候删除了数据。
二、确定挖掘其实时间
确定挖掘起始时间通常可以使用一次啊三种方法
1、查询 DBA_HIST_ACTIVE_SESS_HISTORY , V$SQLAREA 视图,看是否能找到删除数据的SQL
SQL> SELECT SQL_ID,LAST_ACTIVE_TIME,SQL_FULLTEXT FROM V$SQLAREA WHERE UPPER(SQL_TEXT) LIKE 'DELETE

当数据被误删且闪回恢复不可用时,通过Oracle的Logminer工具可以挖掘日志恢复数据并追踪操作者。本文详细介绍了如何利用Logminer设置数据字典、确定挖掘时间、添加归档日志、开始和结束日志挖掘,以及从结果中找到恢复数据的SQL语句和操作信息。
最低0.47元/天 解锁文章
928

被折叠的 条评论
为什么被折叠?



