暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用BBED修改数据块内容

原创 肖杰 2020-09-14
774

BBED的基本使用参考:https://blog.csdn.net/tianlesoftware/article/details/5006580

SQL> create table bbed_test (id number,name nvarchar2(20));

Table created.

SQL> insert into bbed_test values(1,'devin1');

1 row created.

SQL> insert into bbed_test values(2,'devin2');

1 row created.

SQL> insert into bbed_test values(3,'devin3');

1 row created.

SQL> commit;

Commit complete.

SQL>  SELECT
  2     dbms_rowid.rowid_relative_fno(rowid) REL_FNO,
  3     dbms_rowid.rowid_block_number(rowid) BLOCKNO,
  4     dbms_rowid.rowid_row_number(rowid)   ROWNO  ,
  5     id                                          ,
  6     name
  7   from
  8     bbed_test;

   REL_FNO    BLOCKNO      ROWNO         ID NAME
---------- ---------- ---------- ---------- --------------------
         8        135          0          1 devin1
         8        135          1          2 devin2
         8        135          2          3 devin3

复制

8号文件 135块
将第三行的devin3修改成kevin3

SQL> select dump('k',16) from dual;

DUMP('K',16)
----------------
Typ=96 Len=1: 6b

[oracle@devin1 ~]$ bbed

BBED: Release 2.0.0.0.0 - Limited Production on Thu Sep 3 14:52:15 2020

Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.

************* !!! For Oracle Internal Use only !!! ***************

BBED> info
 File#  Name                                                        Size(blks)
 -----  ----                                                        ----------
     1  /u01/app/oracle/oradata/ora12c/system01.dbf                          0
     2  /u01/app/oracle/oradata/ora12c/ccps_data.dbf                         0
     3  /u01/app/oracle/oradata/ora12c/sysaux01.dbf                          0
     4  /u01/app/oracle/oradata/ora12c/undotbs01.dbf                         0
     5  /u01/app/oracle/oradata/ora12c/ogg.dbf                               0
     7  /u01/app/oracle/oradata/ora12c/users01.dbf                           0
     8  /u01/app/oracle/oradata/ora12c/devin.dbf                             0

BBED> set file 8
        FILE#           8

BBED> set block 135
        BLOCK#          135

BBED> map
 File: /u01/app/oracle/oradata/ora12c/devin.dbf (8)
 Block: 135                                   Dba:0x02000087
------------------------------------------------------------
 KTB Data Block (Table/Cluster)

 struct kcbh, 20 bytes                      @0       

 struct ktbbh, 72 bytes                     @20      

 struct kdbh, 14 bytes                      @100     

 struct kdbt[1], 4 bytes                    @114     

 sb2 kdbr[3]                                @118     

 ub1 freespace[8025]                        @124     

 ub1 rowdata[39]                            @8149    

 ub4 tailchk                                @8188    
 
BBED> set file 8 block 135
FILE#           8
BLOCK#          135

BBED> find /c devin3
 File: /u01/app/oracle/oradata/ora12c/devin.dbf (8)
 Block: 135              Offsets: 8156 to 8161           Dba:0x02000087
------------------------------------------------------------------------
 64657669 6e33 

 <32 bytes per line>

BBED> set offset 8156
        OFFSET          8156


复制

将devin3修改成kevin3

BBED> m /x 6b
 File: /u01/app/oracle/oradata/ora12c/devin.dbf (8)
 Block: 135              Offsets: 8156 to 8161           Dba:0x02000087
------------------------------------------------------------------------
 6b657669 6e33 

 <32 bytes per line>

BBED> sum apply
Check value for File 8, Block 135:
current = 0x2b8b, required = 0x2b8b

复制

dump验证一下:

BBED> d /v dba 8,135 offset 8156
 File: /u01/app/oracle/oradata/ora12c/devin.dbf (8)
 Block: 135     Offsets: 8156 to 8161  Dba:0x02000087
-------------------------------------------------------
 6b657669 6e33                       l kevin3

 <16 bytes per line>

SQL> alter system flush buffer_cache;

System altered.

SQL> select * from bbed_test;

        ID NAME
---------- --------------------
         1 devin1
         2 devin2
         3 kevin3

复制

修改成功

注意:print打印出来的值和在文件中存储的值可能不是完全一致。在intel 的little endian是低位先存储,即顺序与我们看到的是相反的.可以利用assign命令,直接用十进制

BBED> assign dba 1,1 kcvfh.kcvfhckp.kcvcpscn.kscnbas  = 342603401
ub4 kscnbas                                 @484      0x146bb689

复制
最后修改时间:2020-09-14 16:55:23
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论