如何通过BBED找回删除数据

简介:

  项目案例:客户删除delete了重要数据,无备份,客户联系我,要求恢复相应数据。本次通过实验方式重现客户现场。备份高于一切,首先备份,再操作

创建表格:

  1. create table king(age number,name varchar2(20));

  2. insert into king values(20,'rick');

  3. insert into king values(30,'wuzy');

  4. commit;

     

  5. select dbms_rowid.rowid_relative_fno(rowid) rel_fno,dbms_rowid.rowid_block_number(rowid) blockno from king

     4     303

  6. delete from king where age=30;

     

  7. commit

 

结果:

wKioL1de0TmBQWCQAAAJzhw7UWA846.png

 

bbed恢复(建议关闭数据库):

set file 4,303

find /c wuzy

 File: /u01/app/oracle/oradata/orcl/users01.dbf (4)
 Block: 303              Offsets: 8173 to 8191           Dba:0x0100012f
------------------------------------------------------------------------
 77757a79 2c000202 c1150472 69636b01 064a2f 

p kdbr

BBED> p kdbr
sb2 kdbr[0]                                 @118      8077
sb2 kdbr[1]                                 @120      8066

BBED> p *kdbr[0]
rowdata[11]
-----------
ub1 rowdata[11]                             @8177     0x2c

BBED> p *kdbr[1]
rowdata[0]
----------
ub1 rowdata[0]                              @8166     0x2c

BBED> set dba 4,303 offset 8173
 DBA             0x0100012f (16777519 4,303)
 OFFSET          8173

BBED> d /v dba 4,303 offset 8173
 File: /u01/app/oracle/oradata/orcl/users01.dbf (4)
 Block: 303     Offsets: 8173 to 8191  Dba:0x0100012f
-------------------------------------------------------
 77757a79 2c000202 c1150472 69636b01 l wuzy,....rick.
 06c42f                              l .

 <16 bytes per line>

BBED> d /v offset 8166
 File: /u01/app/oracle/oradata/orcl/users01.dbf (4)
 Block: 303     Offsets: 8166 to 8191  Dba:0x0100012f
-------------------------------------------------------
 3c020202 c11f0477 757a792c 000202c1 l <....wuzy,...
 15047269 636b0106 c42f              l ..rick..

 <16 bytes per line>

BBED> modify /x 2c
 File: /u01/app/oracle/oradata/orcl/users01.dbf (4)
 Block: 303              Offsets: 8166 to 8191           Dba:0x0100012f
------------------------------------------------------------------------
 2c020202 c11f0477 757a792c 000202c1 15047269 636b0106 c42f

 <32 bytes per line>

BBED> sum apply
Check value for File 4, Block 303:
current = 0x6436, required = 0x6436

结果:wKioL1de0zDSC0qLAAAM8Q4vJvs581.png

删减数据已经恢复。

 注意:3C是已经删除的数据  2C是没有删除数据







本文转自东方之子736651CTO博客,原文链接:http://blog.51cto.com/ecloud/1788966 ,如需转载请自行联系原作者


相关文章
|
7月前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库误truncate table的数据恢复案例
北京某国企客户Oracle 11g R2数据库误truncate table CM_CHECK_ITEM_HIS,表数据丢失,业务查询到该表时报错,数据库的备份不可用,无法查询表数据。 Oracle数据库执行Truncate命令的原理:在执行Truncate命令后ORACLE会在数据字典和Segment Header中更新表的Data Object ID,但不会修改实际数据部分的块。由于数据字典与段头的DATA_OBJECT_ID与后续的数据块中的并不一致,所以ORACLE服务进程在读取全表数据时不会读取到已经被TRUNCATE的记录,但是实际数据未被覆盖。
Oracle数据恢复—Oracle数据库误truncate table的数据恢复案例
|
Oracle 关系型数据库 索引
oracle学习26-误删表数据和误删表回滚
oracle学习26-误删表数据和误删表回滚
109 0
|
SQL Oracle 关系型数据库
Oracle 短时间内误删数据,如何快速找回?(UNDO)
首先,这个短时间内,通常是值 undo 段没有被覆盖,undo 保留的时间为多长呢? 1、需要看 undo_retention 的设置,默认为 900s,也就是 15 分钟。 2、需要看数据库的业务繁忙程度,如果1天切一个归档那种,3天前删的说不定都能用 UNDO 找回来。
|
Oracle 关系型数据库
Oracle 快速找回被删除的表
很多情况下为了能快速找回被删除的表,可以利用回收站找到并重建被删除的表。(一)回收站里是否可以找到被删除的表,和undo的保留策略、空间大小有很大关系,超时或者空间不足都会导致无法闪回表,只能从备份中恢复。
3503 0
|
SQL Oracle 关系型数据库
|
Oracle 关系型数据库 数据库