日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Oracle模擬文件損壞BBED

系統(tǒng) 2148 0

模擬文件損壞可以使用兩個(gè)工具, windows nt 下使用 uttra edit ,還有就是使用 ORACLE 內(nèi)部工具 BBED, 下面主要看這個(gè)工具如何使用。

一、 BBED(Oracle?Block?Browerand?EDitor Tool) ,用來直接查看和修改數(shù)據(jù)文件數(shù)據(jù)的一個(gè)工具,是 Oracle 一款內(nèi)部工具,可以直接修改 Oracle 數(shù)據(jù)文件塊的內(nèi)容,在一些極端恢復(fù)場景下比較有用。該工具不受 Oracle 支持,所以默認(rèn)是沒有生成可執(zhí)行文件的,在使用前需要重新連接。

我這里的作用

二、 BBED 安裝

Oracle8i BBED windows 平臺(tái)下的 $ORACLE_HOME/bin 下可以找到, 9i 中似乎未隨軟件發(fā)布,故在 windows 沒有這個(gè)工具,

linux 上面有,需要編譯。

9i/10g 中連接生成 bbed:

cd$ORACLE_HOME/rdbms/lib

make-f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed

[oracle@oracledba lib]$ make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bb ed

Linking BBED utility (bbed)

rm -f /opt/oracle/102/rdbms/lib/bbed

gcc -o /opt/oracle/102/rdbms/lib/bbed -L/opt/oracle/102/rdbms/lib/ -L/o pt/oracle/102/lib/ -L/opt/oracle/102/lib/stubs/ /opt/oracle/102/lib/s0 main.o /opt/oracle/102/rdbms/lib/ssbbded.o /opt/oracle/102/rdbms/lib/sb bdpt.o `cat /opt/oracle/102/lib/ldflags` -lnsslb10 -lncrypt10 -lnsgr 10 -lnzjs10 -ln10 -lnnz10 -lnl10 /opt/oracle/102/rdbms/lib/defopt.o -ld btools10 -lclntsh `cat /opt/oracle/102/lib/ldflags` -lnsslb10 -lncr ypt10 -lnsgr10 -lnzjs10 -ln10 -lnnz10 -lnl10 -lnro10 `cat /opt/oracle/1 02/lib/ldflags` -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10 -ln10 -lnnz10 -lnl10 -lclient10 -lnnetd10 -lvsn10 -lcommon10 -lgeneric10 -lmm -lsnl s10 -lnls10 -lcore10 -lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lxml1 0 -lcore10 -lunls10 -lsnls10 -lnls10 -lcore10 -lnls10 `cat /opt/oracle/ 102/lib/ldflags` -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10 -ln10 -lnnz1 0 -lnl10 -lnro10 `cat /opt/oracle/102/lib/ldflags` -lnsslb10 -lncryp t10 -lnsgr10 -lnzjs10 -ln10 -lnnz10 -lnl10 -lclient10 -lnnetd10 -lvsn1 0 -lcommon10 -lgeneric10 -lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lxml10 -lcore10 -lunls10 -lsnls10 -lnls10 -l core10 -lnls10 -lclient10 -lnnetd10 -lvsn10 -lcommon10 -lgeneric10 -ls nls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lxm l10 -lcore10 -lunls10 -lsnls10 -lnls10 -lcore10 -lnls10 `cat /opt/ora cle/102/lib/sysliblist` -Wl,-rpath,/opt/oracle/102/lib -lm `cat /opt /oracle/102/lib/sysliblist` -ldl -lm -L/opt/oracle/102/lib

以上生成的bbed可執(zhí)行文件在$ORACLE_HOME/rdbms/lib目錄,可以復(fù)制到其他位置或者其他同Oracle版本的機(jī)器上運(yùn)行。

也可通過以下命令將bbed生成到$ORACLE_HOME/bin目錄

[oracle@db2 lib]$ make -f ins_rdbms.mk BBED=$ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbed

OracleDatabase 11g中缺省的未提供BBED庫文件,但是可以用10g的文件編譯出來,需要先從10g中復(fù)制如下文件到相應(yīng)目錄,然后再執(zhí)行上述連接命令,參考如下步驟:

(1)復(fù)制Oracle 10g文件

Copy $ORA10g_HOME/rdbms/lib/ssbbded.o to$ORA11g_HOME/rdbms/lib

Copy $ORA10g_HOME/rdbms/lib/sbbdpt.o to $ORA11g_HOME/rdbms/lib

Copy $ORA10g_HOME/rdbms/mesg/bbedus.msb to $ORA11g_HOME/rdbms/mesg

Copy $ORA10g_HOME/rdbms/mesg/bbedus.msg to $ORA11g_HOME/rdbms/mesg

Copy $ORA10g_HOME/rdbms/mesg/bbedar.msb to $ORA11g_HOME/rdbms/mesg

(2)編譯

make -f $ORA11g_HOME/rdbms/lib/ins_rdbms.mkBBED=$ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbed

三、使用 BBED

?????? ?BBED Oracle 內(nèi)部使用的命令,所以 Oracle 不提供技術(shù)支持。 為了安全, BBED 設(shè)置了口令保護(hù),默認(rèn)密碼為 blockedit

[oracle@oracledba lib]$ bbed

Password:

BBED: Release 2.0.0.0.0 - Limited Production on Mon Aug 25 04:23:33 2014

Copyright (c) 1982, 2005, Oracle. All rights reserved.

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

一般使用 bbed ,都是將一些配置信息寫入到一個(gè)參數(shù)文本里,在調(diào)用 bbed 時(shí),指定該參數(shù)文件。如:

?????? $bbedparfile=bbed.par

這里我們先演示一個(gè)示例。

1 )先獲取 datafile 的信息

datafile 的信息寫入一個(gè)文件,格式為:文件編號(hào) 文件名字 文件大小??梢酝ㄟ^如下 SQL 獲?。?

SQL> select file#||' '||name||' '||bytes from v$datafile ;

FILE#||''||NAME||''||BYTES

--------------------------------------------------------------------------------

1 /opt/oracle/oradata/orcla/system01.dbf 555745280

2 /opt/oracle/oradata/orcla/undotbs01.dbf 162529280

3 /opt/oracle/oradata/orcla/sysaux01.dbf 367001600

4 /opt/oracle/oradata/orcla/users01.dbf 17039360

5 /opt/oracle/oradata/orcla/xzsp.dbf 536870912

6 /home/oracle/b101.dbf 52428800

6 rows selected.

注意,這里的file id。 我們這里的file id 和 oracle 系統(tǒng)內(nèi)部的file id 相同。 當(dāng)然這個(gè)id 我們也可以自己指定。 當(dāng)我們在bbed 里設(shè)置file id 時(shí),就是根據(jù)這個(gè)參數(shù)文件中的的設(shè)置來的。 最好設(shè)置為相同,不然以后可能會(huì)混淆。

將上面查詢出來的datafile信息保存到文本里。

cat /u01/filelist.txt

1/u01/app/oracle/oradata/dave2/system01.dbf 1761607680

2/u01/app/oracle/oradata/dave2/undotbs01.dbf 927989760

3/u01/app/oracle/oradata/dave2/sysaux01.dbf 398458880

4 /u01/app/oracle/oradata/dave2/users01.dbf5242880

5/u01/app/oracle/oradata/dave2/example01.dbf 104857600

6 /u01/app/oracle/oradata/dave2/dave01.dbf10485760

7/u01/app/oracle/oradata/dave2/undotbs02.dbf 1048576

8/u01/app/oracle/oradata/dave2/huaining01.dbf 52428800

創(chuàng)建 parameter file

[oracle@db2 ~]$ cat /u01/bbed.par

blocksize=8192

listfile=/u01/filelist.txt

mode=edit

示例: 修改Data 內(nèi)容

1.1 連接bbed

[oracle@db2 ~]$ bbed parfile=/u01/bbed.par

Password:

?

BBED: Release 2.0.0.0.0 - LimitedProduction on Fri Aug 12 18:26:46 2011

?

Copyright (c) 1982, 2005, Oracle. All rights reserved.

?

************* !!! For Oracle Internal Useonly !!! ***************

?

BBED>

?

1.2 查看要修改的內(nèi)容

SYS@dave2(db2)> select * from test;

?

JOB

--------------------------------------------------------------------------------

Dave is DBA!

Dave like Oracle!

注意: bbed 的修改僅僅是對原有位置內(nèi)容的一個(gè)替換。

?

對應(yīng)block 的信息如下:

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 test where rownum<2;

ROWID REL_FNO BLOCKNO ROWNO

------------------ ---------- --------------------

AAAN9VAABAAAcKiAAA 1 115362 0

AAAN9VAABAAAcKiAAB 1 115362 1

?

SYS@dave2(db2)>

?

1.3 查找關(guān)鍵字Dave,確定其在block中的偏移量offset。

?

BBED> set dba 1,115362 offset 0

DBA 0x0041c2a2(4309666 1,115362)

OFFSET 0

?

BBED> find /c Dave

File:/u01/app/oracle/oradata/dave2/system01.dbf (1)

Block: 115362 Offsets: 8176 to 8191 Dba:0x0041c2a2

------------------------------------------------------------------------

44617665 20697320 44424121 020616b3

?

<32 bytes per line>

?

dump 查看具體內(nèi)容:

BBED> dump /v dba 1,115362 offset 8176 count 128

File: /u01/app/oracle/oradata/dave2/system01.dbf(1)

Block: 115362 Offsets: 8176 to 8191 Dba:0x0041c2a2

-------------------------------------------------------

44617665 20697320 44424121 020616b3 l Dave isDBA!...3

<16 bytes per line>

注意這里面的Offsets:8176 to 8191, 它指的是這一行的一個(gè)地址。其中

D 的offset 是8176

a 的offset 是8177

v 的offset 是8178

e 的offset 是8179

空格也算offset。

?

1.4 修改block,將Dave 換成DMM

BBED> modify /c 'DMM ' dba 1,115362 offset 8176

File:/u01/app/oracle/oradata/dave2/system01.dbf (1)

Block: 115362 Offsets: 8176 to 8191 Dba:0x0041c2a2

------------------------------------------------------------------------

444d4d20 20697320 44424121 020616b3

<32 bytes per line>

--注意這里DMM我用單引號(hào)括起來,并且最后還有一個(gè)空格,這樣就是4個(gè)bytes,不用單引號(hào)括起來,無法表示空格,驗(yàn)證一下

?

BBED> dump /v dba 1,115362 offset 8176count 128

File:/u01/app/oracle/oradata/dave2/system01.dbf (1)

Block: 115362 Offsets: 8176 to 8191 Dba:0x0041c2a2

-------------------------------------------------------

444d4d20 20697320 44424121 020616b3 l DMM is DBA!...3

?

<16 bytes per line>

?

1.5 應(yīng)用變更

BBED> sum dba 1,115362

Check value for File 1, Block 115362:

current = 0xdef7, required = 0x8cc0

此時(shí) current checksum 是0xdef7,requiredchecksum 是0x8cc0

?

BBED> sum dba 1,115362 apply

Check value for File 1, Block 115362:

current = 0x8cc0, required = 0x8cc0

加上apply參數(shù),使checksum一致。即之前的修改生效。

?

?

SYS@dave2(db2)> alter system flush buffer_cache;

System altered.

?

SYS@dave2(db2)> select * from dvd;

JOB

--------------------------------------------------------------------------------

DMM is DBA!

Dave like Oracle!

上面的修改是數(shù)據(jù)的到正確的修改,如何制造一個(gè)壞塊。

繼續(xù)上使用上面的哦數(shù)據(jù):

BBED> map

File: /opt/oracle/oradata/orcla/xzsp.dbf (5)

Block: 49316 Dba:0x0140c0a4

------------------------------------------------------------

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[2] @118

ub1 freespace[8029] @122

ub1 rowdata[37] @8151

ub4 tailchk @8188

BBED> d /v offset 0 count 128

File: /opt/oracle/oradata/orcla/xzsp.dbf (5)

Block: 49316 Offsets: 0 to 127 Dba:0x0140c0a4

-------------------------------------------------------

06a20000 a4c04001 5c732200 00000106 l ......@.\s".....

1ef00000 01000000 e1dd0000 3e732200 l ............>s".

00000000 02003200 a1c04001 02000b00 l ......2...@.....

d3040000 92008000 76021700 02200000 l ........v.... ..

5c732200 00000000 00000000 00000000 l \s".............

00000000 00000000 00000000 00000000 l ................

00000000 00010200 ffff1600 731f5d1f l ............s.].

5d1f0000 0200881f 731f0000 00000000 l ].......s.......

<16 bytes per line>

BBED> modify /x 12345678 offset 0

File: /opt/oracle/oradata/orcla/xzsp.dbf (5)

Block: 49316 Offsets: 0 to 127 Dba:0x0140c0a4

------------------------------------------------------------------------

12345678 a4c04001 5c732200 00000106 1ef00000 01000000 e1dd0000 3e732200

00000000 02003200 a1c04001 02000b00 d3040000 92008000 76021700 02200000

5c732200 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00010200 ffff1600 731f5d1f 5d1f0000 0200881f 731f0000 00000000

<32 bytes per line>

BBED> sum apply

Check value for File 5, Block 49316:

current = 0x1e5c, required = 0x1e5c

SQL> alter system flush buffer_cache;

System altered.

SQL> select * from tt;

select * from tt

*

ERROR at line 1:

ORA-01578: ORACLE data block corrupted (file # 5, block # 49316)

ORA-01110: data file 5: '/opt/oracle/oradata/orcla/xzsp.dbf'

參考: Oracle BBED 工具 說明

Oracle corrupt block(壞塊) 詳解

Oracle模擬文件損壞BBED


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦?。?!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 丰原市| 贵德县| 民乐县| 顺平县| 长阳| 明光市| 新疆| 南昌市| 重庆市| 中超| 晋城| 原阳县| 锡林郭勒盟| 昌吉市| 紫金县| 庄河市| 信丰县| 旬邑县| 榆中县| 资兴市| 衡阳市| 屏山县| 博客| 贡觉县| 巨野县| 深泽县| 丰都县| 宁化县| 宝山区| 宾川县| 偃师市| 盐山县| 永昌县| 江华| 花垣县| 新河县| 石河子市| 马公市| 永德县| 凤城市| 铜梁县|