bbed的使用--安装及初探
bbed是oracle内部一款用来直接查看和修改数据文件数据的工具,可以直接修改Oracle数据文件块的内容,在一些特殊恢复场景下比较有用。
1.bbed 的安装
在9i/10g中连接生成bbed: cd $ORACLE_HOME/rdbms/lib make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed 11g中缺省未提供BBED库文件,但可以把10g的文件copy到相应目录下,再进行编译 oracle 11g中缺bbed包,oracle11g bbed install and example 上传(sbbdpt.o ssbbded.o bbedus.msb,该三个文件拷贝oracle的linux64版本的)文件 $ORACLE_HOME/rdbms/lib/ssbbded.o $ORACLE_HOME/rdbms/lib/sbbdpt.o $ORACLE_HOME/rdbms/mesg/bbedus.msb 执行如下命令: cd $ORACLE_HOME/rdbms/lib make -f $ORACLE_HOME/rdbms/lib/ins_rdbms.mk BBED=$ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbed
2.bbed 的使用
[oracle@ora11g ~]$ bbed -help LRM-: syntax error at '-' at the end of input PASSWORD - Required parameter FILENAME - Database file name BLOCKSIZE - Database block size LISTFILE - List file name MODE - [browse/edit] SPOOL - Spool to logfile [no/yes] CMDFILE - BBED command file name LOGFILE - BBED log file name PARFILE - Parameter file name BIFILE - BBED before-image file name REVERT - Rollback changes from BIFILE [no/yes] SILENT - Hide banner [no/yes] HELP - Show all valid parameters [no/yes] BBED-: LRM error occurred during command line parsing
为了用起来方便,可以先定义一个文件,将数据文件查询出来,放入到参数文件中
[oracle@ora11g ~]$ vi parameter.txt
blocksize=
listfile=dbfiles.txt
mode=edit
$vi dbfiles.txt
)||name||chr()||bytes from v$datafile;
/u01/app/oracle/oradata/test1212/system01.dbf
/u01/app/oracle/oradata/test1212/sysaux01.dbf
/u01/app/oracle/oradata/test1212/undotbs01.dbf
/u01/app/oracle/oradata/test1212/users01.dbf
/u01/app/oracle/oradata/test1212/ss01.dbf
用了参数文件之后再次进入:
[oracle@ora11g ~]$ bbed parfile=parameter.txt Password: BBED: Release - Limited Production on Fri Feb :: Copyright (c) , , Oracle and/or its affiliates. All rights reserved. ************* !!! For Oracle Internal Use only !!! *************** BBED>
3.初步使用
info命令 --显示当前可以进行browse 或者edit 的file。即filelist 里指定的datafile信息。
BBED> info File# Name Size(blks) ----- ---- ----------
show命令 -- 显示当前的配置选项
BBED> show all
BLOCK#
OFFSET --偏移量,0代表从第1个字节,
DBA ,) --DBA(data block addr)的组成 = 文件号 + 块号,一共32位
FILENAME /u01/app/oracle/oradata/test1212/system01.dbf
BIFILE bifile.bbd
LISTFILE dbfiles.txt
BLOCKSIZE
MODE Edit
EDIT Unrecoverable
IBASE Dec
OBASE Dec
WIDTH
LOGFILE log.bbd
SPOOL No
备注:
DBA(data block addr) = file#(10bit) + block#(22bit) =32bit
所以文件个数最多是2的10次方=1024个
DBA = 0x00400001 ====> 0000 0000 0100 0000 0000 0000 0000 0001
从以上所知的前10位为file#,所以可以放一个分隔符再看:
0000 0000 01[分隔符]00 0000 0000 0000 0000 0001 (4194305 1,1)
可以看出file#=1,block#=1 ,就和上面的show出来的信息对应起来了
set命令 --设置相应的信息
如果要查看2号文件的2号块,则可以使用set命令来设置文件号和块号
BBED
BBED
BLOCK#
BBED> show all
BLOCK#
OFFSET
DBA ,)
FILENAME /u01/app/oracle/oradata/test1212/sysaux01.dbf
BIFILE bifile.bbd
LISTFILE dbfiles.txt
BLOCKSIZE
MODE Edit
EDIT Unrecoverable
IBASE Dec
OBASE Dec
WIDTH
LOGFILE log.bbd
SPOOL No
DBA
再次回到1号文件的0号块
BBED
BBED
BLOCK#
BBED> show all
BLOCK#
OFFSET
DBA ,)
FILENAME /u01/app/oracle/oradata/test1212/system01.dbf
BIFILE bifile.bbd
LISTFILE dbfiles.txt
BLOCKSIZE
MODE Edit
EDIT Unrecoverable
IBASE Dec
OBASE Dec
WIDTH
LOGFILE log.bbd
SPOOL No
dump命令 --十六进制查看block
dump /v --查看十六进制内容的同时以文本方式“翻译”十六进制显示的内容,相当于对当前block执行strings命令
BBED> dump ) Block: Dba:0x00400000 ------------------------------------------------------------------------ 00a20000 0000c0ff 67ae0000 7d7c7b7a a0810000 bytes per line>
备注:
从Offsets可以看出,只显示了0-511个字节的偏移,也就是512个字节的信息,因为默认是 COUNT=512
我们知道oracle一个块默认大小8192,所以如果要让一个块的dump信息显示完全的话,就可以set count 8192,再执行dump
map命令 --Map会通过偏移量来显示block里的详细信息,如block header,data block header 和row directory。
在不指定block的情况下,会显示当前block的信息,如果想显示其他block的信息,可以使用file name,file id,block 和DBA 来指定要显示的block。
BBED> map ) Block: Dba:0x00400001 ------------------------------------------------------------ Data File Header struct kcvfh, bytes @0 ub4 tailchk @8188
备注:
u 代表没有符号的 unsigned
tailchk 尾部校验,一共是8192个块,因为是从0开始的,所以最后一个字节是8191,换句话说就是从8188-8191这4个字节是不能用的,是拿来做尾部校验的
struct kcvfh ,其中的kcvfh其实在oracle中也有一个视图可以查询select * from x$kcvfh; 今后再进行仔细研究
map /v --比map更详细的查看block里面的信息
BBED> map /v
)
Block: Dba:0x00400001
------------------------------------------------------------
Data File Header
struct kcvfh, bytes @0
struct kcvfhbfh, bytes @0
struct kcvfhhdr, bytes @20
ub4 kcvfhrdb @96
struct kcvfhcrs, bytes @100
ub4 kcvfhcrt @108
ub4 kcvfhrlc @112
struct kcvfhrls, bytes @116
ub4 kcvfhbti @124
struct kcvfhbsc, bytes @128
ub2 kcvfhbth @136
ub2 kcvfhsta @138
struct kcvfhckp, bytes @484
ub4 kcvfhcpc @140
ub4 kcvfhrts @144
ub4 kcvfhccc @148
struct kcvfhbcp, bytes @152
ub4 kcvfhbhz @312
struct kcvfhxcd, bytes @316
sword kcvfhtsn @332
ub2 kcvfhtln @336
] @338
ub4 kcvfhrfn @368
struct kcvfhrfs, bytes @372
ub4 kcvfhrft @380
struct kcvfhafs, bytes @384
ub4 kcvfhbbc @392
ub4 kcvfhncb @396
ub4 kcvfhmcb @400
ub4 kcvfhlcb @404
ub4 kcvfhbcs @408
ub2 kcvfhofb @412
ub2 kcvfhnfb @414
ub4 kcvfhprc @416
struct kcvfhprs, bytes @420
struct kcvfhprfs, bytes @428
ub4 kcvfhtrt @444
ub4 tailchk @8188
print命令 --查看命令,可以用p来简写
如果想对上面的 struct kcvfhbfh再进行详细的查看,可以使用命令print来查看
BBED> p kcvfhbfh struct kcvfhbfh, bytes @0 ub1 type_kcbh @0 0x0b ub1 frmt_kcbh @1 0xa2 ub1 spare1_kcbh @2 0x00 ub1 spare2_kcbh @3 0x00 ub4 rdba_kcbh @4 0x00400001 ub4 bas_kcbh @8 0x00000000 ub2 wrp_kcbh @12 0x0000 ub1 seq_kcbh @14 0x01 ub1 flg_kcbh @15 0x04 (KCBHFCKV) ub2 chkval_kcbh @16 0xe81a ub2 spare3_kcbh @18 0x0000
bbed的使用--安装及初探的更多相关文章
- freeswitch编译安装,初探, 以及联合sipgateway, webrtc server的使用场景。
本文主要记录freeswitch学习过程. 一 安装freeswitch NOTE 以下两种安装方式,再安装的过程中遇到了不少问题,印象比较深刻的就是lua库找到不到这个问题.这个问题发生在make ...
- SMACH专题(一)----安装与初探
最近使用ROS进行任务(Task)执行,深切体会用传统的方法实现是极其繁杂的.比如人脸录入工作,包含人脸检测,识别,语音提示,运动控制,这些子部分基本都是通过订阅话题的回调函数中处理,之间的切换,如人 ...
- 虚拟机安装&Linux初探
学习基于VirtualBox虚拟机安装Ubuntu图文教程在自己笔记本上安装Linux操作系统 安装虚拟机的过程还算顺利.除了在安装增强设备功能时需要将之前的硬盘弹出之外,没有遇到其他的问题. 通过实 ...
- Python模块安装路径初探
在调用MySQL第三方工具mysqlrplsync是报错 mysqlrplsync --master=checksum:checksum@master_ip:3306 --slave=checksum ...
- oracle之 11.2.0.4 bbed安装
一. bbed安装: 1.ORACLE 11G下安装BBED,需要从ORACLE 10G中复制三个包 sbbdpt.o .ssbbded.o 并将两个文件移到$ORACLE_HOME/rdbms/li ...
- 一个winform带你玩转rabbitMQ
源码已放出 https://github.com/dubing/MaoyaRabbit 本章分3部分 一.安装部署初探 二.进阶 三.api相关 安装 部署 初探 先上图 一. 安装部署 下载 rab ...
- 20155330 2016-2017-2《Java程序设计》课程总结
20155330 2016-2017-2<Java程序设计>课程总结 目录 每周作业链接汇总 实验报告链接汇总 代码托管 课堂项目实践 课程收获与不足 问卷调查 给出你的总结中涉及到的链接 ...
- oracle--BBED (dump 深入实践三)
一,工具介绍 bbed是Block Browser and Editor(块浏览编辑器)的缩写,它是Oracle数据库在安装时一起附带的工具. 一般此工具倾向于仅作为Oracle内部使用,且Oracl ...
- BBED的安装
BBED是Block Browser EDitor的缩写,只有linux/unix版本,没有windows版本. 11g中默认是不带bbed的,如果要使用,可以在10g中拷贝过来,然后再进行编译使用. ...
随机推荐
- Aufs与Devicemapper的关系
Aufs与Devicemapper的应用 Aufs是Docker最初采用的文件系统,由于Aufs未能加入到Linux内核,考虑到兼容性问题,加入了Devicemapper的支持.目前,除少数版本如Ub ...
- 【GoLang】GoLang 的流程与函数
003.GO流程与函数 1 概述 1.1 Go中流程控制分三大类:条件判断,循环控制和无条件跳转 2 流程 2.1 if 2.1.1 if条件判断语句中不需要括号 2.1.2 条件判断语句里面允许声明 ...
- JavaScript——this关键字
请看下面的代码,最后alert出来的是什么呢? 1 var name = "Bob"; 2 var nameObj ={ 3 name : "Tom", 4 s ...
- python之errno
http://www.cnblogs.com/Security-Darren/p/4168392.html errno.EWOULDBLOCK 操作将会阻塞
- Appium根据xpath获取控件
如文章< Appium基于安卓的各种FindElement的控件定位方法实践>所述,Appium拥有众多获取控件的方法.其中一种就是根据控件所在页面的XPATH来定位控件. 本文就是尝试通 ...
- ios 修正waring:Method override for the designated initializer of the superclass '-init' not found
swift引入后,为了使oc和swift更相近,对oc的初始化方法也进行了修正,具体说明,见下面的链接,这个waring的最简单的修正方法是,到相应类的头文件中,去掉在自定义初始化方法后面的 NS_D ...
- FFmpeg-20160415-snapshot-bin
ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 S 下一帧 [ -2秒 ] +2秒 ; -1秒 ' +1秒 下一个帧 -> -5秒 F ...
- 【C语言】pragma
① #pragma comment (lib, "libgsl.a") 这是告诉编译器在编译形成的.obj文件和.exe文件中加一条信息,使得 链接器在链接库的时候要去找libgs ...
- ajax+bootstrap做弹窗
建页面,引入bootstrap弹窗 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " ...
- 如何点击按钮后在加载外部的Js文件
或许有朋友遇到过,想等自己点击按钮之后才执行某一个js文件,那么,你运气好,看到了我的代码了哈哈, <html> <head> <title></title& ...