首页 > 其他分享 >生产数据误删恢复系列之学习使用FY_Recover_Data进行恢复

生产数据误删恢复系列之学习使用FY_Recover_Data进行恢复

时间:2024-10-22 18:18:44浏览次数:3  
标签:数据 FY 误删 SQL test Recover Data select

一、安装FY_Recover_Data

下载地址:https://hellodba.com/reader.php?ID=191&lang=CN

[root@myoracle ~]# unzip FY_Recover_Data.zip 
[root@myoracle ~]# mv FY_Recover_Data.pck /home/oracle/
[root@myoracle oracle]# chown -R oracle.oinstall FY_Recover_Data.pck
SQL>  @/home/oracle/FY_Recover_Data.pck

在这里插入图片描述

二、原理

如果我们已有一套元数据及数据块,尝试用被 TRUNCATE 的用户数据块内容取代另一处的用户数据块内容,是否能够 “蒙骗” Oracle 使其读出这些数据呢?回顾表扫描的过程,此方法似乎可行。只需设法构造一个结构相同且具备完整元数据信息以及格式化了的用户数据块的傀儡表对象。接着找出被 TRUNCATE 的用户数据块,再将其数据内容部分嫁接到傀儡对象的用户数据块上,让 Oracle 误以为这是傀儡对象的数据,如此便能促使 Oracle 进行扫描并读出数据内容。

+-------------------------+  
                                                | Copy Of Dummy Data File |  
                                                |  (With Formmated Blocks)|  
                                                +-------------------------+  
                                                            ||  
                                                            \/  
                                                (Blcok Header, Block Tail)  
                                                            ||  
                                                            \/  
+-------------------+                                +----------------+     Table Scan    +---------------+  
| Source Data File  | => (Data Block Content) =>     |  Dummy Table   |    ============>  | Restore Table |  
|(Without Meta Data)|                                |(With Meta Data)|                   +---------------+  
+-------------------+                                +----------------+

在这里插入图片描述

三、测试

(一)模拟新增数据

SQL> create table test as select * from dba_objects;

SQL> select count(*) from test;

(二)模拟truncate误删除

SQL> truncate table test;

SQL> select count(*) from test;

在这里插入图片描述

(三)用工具进行恢复

SQL> exec fy_recover_data.recover_truncated_table('SYS','TEST');

在这里插入图片描述
根据恢复日志,会创建临时中转表test 和 t e s t 和test 和test ,恢复的数据保存在 t e s t ,恢复的数据保存在test ,恢复的数据保存在test$中

SQL> select count(*) from test$$;

SQL> insert into test select * from test$$;

SQL> select count(*) from test;

在这里插入图片描述

四、总结

对于使用工具fy_recover_data进行数据恢复,需要确保:

①truncate之后,需要保证没有新的数据进入表中,否则无法还原;

②存放该表的数据文件块不能被覆盖,否则无法完整还原数据。

在发生故障后,可以迅速使用:

SQL> alter tablespace users read only;
SQL> alter tablespace users read write;

来关闭/开启表空间的写功能,这样可以保证数据文件不会被覆写。这个也比较鸡肋了,适用的场景有限,大家可以根据场景不同来进行数据的恢复。

参考链接:https://www.cnblogs.com/lijiaman/p/12747658.html
https://hellodba.com/reader.php?ID=191&lang=CN
欢迎关注公众号《小周的数据库进阶之路》,更多精彩知识和干货尽在其中。
在这里插入图片描述

标签:数据,FY,误删,SQL,test,Recover,Data,select
From: https://blog.csdn.net/qq_36936192/article/details/143134696

相关文章

  • 生产数据恢复系列之使用闪回查询恢复Oracle delete误删数据
    一、背景在日常运维过程中,如果不小心使用高危命令删除了数据库的数据,如果没有数据备份,记住不要跑路噢,跟着我一起学习如何恢复数据。二、概念普及UNDO表的作用Undo表存储了已提交和未提交事务所产生的旧数据版本,在需要回滚事务或实现并发控制时使用。每当对数据库进行DM......
  • 在iOS开发中如何使用Core Data管理数据持久化
    摘要:在iOS开发中运用CoreData管理数据持久化包括以下要点:1、掌握CoreData框架基础;2、实现数据模型的设计;3、熟悉数据存储与检索;4、利用上下文管理数据;5、数据迁移和版本控制。在这其中,数据模型的设计是核心,它影响整个应用的数据结构和未来的扩展性。数据模型设计指的是在Xcode中......
  • 一文读懂什么是数据即产品(Data as a Product,DaaP)
    企业每天都要产生并消费大量数据,但如果这些数据一直保持在原始格式,就很难真正应用起来。因此,为了充分发挥数据的最大潜力,必须改变组织内部处理数据的方式。“数据即产品”(DaaP)就是这样一种思维方式转变的代表,即将原始数据转化为高质量的信息产品。这种转变不仅会改变企业的数据战......
  • 服务行业的数据管理实践:TapData Cloud 如何助力连锁酒店物业的全球化运营优化
    使用TapData,化繁为简,摆脱手动搭建、维护数据管道的诸多烦扰,轻量替代OGG,Kettle等同步工具,以及基于Kafka的ETL解决方案,「CDC+流处理+数据集成」组合拳,加速仓内数据流转,帮助企业将真正具有业务价值的数据作用到实处,将“实时数仓”方法论落进现实。TapData持续迭代产品......
  • Dify - 使用小记
    Dify-使用小记记录使用Dify创建小流程......
  • mysql innodb_data_file_path参数忘记设置或者重新调整办法
    目录mysqlinnodb_data_file_path参数忘记设置或者重新调整办法mysqlinnodb_data_file_path参数忘记设置或者重新调整办法my.cnf文件中,默认配置为innodb_data_file_path=ibdata1:10M:autoextend目前该文件已经扩大到了1g多:-rw-r-----1mysqlmysql14701035524月161......
  • PbootCMS打开后提示读取数据库文件失败: Unable to open database
    问题表现打开PbootCMS时提示“读取数据库文件失败:Unabletoopendatabase”。原因数据库文件没有读写权限。解决方法设置文件夹权限:将 data 文件夹设置为777权限。同时将 config、static、runtime、data 文件夹设置为可读写权限。注意事项备份文件......
  • PbootCMS出现database disk image is malformed的解决办法
    databasediskimageismalformed 错误通常是由于SQLite数据库文件损坏引起的。这种问题可能发生在写入数据库时突然中断操作,比如服务器突然重启或网络中断等情况。以下是一些解决方法,包括删除栏目模型重建和修复SQLite数据库。解决方法1.删除栏目模型,重建备份数据库......
  • 金山文档误删后如何找回?文件恢复的常用方法
    在我们日常办公和学习中,金山文档因其便捷性和功能性而广受欢迎。然而,在使用过程中,误删文件的情况时有发生。今天将介绍4种方法,可快速恢复误删的金山文档文件。恢复误删金山文档的四种方法方法一:回收站恢复当文件被误删时,首先应检查金山文档的回收站。回收站是金山文档提供......
  • go:极简上手使用 stretchr/testify 进行mock测试
    库安装首先,安装Mock类生成工具Mockery:goinstallgithub.com/vektra/mockery/[email protected]实际上,你也可以手动创建Mock类。生成Mock类假设你在internal/metrics包下有如下定义的接口:packagemetricstypeGetter[Tany]interface{Get()(T,error)}在项......