愿你出走半生,归来仍是少年

Kratos
专注于用户阅读体验的响应式博客主题
  1. 首页
  2. Oracle
  3. 正文

使用LogMiner抢救误删数据

2019年7月9日 3874点热度 0人点赞 1条评论

接同事电话,上午十点多,新来的开发人员误删十几个表,并且已经做了插入操作,问能否恢复。
误操作是这样的:“先delete清空表里面的数据,然后insert一份其他的数据;大概十几个表”
给他们flashback恢复语句:
CREATE TABLE tmpMytable AS SELECT * FROM test AS OF TIMESTAMP to_timestamp('20190418 15:40:00', 'yyyymmdd hh24:mi:ss');
答复说使用这个办法,只恢复了3个表的数据,“UNISEQUENC、T_EOM_CITY、T_EOM_DISTRICT”,其他表在恢复时提示“01555快照过旧错误”。
问有无其他办法,于是想到了这个一直没有试过的LogMiner。
先确认了数据库不是归档模式,那么就需确认onlinelog是否还没有覆盖,幸运的是,当初配置的redolog文件够大,每个2G,有3组,还未覆盖,于是通过LogMiner恢复就有了可能。借此也熟悉一下具体的操作步骤,记录如下。

■安装LogMiner
@?/rdbms/admin/dbmslm.sql
@?/rdbms/admin/dbmslmd.sql

■配置LogMiner文件夹
CREATE DIRECTORY utlfile AS '/home/oracle/logmnr';
alter system set utl_file_dir='/home/oracle/logmnr' scope=spfile;

■重启数据库

■创建字典文件
dba用户登陆,执行:
EXECUTE dbms_logmnr_d.build(dictionary_filename => 'dictionary.ora', dictionary_location =>'/home/oracle/logmnr');

■加入需分析的日志文件
Oracle的LogMiner可以分析在线(online)和归档(offline)两种日志文件,
加入分析日志文件使用dbms_logmnr.add_logfile过程,第一个文件使用dbms_logmnr.NEW参数,后面文件使用dbms_logmnr.ADDFILE参数。

BEGIN
dbms_logmnr.add_logfile(logfilename=>'/u01/app/oracle/hebeicnc/redo01a.log',options=>dbms_logmnr.NEW);
dbms_logmnr.add_logfile(logfilename=>'/u01/app/oracle/hebeicnc/redo02a.log',options=>dbms_logmnr.ADDFILE);
END;
/

■使用LogMiner进行日志分析
Oracle的LogMiner分析时分为无限制条件和限制条件两种,无限制条件中分析所有加入到分析列表日志文件,限制条件根据限制条件分析指定范围日志文件。
execute dbms_logmnr.start_logmnr(dictfilename=>'/home/oracle/logmnr/dictionary.ora');
OR
execute dbms_logmnr.start_logmnr(options=> dbms_logmnr.dict_from_online_catalog + dbms_logmnr.committed_data_only);
OR 提取特定时间的日志
execute dbms_logmnr.start_logmnr(dictfilename=>'/home/oracle/logmnr/dictionary.ora', starttime=>to_date('2019-07-09 10:25:00','YYYY-MM-DD HH24:MI:SS'), endtime=>to_date('2019-07-09 10:45:59','YYYY-MM-DD HH24:MI:SS'))

select sql_redo from v$logmnr_contents t where t.seg_name ='T_EOM_DISPATCH_TABLE';
select sql_redo from v$logmnr_contents t where t.seg_name ='T_EOM_GENERAL_INFO';
select sql_redo from v$logmnr_contents t where t.seg_name ='T_EOM_FEEDBACK_TABLE';

select sql_redo from v$logmnr_contents t where lower(sql_redo) like '%delete from t_eom_dispatch_table%';
select sql_redo from v$logmnr_contents t where lower(sql_redo) like '%delete from t_eom_general_info%';

■结束日志挖掘
exec dbms_logmnr.end_logmnr; 

使用如上步骤,将最后的查询结果输出到spool临时文件,在后续处理后,执行这些得到的SQL语句重新插入到数据库,即完成了10:25-10:45期间的所有误删操作的数据恢复。

标签: 暂无
最后更新:2019年7月9日

