千家信息网

Oracle数据库truncate table后恢复原来数据

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,概述:北京某国企客户 Oracle 11g R2 数据库误truncate table CM_CHECK_ITEM_HIS,表数据丢失,业务查询到该表时报错,此时发现数据库的备份不能用,表数据无法查询
千家信息网最后更新 2026年11月03日Oracle数据库truncate table后恢复原来数据

概述:北京某国企客户 Oracle 11g R2 数据库误truncate table CM_CHECK_ITEM_HIS,表数据丢失,业务查询到该表时报错,此时发现数据库的备份不能用,表数据无法查询。

客户Oracle 11g R2 数据库误truncate table CM_CHECK_ITEM_HIS,表数据丢失,业务查询到该表时报错,此时发现数据库的备份不能用,表数据无法查询。
Truncate数据的机理是,ORACLE会在数据字典和Segment Header中更新表的Data Object ID,而实际数据部分的块则不会做修改。由于数据字典与段头的DATA_OBJECT_ID与后续的数据块中的并不一致,所以ORACLE服务进程在读取全表数据时不会读取到已经被TRUNCATE的记录,但是实际仍未被覆盖的数据。

数据恢复过程

为保护用户数据,本文档构造与客户相同的故障。Scott用户创建表emp1,复制emp表,连续复制多次,总记录数为:7340032条。truncate表emp1,之后没有进行任何操作。查询该表,数据库中该表的记录为0条。
图一:

注: Os:win server 2008R2。数据库版本:win_oracle_11.2.0.1_x64;
1 对system表空间文件进行分析,找到truncate表的原始数据所在的位置
图二:




2 解析表所在的数据文件数据库,找到truncate的数据
3 将truncate的数据库插入到数据库中

数据恢复结果

通过解析system01.dbf文件,找到truncate的数据所在的位置,找到被删除的数据。解析表所在的数据文件,将truncate的数据插入到数据库中。
在数据库中,查找被truncate,发现数据回来了,直接备份数据。
图三:

Exp导出scott用户;
图四:

数据 数据库 查询 所在 文件 备份 客户 用户 业务 业务查询 位置 字典 实际 数据恢复 时报 原始 相同 一致 位置图 故障 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 重生之互联网科技帝国 深圳恒合互联网络科技有限公司 科技与互联网 互联网 科技创新 互联网科技公司怎么样 百单互联网科技有限公司 上海卓越科技 互联网 互联网科技公司介绍 承德科技产业互联网发展 阿里互联网科技公司 互联网科技研发水平 佛山市拉法互联网科技有限公司 朱啸虎曾投资哪些互联网科技企业 合肥互联网科技公司公章图片 科技互联网的核心竞争力 山东子淼互联网科技有限公司 广州百诚互联网科技有限公司官网 福建互联网展示科技馆设计 互联网科技和医药行业 数字科技和互联网金融哪个好 科技平台互联网 善班互联网科技有限公司 温州喔噻互联网科技有限公司 福州新华互联网科技学校 知乎 阿里互联网科技公司 厦门千工互联网科技有限公司 晓花互联网科技有限公司网址 互联网行业科技股 深圳市罗太互联网科技有限公司 济南小医互联网科技有限公司招聘
0