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中拷贝过来,然后再进行编译使用. ...
随机推荐
- http apr 8080 exec 3解决
IDEA运行tomcat,总是出现这个错误. 解决: 在tomcat的配置里,加上下面这句话: -Xms256m -Xmx512m -XX:MaxNewSize=64m -XX:MaxPermSize ...
- 算法手记 之 数据结构(堆)(POJ 2051)
一篇读书笔记 书籍简评:<ACM/ICPC 算法训练教程>这本书是余立功主编的,代码来自南京理工大学ACM集训队代码库,所以小编看过之后发现确实很实用,适合集训的时候刷题啊~~,当时是听了 ...
- 警告: 程序集绑定日志记录被关闭(IIS7 64位系统)
部署一个.NET程序在IIS7服务器,出现如下信息: 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: S ...
- oracle触发器,一个表新增、修改的同时同步另一张表
oracle创建触发器,把本地新增.修改数据过程同步到另一个服务器上去. 如果是本地,加数据库名即可.如果是远程服务器,不是一台机器,做一个db_link操作即可. ----------------- ...
- GridView中使用分页控件
前台:导入<%@ Register assembly="AspNetPager" namespace="Wuqi.Webdiyer" tagprefix= ...
- ios block中引用self
__block __weak typeof(self) tmpSelf = self; ^(){ tmpSelf...... }
- java删除被占用的文件
boolean result = f.delete();//判断是否删除完毕 if(!result) { System.gc();//系统进行资源强制回收 f.delete; }
- 经典.net试题
经典.net面试题目 1. 简述 private. protected. public. internal 修饰符的访问权限. 答 . private : 私有成员, 在类的内部才可以访问. pr ...
- YCbCr 编码格式(YUV)---转自Crazy Bingo的博客
YCbCr是DVD.摄像机.数字电视等消费类视频产品中,常用的色彩编码方案. YCbCr 有时会称为 YCC..Y'CbCr 在模拟分量视频(analog component video)中也常被称为 ...
- 写了个简单的pdo的封装类
<?php class PD { //造对象 public $dsn = "mysql:dbname=test2;host=localhost"; //数据库类型,数据库名和 ...