Truncate 表之恢复

2023-12-07 05:08
文章标签 恢复 表之 truncate

本文主要是介绍Truncate 表之恢复,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Truncate 表之恢复

1.     测试环境:

Linux:172.28.145.21

DB:testdb01

2.     原理

Truncate 不会逐个清除用户数据块上的数据,而仅仅重置数据字典和元数据块上的元数据(如存储断头和扩展段图)。

也就是说,此时,基本数据表并未破坏,而是被系统回收,等待被重新分配—因此,要恢复被truncate的数据,需要及时备份所在的数据文件。

3.     存储过程包:

Fy_Recover_Data是利用Oracle表扫描机制、数据嫁接机制恢复TRUNCATE或者损坏数据的工具包。由纯PLSQL编写,从网上下载下来的:

 

4.     测试模拟:

创建表:

CREATETABLET_TRUNCATE ASSELECT* FROM TAB;

Truncate 表数据:

truncatetableshiyu.T_TRUNCATE;

恢复:执行FY_Recover_Data.SQL 存储过程

开始恢复:执行下面语句:

declare

     tgtowner varchar2(30);

     tgttable varchar2(30);

     datapath varchar2(4000);

     datadir varchar2(30);

     rects varchar2(30);

     recfile varchar2(30);

     rstts varchar2(30);

     rstfile varchar2(30);

     blksz number;

     rectab varchar2(30);

     rsttab varchar2(30);

     copyfile varchar2(30);

   begin

     tgtowner :='SHIYU';--table owner

     tgttable :='T_TRUNCATE';  --table name

     datapath :='/data/oradata/test01/';   --必须和T_TRUNCATE 表所在的数据文件目录相同

     datadir :='DUMP_DIR';  -oracle 中目录的名字,可以修改

     Fy_Recover_data.prepare_files(tgtowner,tgttable, datapath,datadir, rects,recfile, rstts,rstfile, blksz);

     Fy_Recover_data.fill_blocks(tgtowner,tgttable, datadir,rects, recfile,rstts,8,tgtowner, tgtowner,rectab, rsttab,copyfile);

     Fy_Recover_data.recover_table(tgtowner,tgttable, tgtowner,rectab, tgtowner,rsttab, datadir,datadir, recfile,datadir,copyfile, blksz);

   end;

   /

    注:执行上面的SQL产生2个表空间(2个数据文件),还有1copy文件。

 

如下截图:

--把恢复的数据从shiyu. TRUNCATE$$ 中插入到shiyu. TRUNCATE表(shiyu. TRUNCATE$$ 中是shiyu. TRUNCATE表truncate之前的数据)

insertintoshiyu.T_TRUNCATE select* from shiyu.T_TRUNCATE$$;

 

这时在查询刚才truncate掉的表

5.     收尾:

数据恢复后,把恢复时产生的2个表空间删除,再删除对应数据文件

 

DROPTABLESPACEFY_REC_DATA INCLUDINGCONTENTSANDDATAFILES;

 

DROPTABLESPACEFY_RST_DATA INCLUDINGCONTENTSANDDATAFILES;

这篇关于Truncate 表之恢复的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/464578

相关文章

使用Python实现网络设备配置备份与恢复

《使用Python实现网络设备配置备份与恢复》网络设备配置备份与恢复在网络安全管理中起着至关重要的作用,本文为大家介绍了如何通过Python实现网络设备配置备份与恢复,需要的可以参考下... 目录一、网络设备配置备份与恢复的概念与重要性二、网络设备配置备份与恢复的分类三、python网络设备配置备份与恢复实

MySQL使用binlog2sql工具实现在线恢复数据功能

《MySQL使用binlog2sql工具实现在线恢复数据功能》binlog2sql是大众点评开源的一款用于解析MySQLbinlog的工具,根据不同选项,可以得到原始SQL、回滚SQL等,下面我们就来... 目录背景目标步骤准备工作恢复数据结果验证结论背景生产数据库执行 SQL 脚本,一般会经过正规的审批

通过ibd文件恢复MySql数据的操作方法

《通过ibd文件恢复MySql数据的操作方法》文章介绍通过.ibd文件恢复MySQL数据的过程,包括知道表结构和不知道表结构两种情况,对于知道表结构的情况,可以直接将.ibd文件复制到新的数据库目录并... 目录第一种情况:知道表结构第二种情况:不知道表结构总结今天干了一件大事,安装1Panel导致原来服务

MySQL InnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据

《MySQLInnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据》mysql的ibdata文件被误删、被恶意修改,没有从库和备份数据的情况下的数据恢复,不能保证数据库所有表数据... 参考:mysql Innodb表空间卸载、迁移、装载的使用方法注意!此方法只适用于innodb_fi

mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据

《mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据》文章主要介绍了如何从.frm和.ibd文件恢复MySQLInnoDB表结构和数据,需要的朋友可以参... 目录一、恢复表结构二、恢复表数据补充方法一、恢复表结构(从 .frm 文件)方法 1:使用 mysq

mysql8.0无备份通过idb文件恢复数据的方法、idb文件修复和tablespace id不一致处理

《mysql8.0无备份通过idb文件恢复数据的方法、idb文件修复和tablespaceid不一致处理》文章描述了公司服务器断电后数据库故障的过程,作者通过查看错误日志、重新初始化数据目录、恢复备... 周末突然接到一位一年多没联系的妹妹打来电话,“刘哥,快来救救我”,我脑海瞬间冒出妙瓦底,电信火苲马扁.

Git中恢复已删除分支的几种方法

《Git中恢复已删除分支的几种方法》:本文主要介绍在Git中恢复已删除分支的几种方法,包括查找提交记录、恢复分支、推送恢复的分支等步骤,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录1. 恢复本地删除的分支场景方法2. 恢复远程删除的分支场景方法3. 恢复未推送的本地删除分支场景方法4. 恢复

Python MySQL如何通过Binlog获取变更记录恢复数据

《PythonMySQL如何通过Binlog获取变更记录恢复数据》本文介绍了如何使用Python和pymysqlreplication库通过MySQL的二进制日志(Binlog)获取数据库的变更记录... 目录python mysql通过Binlog获取变更记录恢复数据1.安装pymysqlreplicat

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C