当前位置: 首页 > news >正文

【原】oracle11g bbed install and example

作者:david_zhang@sh 【转载时请以超链接形式标明文章】

链接:http://www.cnblogs.com/david-zhang-index/archive/2012/09/08/2676699.html

1.上传(sbbdpt.o ssbbded.o bbedus.msb,该三个文件拷贝oracle的linux64版本的)文件,到如下代码展示的目录中

三个文件下载地址:linux10g_64_bbed.7z

1 SQL> select * from v$version where rownum=1;
2 
3 BANNER
4 --------------------------------------------------------------------------------
5 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
 1 [oracle@DG lib]$ pwd
 2 /u01/app/oracle/product/11.2.0/dbhome_1/rdbms/lib
 3 [oracle@DG lib]$ ls ssbbded.o sbbdpt.o
 4 sbbdpt.o  ssbbded.o
 5 [oracle@DG lib]$ cd ../mesg/
 6 [oracle@DG mesg]$ pwd
 7 /u01/app/oracle/product/11.2.0/dbhome_1/rdbms/mesg
 8 [oracle@DG mesg]$ ls bbedus.msb
 9 bbedus.msb
10 [oracle@DG mesg]$

2.执行如下命令:

1 [oracle@DG ~]$ make -f $ORACLE_HOME/rdbms/lib/ins_rdbms.mk BBED=$ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbed
2 以下为执行命令后默认输出的
3 Linking BBED utility (bbed)
4 rm -f /u01/app/oracle/product/11.2.0/dbhome_1/bin/bbed
5 gcc -o /u01/app/oracle/product/11.2.0/dbhome_1/bin/bbed -m64 -L/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/ -L/u01/app/oracle/product/11.2.0/dbhome_1/lib/ -L/u01/app/oracle/product/11.2.0/dbhome_1/lib/stubs/  /u01/app/oracle/product/11.2.0/dbhome_1/lib/s0main.o /u01/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/ssbbded.o /u01/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/sbbdpt.o `cat /u01/app/oracle/product/11.2.0/dbhome_1/lib/ldflags`    -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -ldbtools11 -lclntsh  `cat /u01/app/oracle/product/11.2.0/dbhome_1/lib/ldflags`    -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /u01/app/oracle/product/11.2.0/dbhome_1/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/app/oracle/product/11.2.0/dbhome_1/lib/ldflags`    -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /u01/app/oracle/product/11.2.0/dbhome_1/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/app/oracle/product/11.2.0/dbhome_1/lib/sysliblist` -Wl,-rpath,/u01/app/oracle/product/11.2.0/dbhome_1/lib -lm    `cat /u01/app/oracle/product/11.2.0/dbhome_1/lib/sysliblist` -ldl -lm   -L/u01/app/oracle/product/11.2.0/dbhome_1/lib

3.登录,默认密码blockedit,出现如下提示符安装成功

 1 [oracle@DG ~]$ bbed
 2 Password:
 3 
 4 BBED: Release 2.0.0.0.0 - Limited Production on Sat Sep 8 15:29:28 2012
 5 
 6 Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
 7 
 8 ************* !!! For Oracle Internal Use only !!! ***************
 9 
10 BBED> show all
11         FILE#           0
12         BLOCK#          1
13         OFFSET          0
14         DBA             0x00000000 (0 0,1)
15         FILENAME
16         BIFILE          bifile.bbd
17         LISTFILE
18         BLOCKSIZE       8192
19         MODE            Browse
20         EDIT            Unrecoverable
21         IBASE           Dec
22         OBASE           Dec
23         WIDTH           80
24         COUNT           512
25         LOGFILE         log.bbd
26         SPOOL           No

 4.Example#1-Changing Data

 1 SQL> conn scott/tiger
 2   Connected.
 3   SQL> select * from presidents;
 4   
 5   NAME                 START_YEAR END_YEAR
 6   -------------------- ---------- ----------
 7   Dwight Eisnehower    1953       1961
 8   Jonh Kennedy         1961       1963
 9   
10   SQL> select rowid from presidents where name = 'Dwight Eisnehower';
11   
12   ROWID
13   ------------------
14   AAASTyAAEAAAAivAAA
 1 create or replace function get_rowid(l_rowid in varchar2) return varchar2 is
 2     ls_my_rowid   varchar2(200);
 3     rowid_type    number;
 4     object_number number;
 5     relative_fno  number;
 6     block_number  number;
 7     row_number    number;
 8   begin
 9     dbms_rowid.rowid_info(l_rowid,
10                           rowid_type,
11                           object_number,
12                           relative_fno,
13                           block_number,
14                           row_number);
15     ls_my_rowid := 'Row_id type is  :' || to_char(rowid_type) || chr(10) ||
16                    'Object# is      :' || to_char(object_number) || chr(10) ||
17                    'Relative_fno is :' || to_char(relative_fno) || chr(10) ||
18                    'Block number is :' || to_char(block_number) || chr(10) ||
19                    'Row number is   :' || to_char(row_number);
20     return ls_my_rowid;
21   end;
1 SQL> select get_rowid('AAASTyAAEAAAAivAAA') row_id from dual;
2   
3   ROW_ID
4   ------------------------------------------------------------
5   Row_id type is  :1
6   Object# is      :74994
7   Relative_fno is :4
8   Block number is :2223
9   Row number is   :0
 1 [oracle@DG ~]$ bbed parfile=bbed.par
 2  Password:
 3  
 4  BBED: Release 2.0.0.0.0 - Limited Production on Sat Sep 15 21:00:43 2012
 5  
 6  Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
 7  
 8  ************* !!! For Oracle Internal Use only !!! ***************
 9  
10  BBED> set dba 4,2223
11          DBA             0x010008af (16779439 4,2223)
12  
13  BBED> find /c Dwight
14   File: /u01/app/oracle/oradata/oracle/users01.dbf (4)
15   Block: 2223             Offsets: 8161 to 8191           Dba:0x010008af
16  ------------------------------------------------------------------------
17   44776967 68742045 69736e65 686f7765 72043139 35330431 39363101 0611d9
18  
19   <32 bytes per line>
20  BBED> dump /v dba 4,2223 offset 8161 count 64
21   File: /u01/app/oracle/oradata/oracle/users01.dbf (4)
22   Block: 2223    Offsets: 8161 to 8191  Dba:0x010008af
23  -------------------------------------------------------
24   44776967 68742045 69736e65 686f7765 l Dwight Eisnehowe
25   72043139 35330431 39363101 0611d9   l r.1953.1961...Ù
26  
27   <16 bytes per line>
28  
29  BBED> modify /c Eisn dba 4,2223 offset 8161
30  Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
31   File: /u01/app/oracle/oradata/oracle/users01.dbf (4)
32   Block: 2223             Offsets: 8161 to 8191           Dba:0x010008af
33  ------------------------------------------------------------------------
34   4569736e 68742045 69736e65 686f7765 72043139 35330431 39363101 0611d9
35  
36   <32 bytes per line>
37  
38  BBED> dump /v dba 4,2223 offset 8161 count 64
39   File: /u01/app/oracle/oradata/oracle/users01.dbf (4)
40   Block: 2223    Offsets: 8161 to 8191  Dba:0x010008af
41  -------------------------------------------------------
42   4569736e 68742045 69736e65 686f7765 l Eisnht Eisnehowe
43   72043139 35330431 39363101 0611d9   l r.1953.1961...Ù
44  
45   <16 bytes per line>
46  
47  BBED> sum dba 4,2223
48  Check value for File 4, Block 2223:
49  current = 0xcf83, required = 0xd494
50  
51  BBED> sum dba 4,2223 apply
52  Check value for File 4, Block 2223:
53  current = 0xd494, required = 0xd494
54  
55  BBED> exit
 1 SQL> alter system flush buffer_cache;
 2   
 3   System altered.
 4   
 5   SQL> conn scott/tiger
 6   Connected.
 7 SQL> select * from presidents;
 8 
 9 NAME                 START_YEAR END_YEAR
10 -------------------- ---------- ----------
11 Eisnht Eisnehower    1953       1961
12 Jonh Kennedy         1961       1963

备注:Dwight被Eisn替换是按照顺序进行的且字节数一致,替换后为Eisnht,如果ht也提替换可以空格补充。

Example#2-Recovering Deleted Rows

删除一条记录

 1 SQL> select * from presidents;
 2 
 3 NAME                 START_YEAR END_YEAR
 4 -------------------- ---------- ----------
 5 Eisnht Eisnehower    1953       1961
 6 Jonh Kennedy         1961       1963
 7 Richard Nixon        1969       1974
 8 
 9 SQL> delete from presidents where name = 'Richard Nixon';
10 
11 1 row deleted.
12 
13 SQL> commit;
14 
15 Commit complete.
16 
17 SQL> select * from presidents;
18 
19 NAME                 START_YEAR END_YEAR
20 -------------------- ---------- ----------
21 Eisnht Eisnehower    1953       1961
22 Jonh Kennedy         1961       1963

根据段名查询相关信息,并dump数据块

 1 SQL> select HEADER_FILE,HEADER_BLOCK,BLOCKS from dba_segments where SEGMENT_NAME = 'PRESIDENTS';
 2 
 3 HEADER_FILE HEADER_BLOCK     BLOCKS
 4 ----------- ------------ ----------
 5           4         2218          8
 6 
 7 SQL> alter system dump datafile 4 block min 2218 block max 2225;
 8 
 9 System altered.
10 
11 SQL> oradebug setmypid;
12 Statement processed.
13 SQL> oradebug tracefile_name;
14 /u01/app/oracle/diag/rdbms/oracle/oracle/trace/oracle_ora_3381.trc

查看trace文件,这里我dump了8个块,这里稍微解释下“--H-FL--”(数据块属性)= Row Flag=32+8+4=44=0x2c,“--HDFL--”(删除数据块属性)= Row Flag=32+16+8+4=60=0x3c

 1 .....省略.....
 2 block_row_dump:
 3 tab 0, row 0, @0x1f79
 4 tl: 31 fb: --H-FL-- lb: 0x0  cc: 3
 5 col  0: [17]  45 69 73 6e 68 74 20 45 69 73 6e 65 68 6f 77 65 72
 6 col  1: [ 4]  31 39 35 33
 7 col  2: [ 4]  31 39 36 31
 8 tab 0, row 1, @0x1f5f
 9 tl: 26 fb: --H-FL-- lb: 0x0  cc: 3
10 col  0: [12]  4a 6f 6e 68 20 4b 65 6e 6e 65 64 79
11 col  1: [ 4]  31 39 36 31
12 col  2: [ 4]  31 39 36 33
13 tab 0, row 2, @0x1f44
14 tl: 27 fb: --HDFL-- lb: 0x1  cc: 3
15 col  0: [13]  52 69 63 68 61 72 64 20 4e 69 78 6f 6e
16 col  1: [ 4]  31 39 36 39
17 col  2: [ 4]  31 39 37 34
18 end_of_block_dump
19 .....省略.....
定位数据块
1 BBED> set dba 4,2218 offset 0
2         DBA             0x010008aa (16779434 4,2218)
3         OFFSET          0

查找被删除数据

 1 BBED> find /c Nixon
 2 BBED-00212: search string not found
 3 
 4 
 5 BBED> set dba 4,2219 offset 0
 6         DBA             0x010008ab (16779435 4,2219)
 7         OFFSET          0
 8 
 9 BBED> find /c Nixon
10 BBED-00212: search string not found
11 
12 
13 BBED> set dba 4,2220 offset 0
14         DBA             0x010008ac (16779436 4,2220)
15         OFFSET          0
16 
17 BBED> find /c Nixon
18 BBED-00212: search string not found
19 
20 
21 BBED> set dba 4,2221 offset 0
22         DBA             0x010008ad (16779437 4,2221)
23         OFFSET          0
24 
25 BBED> find /c Nixon
26 BBED-00212: search string not found
27 
28 
29 BBED> set dba 4,2222 offset 0
30         DBA             0x010008ae (16779438 4,2222)
31         OFFSET          0
32 
33 BBED> find /c Nixon
34 BBED-00212: search string not found
35 
36 
37 BBED> set dba 4,2223 offset 0
38         DBA             0x010008af (16779439 4,2223)
39         OFFSET          0
40 
41 BBED> find /c Nixon
42  File: /u01/app/oracle/oradata/oracle/users01.dbf (4)
43  Block: 2223             Offsets: 8116 to 8191           Dba:0x010008af
44 ------------------------------------------------------------------------
45  4e69786f 6e043139 36390431 3937342c 00030c4a 6f6e6820 4b656e6e 65647904
46  31393631 04313936 332c0003 11456973 6e687420 4569736e 65686f77 65720431
47  39353304 31393631 0206d148
48 
49  <32 bytes per line>

dump数据块内容

 1 BBED> d /v dba 4,2223 offset 8116
 2  File: /u01/app/oracle/oradata/oracle/users01.dbf (4)
 3  Block: 2223    Offsets: 8116 to 8191  Dba:0x010008af
 4 -------------------------------------------------------
 5  4e69786f 6e043139 36390431 3937342c l Nixon.1969.1974,
 6  00030c4a 6f6e6820 4b656e6e 65647904 l ...Jonh Kennedy.
 7  31393631 04313936 332c0003 11456973 l 1961.1963,...Eis
 8  6e687420 4569736e 65686f77 65720431 l nht Eisnehower.1
 9  39353304 31393631 0206d148          l 953.1961..ÑH
10 
11  <16 bytes per line>

根据下面内容可以得出:一个偏移量两个字节,而“4e69786f”是8个字节,所以一次想跳8个字节,offset一次偏移4

 1 BBED> d /v dba 4,2223 offset 8116
 2  File: /u01/app/oracle/oradata/oracle/users01.dbf (4)
 3  Block: 2223    Offsets: 8116 to 8191  Dba:0x010008af
 4 -------------------------------------------------------
 5  4e69786f 6e043139 36390431 3937342c l Nixon.1969.1974,
 6  00030c4a 6f6e6820 4b656e6e 65647904 l ...Jonh Kennedy.
 7  31393631 04313936 332c0003 11456973 l 1961.1963,...Eis
 8  6e687420 4569736e 65686f77 65720431 l nht Eisnehower.1
 9  39353304 31393631 0206d148          l 953.1961..ÑH
10 
11  <16 bytes per line>
12 
13 BBED> d /v dba 4,2223 offset 8115
14  File: /u01/app/oracle/oradata/oracle/users01.dbf (4)
15  Block: 2223    Offsets: 8115 to 8191  Dba:0x010008af
16 -------------------------------------------------------
17  204e6978 6f6e0431 39363904 31393734 l  Nixon.1969.1974
18  2c00030c 4a6f6e68 204b656e 6e656479 l ,...Jonh Kennedy
19  04313936 31043139 36332c00 03114569 l .1961.1963,...Ei
20  736e6874 20456973 6e65686f 77657204 l snht Eisnehower.
21  31393533 04313936 310206d1 48       l 1953.1961..ÑH
22 
23  <16 bytes per line>

找到块头

 1 BBED> d /v dba 4,2223 offset 8104
 2  File: /u01/app/oracle/oradata/oracle/users01.dbf (4)
 3  Block: 2223    Offsets: 8104 to 8191  Dba:0x010008af
 4 -------------------------------------------------------
 5  3c02030d 52696368 61726420 4e69786f l <...Richard Nixo
 6  6e043139 36390431 3937342c 00030c4a l n.1969.1974,...J
 7  6f6e6820 4b656e6e 65647904 31393631 l onh Kennedy.1961
 8  04313936 332c0003 11456973 6e687420 l .1963,...Eisnht
 9  4569736e 65686f77 65720431 39353304 l Eisnehower.1953.
10  31393631 0206d148                   l 1961..ÑH
11 
12  <16 bytes per line>

再次确认被删除数据位置

 1 BBED> p kdbr
 2 sb2 kdbr[0]                                 @118      8057
 3 sb2 kdbr[1]                                 @120      8031
 4 sb2 kdbr[2]                                 @122      8004
 5 
 6 BBED> p *kdbr[0]
 7 rowdata[53]
 8 -----------
 9 ub1 rowdata[53]                             @8157     0x2c
10 
11 BBED> p *kdbr[1]
12 rowdata[27]
13 -----------
14 ub1 rowdata[27]                             @8131     0x2c
15 
16 BBED>  p *kdbr[2]
17 rowdata[0]
18 ----------
19 ub1 rowdata[0]                              @8104     0x3c

恢复删除数据

 1 BBED> modify /x 2c offset 8104
 2 Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
 3  File: /u01/app/oracle/oradata/oracle/users01.dbf (4)
 4  Block: 2223             Offsets: 8104 to 8191           Dba:0x010008af
 5 ------------------------------------------------------------------------
 6  2c02030d 52696368 61726420 4e69786f 6e043139 36390431 3937342c 00030c4a
 7  6f6e6820 4b656e6e 65647904 31393631 04313936 332c0003 11456973 6e687420
 8  4569736e 65686f77 65720431 39353304 31393631 0206d148
 9 
10  <32 bytes per line>

生效恢复

1 BBED> sum dba 4,2223
2 Check value for File 4, Block 2223:
3 current = 0xcfd0, required = 0xcfc0
4 
5 BBED> sum dba 4,2223 apply
6 Check value for File 4, Block 2223:
7 current = 0xcfc0, required = 0xcfc0

再次dump数据块确认成功

 1 BBED> d /v dba 4,2223 offset 8104
 2  File: /u01/app/oracle/oradata/oracle/users01.dbf (4)
 3  Block: 2223    Offsets: 8104 to 8191  Dba:0x010008af
 4 -------------------------------------------------------
 5  2c02030d 52696368 61726420 4e69786f l ,...Richard Nixo
 6  6e043139 36390431 3937342c 00030c4a l n.1969.1974,...J
 7  6f6e6820 4b656e6e 65647904 31393631 l onh Kennedy.1961
 8  04313936 332c0003 11456973 6e687420 l .1963,...Eisnht
 9  4569736e 65686f77 65720431 39353304 l Eisnehower.1953.
10  31393631 0206d148                   l 1961..ÑH
11 
12  <16 bytes per line>
13 ---------------------

查询表,数据成功恢复

 1 SQL> alter system flush buffer_cache;
 2 
 3 System altered.
 4 
 5 SQL> conn scott/tiger
 6 Connected.
 7 SQL> select * from presidents;
 8 
 9 NAME                 START_YEAR END_YEAR
10 -------------------- ---------- ----------
11 Eisnht Eisnehower    1953       1961
12 Jonh Kennedy         1961       1963
13 Richard Nixon        1969       1974

Example#3-Uncorrupting a Block

转载于:https://www.cnblogs.com/david-zhang-index/archive/2012/09/08/2676699.html

相关文章:

  • 根据二叉树的后序遍历以及中序遍历还原二叉树
  • vim相关资源
  • Android多媒体学习十一:实现仿百度图片查看功能
  • 【译】学习vi编辑器——第一章vi编辑器
  • 学生电脑何时能“成为自己”?
  • ubuntu系统安全
  • 文檔翻譯:NSOperation Class Reference
  • linux文件系统的块大小查看
  • 即时通讯开发----回音消除技术
  • 乐视网进军智能电视,产业变局或引发行业效应
  • DLL文件的原理
  • amoeba
  • 线性表 - 数据结构和算法06
  • 操作VMware vCenter Converter 实现物理机迁移到虚拟机
  • XML笔记
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 2017 前端面试准备 - 收藏集 - 掘金
  • 2019年如何成为全栈工程师?
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • JavaScript学习总结——原型
  • Java-详解HashMap
  • JS基础之数据类型、对象、原型、原型链、继承
  • Nodejs和JavaWeb协助开发
  • SpiderData 2019年2月13日 DApp数据排行榜
  • vue-loader 源码解析系列之 selector
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 排序算法学习笔记
  • 前嗅ForeSpider中数据浏览界面介绍
  • 如何胜任知名企业的商业数据分析师?
  • 通过npm或yarn自动生成vue组件
  • 微信小程序开发问题汇总
  • 我的业余项目总结
  • 转载:[译] 内容加速黑科技趣谈
  • puppet连载22:define用法
  • 容器镜像
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • # centos7下FFmpeg环境部署记录
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #单片机(TB6600驱动42步进电机)
  • (26)4.7 字符函数和字符串函数
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (规划)24届春招和25届暑假实习路线准备规划
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)一些感悟
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .Net CoreRabbitMQ消息存储可靠机制
  • .NET DevOps 接入指南 | 1. GitLab 安装