oracle倒序_Oracle的这功能少为人知,但绝对好用,你知道吗?

dc0bde362a5888893dd03c56a7825295.png

蒋蒋~~各位大神你们吼啊,又是我,智商233的天才少呂,今天我又来给大家看下我近期学到的内容

c8dc05b708e3e3f65b642da24ebf6567.gif

那就是BBED

自我介绍:BBED是Block Browser/Editor的缩写,是Oracle的一个内部工具,不对外发布文档及支持。 BBED随软件发布,但是我们需要进行简单的relink才能使用。

这个就很厉害了哟~可以修复Oracle坏块,有一次就是数据库打不开了,找了好多方法有幸接触到了BBED,修改了文件头,拯救了我的测试库哈哈哈

5518d641f902fac3fd9536aa548f5fe0.gif

所以今天就给大家分享下怎么用这个东东

=============准备

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

----10g可以直接编译链接,11g需要将lib复制到以上指定目录

make -f $ORA10g_HOME/rdbms/lib/ins_rdbms.mk BBED=$ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbed

============配置

bbed parfile=/home/oracle/bbed.par

默认密码blockedit

构造bbed.par文件

[oracle@localhost ~]$ cat bbed.par

blocksize=8192

listfile=/home/oracle/filelist.txt

mode=edit

构造filelist.txt文件

[oracle@localhost ~]$ cat filelist.txt

1 /u01/app/oracle/oradata/PROD/datafile/o1_mf_system_dc7nllr2_.dbf 775946240

2 /u01/app/oracle/oradata/PROD/datafile/o1_mf_sysaux_dc7nllw6_.dbf 513802240

3 /u01/app/oracle/oradata/PROD/datafile/o1_mf_undotbs1_dc7nllwf_.dbf 31457280

4 /u01/app/oracle/oradata/PROD/datafile/o1_mf_users_dc7nllxz_.dbf 5242880

5 /home/oracle/test.dbf 5242880

使用set filelist 也需要filelist.txt,数据文件的信息单独在一个txt里

---------使用以下sql生成

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

---------获取需要修改数据块的file#,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 wzy.t1;

============使用

---------------------设置块位与偏移量

set dba 5,135 offset 0

set offset 8172

---------------------显示块信息类

map中的所有解都都可以进行p(print)

p kcbh

p kdbh

p kdbr显示row directory

p *kdbr[0]某行数据的偏移量

x /rc进行一次examine

x /3rc进行3次examine,用于显示数据,p到最后一行,进行N次(等于行数)的输

----------------------修改数据

find /c chen

找到字段后,offset会偏移

modify /c 'zhen' dba 5,135 offset 8172

dump /v dba 1,115362 offset 8176count 128

---------------------恢复删除数据

find /c chen

找到字段后,offset会偏移

-----------------------修改校验

sum dba 5,135检查checksum

sum dba 5,135 apply应用required checksum

-----------------------tailcheck

tailcheck=bas_kcbh(后4位)+seq_kcbh+type_kcbh

要根据数据文件字节序,将tailcheck调整,小字节序要倒序,一个字节2个比特

bc9b47567117c57e042802adc563fb4b.png

BBED常用命令:

set 设定当前的环境

show 查看当前的环境参数,跟sqlplus的同名命令类似。

dump 列出指定block的内容

find 在指定的block中查找指定的字符串,结果是显示出字符串,及其偏移量–offset,偏移量就是在block中的字节数

modify 修改指定block的指定偏移量的值,可以在线修改。

copy 把一个block的内容copy到另一个block中

verify 检查当前环境是否有坏块

sum 计算block的checksum,modify之后block就被标识为坏块,current checksum与reqired checksum不一致,sum命令可以计算出新的checksum并应用到当前块。

undo 回滚当前的修改操作,如果手误做错了,undo一下就ok了,回到原来的状态。

revert 回滚所有之前的修改操作,意思就是 undo all

可以使用help来查看bbed的命令语法:

BBED> help all

SET DBA [ dba | file#, block# ]

SET FILENAME 'filename'

SET FILE file#

SET BLOCK [+/-]block#

SET OFFSET [ [+/-]byte offset | symbol | *symbol ]

SET BLOCKSIZE bytes

SET LIST[FILE] 'filename'

SET WIDTH character_count

SET COUNT bytes_to_display

SET IBASE [ HEX | OCT | DEC ]

SET OBASE [ HEX | OCT | DEC ]

SET MODE [ BROWSE | EDIT ]

SET SPOOL [ Y | N ]

SHOW [ | ALL ]

INFO

MAP[/v] [ DBA | FILENAME | FILE | BLOCK ]

DUMP[/v] [ DBA | FILENAME | FILE | BLOCK | OFFSET | COUNT ]

PRINT[/x|d|u|o|c] [ DBA | FILE | FILENAME | BLOCK | OFFSET | symbol | *symbol ]

EXAMINE[/Nuf] [ DBA | FILE | FILENAME | BLOCK | OFFSET | symbol | *symbol ]

:

N - a number which specifies a repeat count.

u - a letter which specifies a unit size:

b - b1, ub1 (byte)

h - b2, ub2 (half-word)

w - b4, ub4(word)

r - Oracle table/index row

f - a letter which specifies a display format:

x - hexadecimal

d - decimal

u - unsigned decimal

o - octal

c - character (native)

n - Oracle number

t - Oracle date

i - Oracle rowid

FIND[/x|d|u|o|c] numeric/character string [ TOP | CURR ]

COPY [ DBA | FILE | FILENAME | BLOCK ] TO [ DBA | FILE | FILENAME | BLOCK ]

MODIFY[/x|d|u|o|c] numeric/character string

[ DBA | FILE | FILENAME | BLOCK | OFFSET | symbol | *symbol ]

ASSIGN[/x|d|u|o] =

: [ DBA | FILE | FILENAME | BLOCK | OFFSET | symbol | *symbol ]

: [ value | ]

SUM [ DBA | FILE | FILENAME | BLOCK ] [ APPLY ]

PUSH [ DBA | FILE | FILENAME | BLOCK | OFFSET ]

POP [ALL]

REVERT [ DBA | FILE | FILENAME | BLOCK ]

UNDO

HELP [ | ALL ]

VERIFY [ DBA | FILE | FILENAME | BLOCK ]

CORRUPT [ DBA | FILE | FILENAME | BLOCK ]

善用BBED可以从很多棘手的问题中拯救我们的数据库,作为Oracle DBA需要了解这样一个工具的存在

df7f47afae0fbb0b7a779e183994c4d0.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值