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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




