- 論壇徽章:
- 17
|
博客彩色標(biāo)注生動(dòng)版原文:Oracle BBED 小小手術(shù)刀的小手術(shù)---修改數(shù)據(jù)內(nèi)容
官方簡(jiǎn)介:
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的內(nèi)部工具,不受Oracle技術(shù)支持,該工具像一把鋒利的手術(shù)刀,可以切入數(shù)據(jù)塊內(nèi)部進(jìn)行修修改改,因此非常危險(xiǎn),操作需特別謹(jǐn)慎!
實(shí)驗(yàn)?zāi)康模?br />
使用BBED修改數(shù)據(jù)文件內(nèi)的數(shù)據(jù)信息。
操作過(guò)程:
1.獲取數(shù)據(jù)文件的文件號(hào)、文件絕對(duì)路徑名和大小:
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.創(chuàng)建文件清單:
[oracle@dbserver oracle]$ vi filelist.txt
加入如下內(nèi)容:
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.創(chuàng)建bbed參數(shù)文件:
[oracle@dbserver oracle]$ cat bbed.par
blocksize=8192
listfile=/oracle/filelist.txt
mode=edit
4.登陸B(tài)BED:
[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 !!! *************** ----謹(jǐn)慎使用,No Zuo No Die~~~
5.查看未修改的表狀態(tài):
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)該函數(shù)返回輸入?yún)?shù)rowid所對(duì)應(yīng)的文件號(hào),文件號(hào)是相對(duì)于表空間的。
其他的兩個(gè)函數(shù)以此類推分別是:數(shù)據(jù)塊號(hào)獲取函數(shù)和行號(hào)獲取函數(shù)。
7.在bbed中找相關(guān)的關(guān)鍵字:
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.修改數(shù)據(jù)塊信息:
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.輸出修改后的內(nèi)容:
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.驗(yàn)證修改成果
SQL> conn eric
SQL> alter system flush buffer_cache;
System altered.
SQL> select * from summary;
ID INFO
---------- ----------------------------
1 Eric Gao is a ORACLE DBA -----可以看到該數(shù)據(jù)已經(jīng)由原來(lái)的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:這是個(gè)非常2的測(cè)試,完全可以用語(yǔ)句: update summary set info='Eric Gao is a ORACLE DBA' where info='Eric Gao is a ORACLE DBA'; 修改過(guò)來(lái)...
本次實(shí)驗(yàn)僅為了提供簡(jiǎn)單的BBED小小手術(shù)刀操作體驗(yàn)。
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 |
|