oracle--BBED (dump 深入实践三)
发布时间:2020-12-12 13:00:36 所属栏目:百科 来源:网络整理
导读:一,工具介绍 bbed是Block Browser and Editor(块浏览编辑器)的缩写,它是Oracle数据库在安装时一起附带的工具。 ?????? 一般此工具倾向于仅作为Oracle内部使用,且Oracle公司并不公开此工具使用细节。 ?? ? ? 由于bbed可以对Oracle数据库中的数据块进行内
一,工具介绍bbed是Block Browser and Editor(块浏览编辑器)的缩写,它是Oracle数据库在安装时一起附带的工具。 ?????? 一般此工具倾向于仅作为Oracle内部使用,且Oracle公司并不公开此工具使用细节。 ?? ? ? 由于bbed可以对Oracle数据库中的数据块进行内容修改和破坏,因此此工具功能强大同时伴有很高的使用风险。 二,工具安装模块和库地址: https://files.cnblogs.com/files/kingle-study/BBED.zip [[email?protected] ~]$ cd BBED/ [[email?protected] BBED]$ ls bbedus.msb bbedus.msg BBED配置说明.txt sbbdpt.o ssbbded.o [[email?protected] BBED]$ l -bash: l: command not found [[email?protected] BBED]$ ls bbedus.msb bbedus.msg BBED配置说明.txt sbbdpt.o ssbbded.o [[email?protected] BBED]$ mv ssbbded.o sbbdpt.o $ORACLE_HOME/rdbms/lib/ ---文件拷贝到oracle 库下面 [[email?protected] BBED]$ mv bbedus* $ORACLE_HOME/rdbms/mesg/ ----文件拷贝到oracle 模块下面 [[email?protected] BBED]$ make -f $ORACLE_HOME/rdbms/lib/ins_rdbms.mk BBED=$ORACLEME/bin/bbed ---执行编译安装 Linking BBED utility (bbed) rm -f /u01/app/oracle/product/11.2.0/db_1/bin/bbed gcc -o /u01/app/oracle/product/11.2.0/db_1/bin/bbed -m64 -z noexecstack -L/u01/app/oracle/prob/ -L/u01/app/oracle/product/11.2.0 /db_1/lib/ -L/u01/app/oracle/product/11.2.0/db_1/lib/stubst/11.2.0 /db_1/lib/s0main.o /u01/app/oracle/product/11.2.0/db_1/rdbms /lib/ssbbded.o /u01/app/o/rdbms/lib/sbbdpt.o `cat /u01/app/oracle /product/11.2.0/db_1/lib/ldflags` -lncrypt11 -lnsg -ldbtools11 -lclntsh `cat /u01/app/oracle/product/11.2.0/db_1/lib/ldflags` -lncrypt11 -ll11 -lnro11 `cat /u01/app/oracle/product/11.2.0/db_1/lib/ldflags` -lncrypt11 -lnsgr11 -lnz -lzt11 -lztkg11 -lclient11 -lnnetd11 -lvsn11 -lcommon11 -lgeneric11 -lmm -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 `cat /.2.0/db_1/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /u01/app/oraib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lclient11 -lnnetd11 -lvsn11 -lcomm11 -lnls11 -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lclient11 -lnnetd11 -lvsn11 -lcommon11 -lgeneric11 -lsnls11 -lnls11 -lcore11 -lsnls111 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 `cat /u01/app/oraclesysliblist` -Wl,-rpath,/u01/app/oracle/product/11.2.0/db_1/lib -lm ? 三,配置文件SQL> select file#||‘ ‘||name||‘ ‘||bytes from v$datafile ; FILE#||‘‘||NAME||‘‘||BYTES -------------------------------------------------------------------------------- 1 /u01/app/oracle/oradata/oracle01/system01.dbf 849346560 2 /u01/app/oracle/oradata/oracle01/sysaux01.dbf 1121976320 3 /u01/app/oracle/oradata/oracle01/undotbs01.dbf 304087040 4 /u01/app/oracle/oradata/oracle01/users01.dbf 5242880 5 /u01/app/oracle/oradata/oracle01/example01.dbf 363069440 6 /u01/app/oracle/oradata/oracle01/test01.dbf 10485760 7 /u01/app/oracle/oradata/oracle01/test101.dbf 10485760 ? 四,启动与体验[[email?protected] BBED]$ bbed --help LRM-00116: syntax error at ‘-‘ following ‘-‘ PASSWORD - Required parameter FILENAME - Database file name BLOCKSIZE - Database block size 可编辑的数据文件标准块大小。 LISTFILE - List file name 列出可编辑的文件 MODE - [browse/edit] bbed可运行模式(browser或edit) SPOOL - Spool to logfile [no/yes] 操作记录写出到bbed.log文件 (Y或N) CMDFILE - BBED command file name 可执行命令的文件名清单 LOGFILE - BBED log file name 用户日志文件文件名。默认为log.bbd PARFILE - Parameter file name 列有命令项的参数文件 BIFILE - BBED before-image file name undo文件文件名。默认为bifile.bbd REVERT - Rollback changes from BIFILE [no/yes] SILENT - Hide banner [no/yes] 不将输出打印到标准输出上(Y或N) HELP - Show all valid parameters [no/yes] BBED-00105: LRM error 110 occurred during command line parsing [[email?protected] BBED]$ bbed password=blockedit parfile=par.bbd ? BBED> set blocksize 8192 --块大小 BBED> set listfile ‘bbed.txt‘ --文件位置 BBED> set width 200 -- 设置屏幕显示宽度 BBED> set count 512 --设置dump命令显示的字节数,默认是512bytes BBED> set mode browse -- 设置模式 or BBED> set mode edit ? BBED> map --查看当前位置 File: /u01/app/oracle/oradata/oracle01/system01.dbf (1) Block: 1 Dba:0x00400001 ------------------------------------------------------------ Data File Header struct kcvfh,860 bytes @0 ub4 tailchk @8188 BBED> set filename ‘/u01/app/oracle/oradata/oracle01/test101.dbf‘ FILENAME /u01/app/oracle/oradata/oracle01/test101.dbf --指定文件 BBED> map --当前位置 File: /u01/app/oracle/oradata/oracle01/test101.dbf (7) Block: 1 Dba:0x01c00001 ------------------------------------------------------------ Data File Header struct kcvfh,860 bytes @0 ub4 tailchk @8188 ? --查看全部信息 BBED> show all FILE# 7 BLOCK# 1 OFFSET 0 DBA 0x01c00001 (29360129 7,1) FILENAME /u01/app/oracle/oradata/oracle01/test101.dbf BIFILE bifile.bbd LISTFILE bbed.txt BLOCKSIZE 8192 MODE Edit EDIT Unrecoverable IBASE Dec OBASE Dec WIDTH 80 COUNT 512 LOGFILE log.bbd SPOOL No ? BBED> help all 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 ?五,一顿操作BBED> map File: /u01/app/oracle/oradata/oracle01/test101.dbf (7) Block: 132 Dba:0x01c00084 ------------------------------------------------------------ KTB Data Block (Table/Cluster) struct kcbh,20 bytes @0 --块头信息,cache layer struct ktbbh,72 bytes @20 --事务信息,transaction layer struct kdbh,14 bytes @100 --对应数据头,占用14字节 struct kdbt[1],4 bytes @114 --表目录*kdbt[0]指针显示值 sb2 kdbr[4] @118 --行目录 *kdbr[0]指针值显示状态flg ub1 freespace[8016] @126 --空闲空间 ub1 rowdata[46] @8142 --行数据 ub4 tailchk @8188 --tail check 这个是文件7,块132的,整个块的数据结构。可以看到行数据时从下开始增加的,空闲的空间是在中间。 后面@开头的表示在该块的偏移。 @0表示该块开始的地方开始。 @20表示从第20个字节开始。那么0~19个字节就是 block-header的信息了。 可以看到数据是再8142开始我们dump 下这个数据看 BBED> dump /v dba 7,132 offset 8142 count 64 File: /u01/app/oracle/oradata/oracle01/test101.dbf (7) Block: 132 Offsets: 8142 to 8191 Dba:0x01c00084 ------------------------------------------------------- 2c010202 c1020371 77652c00 0202c104 l,...??.qwe,...?? 05454545 45452c00 0202c103 05424242 l .EEEEE,...??.BBB 42422c00 0202c102 05414141 41410106 l BB,...??.AAAAA.. 652c l e,<16 bytes per line> 能看到这些数据再这里显示了 这些数据的话也能通过find 查询到 BBED> find /c AAAAA File: /u01/app/oracle/oradata/oracle01/test101.dbf (7) Block: 132 Offsets: 8183 to 8191 Dba:0x01c00084 ------------------------------------------------------------------------ 41414141 41010665 2c <32 bytes per line> 更改数据字段 BBED> modify /c ABCED dba 7,132 offset 8183 File: /u01/app/oracle/oradata/oracle01/test101.dbf (7) Block: 132 Offsets: 8183 to 8191 Dba:0x01c00084 ------------------------------------------------------------------------ 41424345 44010665 2c <32 bytes per line> 保存数据 BBED> sum dba 7,132 apply Check value for File 7,Block 132: current = 0xc875,required = 0xc875 ? >>其他: https://blog.csdn.net/notbaron/article/details/51228533 ?https://www.cnblogs.com/hrhguanli/p/4708273.html
? ? 五,操作一波 [Wǔ,cāozuò yī bō](编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |