Home > Oracle > 正文

BBED那些事-自用总结

简单的说明

select checkpoint_change# from v$database;   --来自controlfile

select checkpoint_change# from v$datafile;   --来自controlfile

select checkpoint_change# from v$datafile_orader; --来自datafile header

最常用的关注的几个值的信息

BBED> p kcvfh

struct kcvfh, 676 bytes @0

ub4 kscnbas @484 0x0002be3f --------数据文件头scn

ub4 kcvcptim @492 0x33b69ab8 --------数据文件头checkpoint_time的值

ub4 kcvfhcpc @140 0x0000000b ----------文件头中检查点计数器(kcvfhcpc)的值

ub4 kcvfhccc @148 0x0000000a -----------数据文件头中控制文件备份的计数器(kcvfhccc)的值 比检查点计数器小1

 

(0)先配置BBED

在11g数据库中

1.上传3个文件到数据库主机

[root@db2 ~] su - oracle

[oracle@db2 ~]$ ls

bbedus.msb  sbbdpt.o  ssbbded.o

2.拷贝这三个文件分别到不同的目录下

cp  bbedus.msb $ORACLE_HOME/rdbms/mesg

cp  sbbdpt.o  $ORACLE_HOME/rdbms/lib

cp  ssbbded.o $ORACLE_HOME/rdbms/lib

3.进入到$ORACLE_HOME/rdbms/lib目录

[oracle@db1 ~]$ cd $ORACLE_HOME/rdbms/lib

4.编译bbed文件

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

Linking BBED utility (bbed)

rm -f /u01/oracle/product/10.2.0/rdbms/lib/bbed

gcc -o /u01/oracle/product/10.2.0/rdbms/lib/bbed -m64 -L/u01/oracle/product/10.2.0/rdbms/lib/ -L/u01/oracle/product/10.2.0/lib/ -L/u01/oracle/product/10.2.0/lib/stubs/  /u01/oracle/product/10.2.0/lib/s0main.o /u01/oracle/product/10.2.0/rdbms/lib/ssbbded.o /u01/oracle/product/10.2.0/rdbms/lib/sbbdpt.o `cat /u01/oracle/product/10.2.0/lib/ldflags`    -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -ldbtools11 -lclntsh  `cat /u01/oracle/product/10.2.0/lib/ldflags`    -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /u01/oracle/product/10.2.0/lib/ldflags`    -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnnz11 -lzt11 -lztkg11 -lztkg11 -lclient11 -lnnetd11  -lvsn11 -lcommon11 -lgeneric11 -lmm -lsnls11 -lnls11  -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 `cat /u01/oracle/product/10.2.0/lib/ldflags`    -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /u01/oracle/product/10.2.0/lib/ldflags`    -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lclient11 -lnnetd11  -lvsn11 -lcommon11 -lgeneric11   -lsnls11 -lnls11  -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 -lclient11 -lnnetd11  -lvsn11 -lcommon11 -lgeneric11 -lsnls11 -lnls11  -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11   `cat /u01/oracle/product/10.2.0/lib/sysliblist` -Wl,-rpath,/u01/oracle/product/10.2.0/lib -lm    `cat /u01/oracle/product/10.2.0/lib/sysliblist` -ldl -lm   -L/u01/oracle/product/10.2.0/lib

 

5.如果编译没报错,把bbed文件拷贝到$ORACLE_HOME/bin 目录

[oracle@db2 lib]$ cp bbed $ORACLE_HOME/bin

到此就完成配置了

 

如何使用?

(1)先获取datafile 的信息

       将datafile 的信息写入一个文件如dbfile.txt格式为:文件编号  文件名字 文件大小。(3列信息中间使用空格隔开)

可以通过如下SQL   获取:

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

把以上sql查询结果保存到dbfile.txt

备注:该输出可以自行加条件选择是否只选择需要操作的数据文件,也可以把数据库所有数据文件全部输入

(2) 创建parameter file

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

blocksize=8192

listfile=/u01/filelist.txt

mode=edit

(3)使用parameter file 连接bbed

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

Password:

bbed 的默认密码:blockedit

===================================================

进入bbed后,如果要查看2号数据文件,就使用如下命令 set dba 2,1

BBED>set dba 2,1

--set data block address , file_id, block.这里的2指的是文件ID,1指的是1号块

设置file 1,block 60882

BBED> set dba 1,60882

       DBA             0x0040edd2(4255186 1,60882)

       如果设置成功,会返回该block的RDBA (Relative Data Block Address),rdba就是rowid中的rfile#+block#。

===========================================

查看某些值可以使用p命令跟关键字输出,如下(已做省略处理,只保留关键信息)

BBED> p kcvfh

 

ub4 kscnbas @484 0x0052dc43

ub4 kcvcptim @492 0x33b9168b

ub4 kcvfhcpc @140 0x0000001d

ub4 kcvfhccc @148 0x0000001c

这里可以看到偏移量为484的输出值为:0052dc43

==================================================

如果要输出查看某个数据文件的某个块信息,使用dump命令

如:查看2号数据文件的1号块,偏移量为484的信息,长度为4位

就使用如下命令查看

BBED>dump dba 2,1 offset 484 count 4

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

Block: 1 Offsets: 484 to 487 Dba:0x00300001

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

43dc5200

<32 bytes per line>

注:dump输出的值是可以直接用的,不用根据平台做反转之类的操作。

如:从484到487号的值(每2个数字为1位)分别为 43、dc、52、00

dump出来的值(43dc5200)和上面使用p命令输出的值(0052dc43)刚好是2位一组反向来的

====================================================

假如要修改偏移量484的值为:43dd7812,那么使用如下命令

因为每次只能修改2位,所以分2次修改,484为43485为dd486为78486为12

BBED> m /x 43dd OFFSET 484

BBED> m /x 7812 OFFSET 486

=====================================================

修改完成后使用sum apply 重新计算校验并应用即可生效。

BBED>sum apply

=====================================================

附:BBED文件

链接: https://pan.baidu.com/s/1lSaVexL55YuGWK8RCsDeZw 提取码: ynmi 复制这段内容后打开百度网盘手机App,操作更方便哦 
--来自百度网盘超级会员v5的分享

 

 

 

以上信息仅为个人理解和输出笔记,仅供参考。

 

 

上一篇:关于数据库用户登录缓慢的问题
下一篇:dd命令的简单使用解决ORA-01200错误参考
rman fail for  ORA-01455  RMAN-06031 BUG 5448714

rman fail for ORA-01455 RMAN-06031 BUG 5448714

Oracle 11gRAC  Enterprises Manager (OEM)配置

Oracle 11gRAC Enterprises Manager (OEM)配置

sys帐号重命名导致的kokasgi1报错

sys帐号重命名导致的kokasgi1报错

dd命令的简单使用解决ORA-01200错误参考

dd命令的简单使用解决ORA-01200错误参考

关于数据库用户登录缓慢的问题

关于数据库用户登录缓慢的问题

数据库RAC 磁盘组磁盘调整

数据库RAC 磁盘组磁盘调整

CRS-2730集群资源DG无法删除

CRS-2730集群资源DG无法删除

发表评论

昵称
邮箱
网址

沙发空闲中,快来抢!