首页 > 其他分享 >记一次数据误删操作通过闪回以及日志挖掘恢复

记一次数据误删操作通过闪回以及日志挖掘恢复

时间:2023-05-17 09:25:55浏览次数:43  
标签:闪回 timestamp 误删 seg redo sql 日志 数据

由于开发人员不小心删除业务表然后想通过我来恢复数据,我第一时间发现由于undo_retention参数只保留15分钟,通过闪回这种方法并不能恢复数据,

然后通过日志挖掘来截取该时间段数据,然后通过创建记录表来保存到记录表里方便查询。通过记录表里的数据来恢复数据。以下命令是一些操作的命令

 

 

日志挖掘通过指定时间段来挖取数据。--_--尽量时间点要靠近一些不然时间点差距过大而导致数据量过大

BEGIN
DBMS_LOGMNR.START_LOGMNR(STARTTIME => to_date('2022-07-12 09:35:00' ,'yyyy-mm-dd hh24:mi:ss'),
ENDTIME => to_date('2022-07-12 09:45:00' ,'yyyy-mm-dd hh24:mi:ss' ),
OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG +DBMS_LOGMNR.CONTINUOUS_MINE);
END;
/

通过创建记录表保留数据以及查询

create table 记录表 tablespace 表空间 as select * from v$logmnr_contents;

select t.scn,t.timestamp,t.xid,t.seg_owner,t.seg_name,t.operation,t.sql_redo,t.sql_undo from 记录表 T where seg_owner='用户' and operation='DELETE';

数据量过大就用时间段查询数据

set echo off
set termout off
set lines 132 pages 2000
col sql_redo for a80
col seg_name for a5
select seg_name,sql_redo,to_char(START_TIMESTAMP,'yyyy-mm-dd hh24:mi:ss')START_TIMESTAMP from v$logmnr_contents
where sql_redo like 'update "SYS"."OBJ$"%'
and sql_redo like '%"DATAOBJ#" = ''96786''%';

 

如果undo没有过期也可以用闪回恢复,这样是最方便的

select * from 被误删表 as of timestamp to_timestamp('20230310 20:59:00','yyyymmdd hh24:mi:ss');

开启行移动

alter table 表名  enable row movement; 

数据恢复

flashback table 表名 to timestamp to_timestamp('20230310 20:59:00','yyyymmdd hh24:mi:ss')

 

 

总的来说各有优劣吧,通过闪回可以快速恢复以及数据不会缺失,但是太依赖undo日志,如果被覆盖就无能为力,以及需要知道被删的表面。

而日志挖掘虽然会截取更长时间的数据但是可能会缺失数据,这也是没有办法的办法了吧。

 

标签:闪回,timestamp,误删,seg,redo,sql,日志,数据
From: https://www.cnblogs.com/liusuForget/p/17407510.html

相关文章

  • Android Studio学习日志二,Toast用法
    首先,创建一个util,在ToastUtil里面调用方法在里面编写Toast类的代码,方便以后调用packagecom.example.appdemo.util;importandroid.content.Context;importandroid.widget.Toast;publicclassToastUtil{publicstaticToastmToast;publicstaticvoidsh......
  • Android Studio学习日志一,直接跳转和密码正确跳转
    记录一下我跟着手把手教你用AndroidStudio写一个APP_UP主Superior-Leo进行app开发小项目UP主的笔记首先,在资源文件创建一个文件夹,用来放APP背景图片,按钮图片一、直接跳转第一步、声明控件第二步,找到控件第三步骤,实现跳转代码packagecom.example.appdemo;importa......
  • MySQL日志及分类
    日志是数据库的重要组成部分,主要用来记录数据库的运行情况、日常操作和错误信息。在MySQL中,日志可以分为二进制日志、错误日志、通用查询日志和慢查询日志。对于MySQL的管理工作而言,这些日志文件是不可缺少的。分析这些日志,可以帮助我们了解MySQL数据库的运行情况、日常操......
  • filebeat日志收集到elasticsearch
    filebeat是轻量级日志收集框架,go语言开发。需要在每个日志收集的终端部署,配置日志文件路径。可以将日志收集到es,logstash,这里以收集到es为例。配置主要分为input和out两块。解压后有filebeat.yml配置文件,主要针对该文件进行配置。-type:log#日志文件位置paths:-/data......
  • 使用Chainsaw v2远程察看log4j日志
    使用Chainsawv2远程察看log4j日志[url]http://fangyuncn.wordpress.com/2010/03/19/%E4%BD%BF%E7%94%A8chainsaw-v2%E8%BF%9C%E7%A8%8B%E5%AF%9F%E7%9C%8Blog4j%E6%97%A5%E5%BF%97/[/url]MonitoringJBosslogfilewithChainsawv2[url]http://absszero.......
  • Python基础篇:日志logging
    一:日志级别CRITICAL=50FATAL=CRITICALERROR=40WARNING=30WARN=WARNINGINFO=20DEBUG=10NOTSET=0二:日志格式化https://docs.python.org/3/library/logging.html#logrecord-attributesAttributenameFormatDescriptionargsYoushouldn’tneedtoformatthis......
  • 使用 Easysearch,日志存储少一半
    在海量日志存储场景中,索引膨胀率是一个关键指标,直接影响存储成本和查询性能。它表示原始数据与索引数据在磁盘上所占空间的比率。较高的索引膨胀率不仅增加了存储成本,而且可能会影响查询速度,尤其是在I/O密集型的查询中。因此,我们需要密切关注和优化索引膨胀率。接下来,我们将比较......
  • Logstash关于日志清洗记录学习及应用
    logstash日志清洗:日志清洗任务,给了我乱七八糟资料之后看的一脸懵,最后决定自己动手整理整理这样有头绪点,记录一下自己学习过程。其中涉及到一些ip内容的我都改为ip,其他保持一致,欢迎大家一起讨论,我也是刚开始学习这个,如有写的不对请多指教。一、学习阶段1、首先理解logstash中各个......
  • elk日志收集之rsyslog软连接监控文件深度坑
    业务中通过rsyslog监控本地文件收集了一些redis和mc的慢日志,推到elk集群分析,这些日志一天一个文件,每晚零点5分通过计划任务用软连接的方式将新的文件固定到指定文件下,但是最近发现日志丢了很多,分析中发现了一个深坑,先说下现有的配置:rsyslog的配置如下,监控固定的文件:local6.*......
  • Tomcat日志大
    #LicensedtotheApacheSoftwareFoundation(ASF)underoneormore#contributorlicenseagreements.SeetheNOTICEfiledistributedwith#thisworkforadditionalinformationregardingcopyrightownership.#TheASFlicensesthisfiletoYouundertheA......