您所在的位置:首页 > 成功案例 > ORACLE数据库修复

Oracle数据库误truncate的数据恢复案例

最新动态来源:本站原创点击数:299更新时间:2024/3/11

Oracle数据库数据恢复环境:
北京某国企客户Oracle 11g R2数据库误truncate  table  CM_CHECK_ITEM_HIS,表数据丢失,业务查询到该表时报错,数据库的备份不可用,无法查询表数据。
Oracle数据库执行Truncate命令的原理:在执行Truncate命令后ORACLE会在数据字典和Segment Header中更新表的Data Object ID,但不会修改实际数据部分的块。由于数据字典与段头的DATA_OBJECT_ID与后续的数据块中的并不一致,所以ORACLE服务进程在读取全表数据时不会读取到已经被TRUNCATE的记录,但是实际数据未被覆盖。
 
Oracle数据库数据恢复过程:
1、为保护用户数据和重现故障的解决过程,北亚企安数据恢复工程师重构了与用户相同的故障:
使用Scott用户创建表emp1,连续多次复制emp表,多次复制后的总记录数为7340032条。truncate表emp1,之后没有进行任何操作。查询该表,数据库中该表的记录为0条。
2、对system表空间文件进行分析,找到truncate表的原始数据所在位置。
3、解析表所在的数据文件,找到被truncate的数据。
4、将truncate的数据插入到数据库中。
5、在Oracle数据库中查看被truncate的表,发现数据回来了,直接备份数据,然后Exp导出scott用户。