liking

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

  • liking

    如果不启用supplemental log补充日志,主要会有一些操作日志无法挖掘,主要是update相关的操作。

    2019年12月24日
    回复
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    取消回复

    归档

    • 2026 年 6 月
    • 2026 年 3 月
    • 2026 年 2 月
    • 2025 年 12 月
    • 2025 年 11 月
    • 2025 年 4 月
    • 2025 年 2 月
    • 2025 年 1 月
    • 2024 年 12 月
    • 2024 年 10 月
    • 2024 年 7 月
    • 2024 年 5 月
    • 2024 年 4 月
    • 2023 年 11 月
    • 2023 年 10 月
    • 2023 年 8 月
    • 2023 年 7 月
    • 2023 年 5 月
    • 2023 年 3 月
    • 2023 年 2 月
    • 2022 年 12 月
    • 2022 年 11 月
    • 2022 年 10 月
    • 2022 年 9 月
    • 2022 年 8 月
    • 2022 年 6 月
    • 2022 年 5 月
    • 2022 年 3 月
    • 2022 年 2 月
    • 2022 年 1 月
    • 2021 年 12 月
    • 2021 年 11 月
    • 2021 年 10 月
    • 2021 年 8 月
    • 2021 年 7 月
    • 2021 年 6 月
    • 2021 年 5 月
    • 2021 年 4 月
    • 2021 年 3 月
    • 2021 年 2 月
    • 2021 年 1 月
    • 2020 年 12 月
    • 2020 年 11 月
    • 2020 年 10 月
    • 2020 年 9 月
    • 2020 年 8 月
    • 2020 年 7 月
    • 2020 年 6 月
    • 2020 年 5 月
    • 2020 年 3 月
    • 2020 年 2 月
    • 2019 年 12 月
    • 2019 年 11 月
    • 2019 年 10 月
    • 2019 年 9 月
    • 2019 年 8 月
    • 2019 年 7 月
    • 2019 年 6 月
    • 2019 年 5 月
    • 2019 年 4 月
    • 2019 年 2 月
    • 2018 年 12 月
    • 2018 年 11 月
    • 2018 年 8 月
    • 2018 年 7 月
    • 2018 年 6 月
    • 2018 年 5 月
    • 2018 年 4 月
    • 2018 年 3 月
    • 2018 年 2 月
    • 2018 年 1 月
    • 2017 年 12 月
    • 2017 年 11 月
    • 2017 年 8 月
    • 2017 年 6 月
    • 2017 年 5 月
    • 2017 年 3 月
    • 2016 年 9 月
    • 2016 年 8 月
    • 2016 年 7 月
    • 2016 年 6 月
    • 2016 年 5 月
    • 2015 年 10 月
    • 2014 年 10 月
    • 2014 年 8 月
    • 2014 年 3 月
    • 2013 年 12 月
    • 2013 年 8 月
    • 2013 年 7 月
    • 2013 年 6 月
    • 2013 年 4 月
    • 2012 年 11 月
    • 2012 年 7 月
    • 2012 年 6 月
    • 2012 年 5 月
    • 2012 年 2 月
    • 2011 年 10 月
    • 2011 年 8 月
    • 2011 年 3 月
    • 2010 年 11 月
    • 2010 年 10 月
    • 2010 年 9 月
    • 2010 年 8 月
    • 2010 年 7 月
    • 2010 年 5 月
    • 2010 年 4 月
    • 2010 年 1 月
    • 2009 年 11 月
    • 2009 年 8 月
    • 2009 年 5 月
    • 2009 年 3 月
    • 2009 年 2 月
    • 2008 年 11 月
    • 2008 年 10 月
    • 2008 年 8 月
    • 2008 年 4 月
    • 2007 年 4 月

    分类

    • BigData
    • kubernetes
    • linux
    • MongoDB
    • MySQL
    • Oracle
    • PostgreSQL
    • 备份恢复
    • 安装配置
    • 性能优化
    • 技术杂谈
    • 未分类
    • 梦回红楼
    • 测试
    • 生活点滴
    • 网站建设
    • 自制工具
    • 轻松一刻
    • 运维知识
    • 问题处理

    COPYRIGHT © 2026 愿你出走半生,归来仍是少年. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang