博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BBED的使用
阅读量:2494 次
发布时间:2019-05-11

本文共 4648 字,大约阅读时间需要 15 分钟。

ningoo有两篇bbed的文章不错,按此做了下实验,也遇到了些问题至今无解。

介绍bbed: http://www.ningoo.net/html/2009/how_to_link_oracle_bbed_tools.html
查块结构:http://www.ningoo.net/html/tag/bbed

bbed的使用及案例看这个:http://orafaq.com/papers/dissassembling_the_data_block.pdf

[@more@]在9i/10g中连接生成bbed:
cd $ORACLE_HOME/rdbms/lib
make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed
在11g中生成bbed,需要先从10g中复制如下文件到相应目录,然后再执行上述连接命令:
$ORACLE_HOME/rdbms/lib/ssbbded.o
$ORACLE_HOME/rdbms/lib/sbbdpt.o
$ORACLE_HOME/rdbms/mesg/bbedus.msb
bbed parfile=bbed.par
密码blockedit
下面是个修改block的实验:
SQL> select * from adult;
USERNAME USERPWD
------------------------------ ------------------------------
hello world
cccgw 22596
SQL> select rowid from adult where username='cccgw';
ROWID
------------------
AAAFEdAAEAAAAEfAAC
用DBMS_ROWID获得dba
SQL> create or replace function get_rowid
2 (l_rowid in varchar2)
3 return varchar2
4 is
5 ls_my_rowid varchar2(200);
6 rowid_type number;
7 object_number number;
8 relative_fno number;
9 block_number number;
10 row_number number;
11 begin
12 dbms_rowid.rowid_info(l_rowid,rowid_type,object_number,relative_fno, block_number,row_number);
13 ls_my_rowid := 'Object# is :'||to_char(object_number)||chr(10)||
14 'Relative_fno is :'||to_char(relative_fno)||chr(10)||
15 'Block number is :'||to_char(block_number)||chr(10)||
16 'Row number is :'||to_char(row_number);
17 return ls_my_rowid ;
18 end;
19 /
Function created.
SQL> select get_rowid('AAAFEdAAEAAAAEfAAC') from dual;
GET_ROWID('AAAFEDAAEAAAAEFAAC')
--------------------------------------------------------------------------------
Object# is :20765
Relative_fno is :4
Block number is :287
Row number is :2
BBED> set dba 4,287
DBA 0x0100011f (16777503 4,287)
BBED> find /c cccgw
File: /u01/oracle/oradata/test/tbs_cccgw_dat_01.dbf (4)
Block: 287 Offsets: 8141 to 8191 Dba:0x0100011f
------------------------------------------------------------------------
63636367 77053232 3539362c 01020568 656c6c6f 05776f72 6c643c01 020a6c61
6f67616f 33323332 06333231 34353601 06fdba
<32 bytes per line>
BBED> dump /v dba 4,287 offset 8141 count 128
File: /u01/oracle/oradata/test/tbs_cccgw_dat_01.dbf (4)
Block: 287 Offsets: 8141 to 8191 Dba:0x0100011f
-------------------------------------------------------
63636367 77053232 3539362c 01020568 l cccgw.22596,...h
656c6c6f 05776f72 6c643c01 020a6c61 l ello.world<...la> 6f67616f 33323332 06333231 34353601 l ogao3232.321456.
06fdba l ...
<16 bytes per line>
BBED> modify /c tiany dba 4,287 offset 8141
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
File: /u01/oracle/oradata/test/tbs_cccgw_dat_01.dbf (4)
Block: 287 Offsets: 8141 to 8191 Dba:0x0100011f
------------------------------------------------------------------------
7469616e 79053232 3539362c 01020568 656c6c6f 05776f72 6c643c01 020a6c61
6f67616f 33323332 06333231 34353601 06fdba
<32 bytes per line>
BBED> dump /v dba 4,287 offset 8141 count 64
File: /u01/oracle/oradata/test/tbs_cccgw_dat_01.dbf (4)
Block: 287 Offsets: 8141 to 8191 Dba:0x0100011f
-------------------------------------------------------
7469616e 79053232 3539362c 01020568 l tiany.22596,...h
656c6c6f 05776f72 6c643c01 020a6c61 l ello.world<...la> 6f67616f 33323332 06333231 34353601 l ogao3232.321456.
06fdba l ...
<16 bytes per line>
BBED> sum dba 4,287
Check value for File 4, Block 287:
current = 0x2d86, required = 0x3685
BBED> sum dba 4,287 apply
Check value for File 4, Block 287:
current = 0x3685, required = 0x3685
BBED> dump /v dba 4,287 offset 8141 count 64
File: /u01/oracle/oradata/test/tbs_cccgw_dat_01.dbf (4)
Block: 287 Offsets: 8141 to 8191 Dba:0x0100011f
-------------------------------------------------------
7469616e 79053232 3539362c 01020568 l tiany.22596,...h
656c6c6f 05776f72 6c643c01 020a6c61 l ello.world<...la> 6f67616f 33323332 06333231 34353601 l ogao3232.321456.
06fdba l ...
SQL> select * from adult;
USERNAME USERPWD
------------------------------ ------------------------------
hello world
cccgw 22596
重启数据库后
SQL> select * from adult;
USERNAME USERPWD
------------------------------ ------------------------------
hello world
tiany 22596
我们再找tiany的Rowid
SQL> select rowid from adult where username='tiany';
no rows selected
再找cccgw的rowid
SQL> select rowid from adult where username='cccgw';
ROWID
------------------
AAAFEdAAEAAAAEfAAC
是很奇怪。
SQL> select rowid,username,userpwd from adult;
ROWID USERNAME USERPWD
------------------ ------------------------------ ------------------------------
AAAFEdAAEAAAAEfAAB hello world
AAAFEdAAEAAAAEfAAC tiany 22596
估计是bug了。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/668365/viewspace-1029243/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/668365/viewspace-1029243/

你可能感兴趣的文章