官方简介:
The name bbed is an acronym for Block Browser and EDitor and it is shipped with thedatabase. It is intended for Oracle internal use only and the company neverpublishes any details about it. It is a very powerful tool but also extremelydangerous since it can change and/or corrupt data blocks of any Oracledatabase.
If you use this tool, you do so at your own risk. Any modifications made with thistool render the database unsupported by Oracle.
BBED是Oracle的内部工具,不受Oracle技术支持,该工具像一把锋利的手术刀,可以切入数据块内部进行修修改改,因此非常危险,操作需特别谨慎!
实验目的:
使用BBED修改数据文件内的数据信息。
操作过程:
1.获取数据文件的文件号、文件绝对路径名和大小:
SQL> select file#||' '||name||' '||bytes from v$datafile ;
FILE#||''||NAME||''||BYTES
--------------------------------------------------------------------------------
1 /oracle/app/oradata/ORCL/datafile/o1_mf_system_8xm4839m_.dbf 859832320
2 /oracle/app/oradata/ORCL/datafile/o1_mf_sysaux_8xm483f7_.dbf 555745280
3 /oracle/app/oradata/ORCL/datafile/o1_mf_undotbs1_8xm483gd_.dbf 89128960
4 /oracle/app/oradata/ORCL/datafile/o1_mf_users_8xm483jk_.dbf 70778880
5 /oracle/app/oradata/ORCL/datafile/o1_mf_example_8xm4gzck_.dbf 108134400
6 /oracle/app/oradata/catalog_rman/rmantbs01.dbf 52428800
7 /oracle/app/oradata/ORCL/datafile/gaoqiang.dbf 5242880
8 /oracle/app/oradata/ORCL/datafile/gao.dbf 5242880
9 /oracle/app/oradata/ORCL/datafile/lee.dbf 10485760
10 /oracle/app/oradata/ORCL/datafile/jon.dbf 10485760
10 rows selected.
2.创建文件清单:
[oracle@dbserver oracle]$ vi filelist.txt
加入如下内容:
1 /oracle/app/oradata/ORCL/datafile/o1_mf_system_8xm4839m_.dbf 859832320
2 /oracle/app/oradata/ORCL/datafile/o1_mf_sysaux_8xm483f7_.dbf 555745280
3 /oracle/app/oradata/ORCL/datafile/o1_mf_undotbs1_8xm483gd_.dbf 89128960
4 /oracle/app/oradata/ORCL/datafile/o1_mf_users_8xm483jk_.dbf 70778880
5 /oracle/app/oradata/ORCL/datafile/o1_mf_example_8xm4gzck_.dbf 108134400
6 /oracle/app/oradata/catalog_rman/rmantbs01.dbf 52428800
7 /oracle/app/oradata/ORCL/datafile/gaoqiang.dbf 5242880
8 /oracle/app/oradata/ORCL/datafile/gao.dbf 5242880
9 /oracle/app/oradata/ORCL/datafile/lee.dbf 10485760
10 /oracle/app/oradata/ORCL/datafile/jon.dbf 10485760
[oracle@dbserver oracle]$ cat filelist.txt
1 /oracle/app/oradata/ORCL/datafile/o1_mf_system_8xm4839m_.dbf 859832320
2 /oracle/app/oradata/ORCL/datafile/o1_mf_sysaux_8xm483f7_.dbf 555745280
3 /oracle/app/oradata/ORCL/datafile/o1_mf_undotbs1_8xm483gd_.dbf 89128960
4 /oracle/app/oradata/ORCL/datafile/o1_mf_users_8xm483jk_.dbf 70778880
5 /oracle/app/oradata/ORCL/datafile/o1_mf_example_8xm4gzck_.dbf 108134400
6 /oracle/app/oradata/catalog_rman/rmantbs01.dbf 52428800
7 /oracle/app/oradata/ORCL/datafile/gaoqiang.dbf 5242880
8 /oracle/app/oradata/ORCL/datafile/gao.dbf 5242880
9 /oracle/app/oradata/ORCL/datafile/lee.dbf 10485760
10 /oracle/app/oradata/ORCL/datafile/jon.dbf 10485760
3.创建bbed参数文件:
[oracle@dbserver oracle]$ cat bbed.par
blocksize=8192
listfile=/oracle/filelist.txt
mode=edit
4.登陆BBED:
[oracle@dbserver oracle]$ bbed parfile=/oracle/bbed.par
Password:
BBED: Release 2.0.0.0.0 - Limited Production on Tue Jan 27 05:56:31 2015
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
************* !!! For Oracle Internal Use only !!! *************** ----谨慎使用,No Zuo No Die~~~
5.查看未修改的表状态:
SQL> select * from summary;
ID INFO
---------- ----------------------------
1 Eric Gao is a Oracle DBA
1 Eric Gao is a PostgreSQL DBA
1 Eric Gao is a AIX SA
1 Eric Gao is a Linux SA
6.查看物理信息:
SQL> select rowid,dbms_rowid.rowid_relative_fno(rowid) rel_fno,dbms_rowid.rowid_block_number(rowid) blockno,dbms_rowid.rowid_row_number(rowid) rowno from summary;
ROWID REL_FNO BLOCKNO ROWNO
------------------ ---------- ---------- ----------
AAASmYAAEAAAAKNAAA 4 653 0
AAASmYAAEAAAAKNAAB 4 653 1
AAASmYAAEAAAAKNAAC 4 653 2
AAASmYAAEAAAAKNAAD 4 653 3
dbms_rowid.rowid_relative_fno(rowid)该函数返回输入参数rowid所对应的文件号,文件号是相对于表空间的。
其他的两个函数以此类推分别是:数据块号获取函数和行号获取函数。
7.在bbed中找相关的关键字:
BBED> set dba 4,653 offset 0
DBA 0x0100028d (16777869 4,653)
OFFSET 0
BBED> find /c Oracle
File: /oracle/app/oradata/ORCL/datafile/o1_mf_users_8xm483jk_.dbf (4)
Block: 653 Offsets: 8178 to 8191 Dba:0x0100028d
------------------------------------------------------------------------
4f726163 6c652044 42410106 0385
<32 bytes per line>
8.查看该位置的信息:
BBED> dump /v dba 4,653 offset 8178 count 6
File: /oracle/app/oradata/ORCL/datafile/o1_mf_users_8xm483jk_.dbf (4)
Block: 653 Offsets: 8178 to 8183 Dba:0x0100028d
-------------------------------------------------------
4f726163 6c65 l Oracle
<16 bytes per line>
9.修改数据块信息:
BBED> modify /c 'ORACLE' dba 4,653 offset 8178
File: /oracle/app/oradata/ORCL/datafile/o1_mf_users_8xm483jk_.dbf (4)
Block: 653 Offsets: 8178 to 8183 Dba:0x0100028d
------------------------------------------------------------------------
4f524143 4c45
<32 bytes per line>
10.输出修改后的内容:
BBED> dump /v dba 4,653 offset 8178 count 6
File: /oracle/app/oradata/ORCL/datafile/o1_mf_users_8xm483jk_.dbf (4)
Block: 653 Offsets: 8178 to 8183 Dba:0x0100028d
-------------------------------------------------------
4f524143 4c45 l ORACLE
<16 bytes per line>
11.保存:
BBED> sum dba 4,653
Check value for File 4, Block 653:
current = 0x7bcf, required = 0x5bcf
BBED> sum dba 4,653 apply
Check value for File 4, Block 653:
current = 0x5bcf, required = 0x5bcf
12.验证修改成果
SQL> conn eric
SQL> alter system flush buffer_cache;
System altered.
SQL> select * from summary;
ID INFO
---------- ----------------------------
1 Eric Gao is a ORACLE DBA -----可以看到该数据已经由原来的Oracle修改成了ORACLE。
1 Eric Gao is a PostgreSQL DBA
1 Eric Gao is a AIX SA
1 Eric Gao is a Linux SA
OK!修改完成!
PS:这是个非常2的测试,完全可以用语句: update summary set info='Eric Gao is a ORACLE DBA' where info='Eric Gao is a ORACLE DBA'; 修改过来...
本次实验仅为了提供简单的BBED小小手术刀操作体验。
SQL> update summary set info='Eric Gao is a Oracle DBA' where info='Eric Gao is a ORACLE DBA';
1 row updated.
SQL> select * from summary;
ID INFO
---------- ----------------------------
1 Eric Gao is a ORACLE DBA
1 Eric Gao is a PostgreSQL DBA
1 Eric Gao is a AIX SA
1 Eric Gao is a Linux SA