Oracle BBED:数据块结构与损坏修复工具

5星 · 超过95%的资源 需积分: 9 65 下载量 100 浏览量 更新于2024-10-16 收藏 35KB TXT 举报
"Oracle BBED 是一个强大的工具,主要用于分析和修复Oracle数据库的数据块损坏问题。BBED(Block Binary Editor)是Oracle的上古神器,它允许管理员深入到数据库的内部结构,理解数据块的工作原理,并在必要时进行手动修复。通过BBED,可以模拟数据块损坏情况,这对于测试恢复策略和理解Oracle数据存储机制非常有帮助。在本文中,我们将探讨如何使用BBED来解析Oracle数据块结构、模拟坏块以及修复损坏的块。" BBED 是Oracle数据库管理员的利器,尤其是在处理与数据块相关的疑难杂症时。这个工具能够直接操作数据文件的二进制内容,提供了一种低级别的查看和修改数据块的方式。在Oracle数据库中,数据块包含了多个层次的信息,包括缓存层、事务层、数据头、表目录、行目录、空闲空间、行数据以及尾部检查等。 - **缓存层** (CacheLayer): 这个层包含了关于块在Oracle缓冲区高速缓存中的状态和历史信息。 - **事务层** (TransactionLayer): 事务层记录了对块所做的更改,包括事务ID和回滚信息。 - **数据头** (DataHeader): 数据头包含关于块的基本信息,如块类型、状态和版本。 - **表目录** (TableDirectory): 对于表数据块,这个部分存储了表的元数据,如表名和列信息。 - **行目录** (RowDirectory): 行目录指向块内的行数据,包括行的位置和大小。 - **空闲空间** (FreeSpace): 空闲空间记录了块中未被使用的区域。 - **行数据** (RowData): 这是实际的用户数据,如行的字段值。 - **尾部检查** (Tailchk): 尾部检查用于验证块的完整性和一致性。 要使用BBED,首先需要知道要操作的数据文件和块号。可以通过`bbed map`命令来查看文件和块的详细信息,例如:`BBED map /u01/oracle/oradata/dbmon/system.dbf(1) 31729`。这将显示指定文件和块的结构。 在BBED中,可以使用各种命令来查看和修改特定的数据结构,如`pkcbh`命令用来显示块的头部信息(KCBH),`prowd`用来显示行目录,`pfreespace`用来查看空闲空间等。对于修复损坏的块,可能需要根据具体错误情况,如坏的链接、丢失的行或不一致的元数据,针对性地修改这些结构。 模拟坏块是BBED的另一个重要用途,它可以帮助测试恢复策略和数据库的容错能力。通过人为制造错误,如篡改数据头或行目录,然后观察数据库如何响应,可以增强管理员对数据库行为的理解。 总结来说,Oracle BBED是一个强大且危险的工具,它提供了一种深入到数据库内部进行故障排查和修复的能力。在使用时,务必谨慎操作,因为任何错误的修改都可能导致数据丢失。因此,理解BBED的工作原理,以及在何时何地使用它是每个高级Oracle DBA必备的技能。
2018-04-11 上传
提供10g,11g linux及windows BBED工具 及详细编译说明readme文件。 一. 10g linux编译BBED [oracle@node3 ~]$ cd $ORACLE_HOME/rdbms/lib [oracle@node3 lib]$ make -f ins_rdbms.mk BBED=$ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbed 直接生成到bin下为可执行文件 编译完成后: 编译成功后登陆BBED,登陆时需要密码(BBED的默认密码是blockedit) [oracle@node3 bin]$ bbed Password: BBED: Release 2.0.0.0.0 - Limited Production on Wed Apr 11 10:01:07 2018 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. ************* !!! For Oracle Internal Use only !!! *************** BBED> 二. 11g linux编译BBED oracle 11gR2环境中编译BBED可执行文件所需要的ssbbded.o和sbbdpt.o对象文件被移除,不过可以从oracle 10g环境中将这两个文件拷贝到oracle11g环境进行编译。 除了将上面的ssbbded.o和sbbdpt.o 文件拷贝到11g环境外,BBED还需要用到 $ORACLE_HOME/rdbms/mesg目录下的bbedus.msb这个信息文件, 这几个文件都需要从oracle10g中拷贝到oracle11g中对于的目录中。 文件夹linux_10g_bbed_64 包括了这3个文件。 下面是将以上3个文件从Oracle 10g中拷贝到11g对于目录后编译的过程。 1)把linux_10g_bbed_64目录下的10g的ssbbded.o和sbbdpt.o 放到 $ORACLE_HOME/rdbms/lib 目录下 2)把linux_10g_bbed_64目录下的10g的 bbedus.msb 文件拷贝到 $ORACLE_HOME/rdbms/mesg目录下 3)编译 [oracle@node1 ~] cd $ORACLE_HOME/rdbms/lib [oracle@node1 ~] make -f ins_rdbms.mk BBED=$ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbed [oracle@node3 bin]$ bbed Password: BBED: Release 2.0.0.0.0 - Limited Production on Wed Apr 11 10:01:07 2018 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. ************* !!! For Oracle Internal Use only !!! *************** BBED> 三、windows 11GR2 bbed oracle9i版本以后Oracle不装载BBED了, Windows上也没有makefile来编译bbed。 所以,如果你想在Windows上使用bbed,你需要很多文件(本下载压缩包已经全包含了): 你需要一个bbed.exe. 你只能从Oracle 9i的安装中得到它。 你需要有一堆的DLL。所有这些DLL在Oracle9i安装中可以得到。 使用BBED需要消息文件。这文件是“bbedus.msb”,位于Oracle9i安装的MESG目录下。而你需要将其复制到ORACLE_HOME的RDBMS\MESG目录下。 这些在目录本压缩包的 bbed_win 中已经全部提供了。 把它们放在BBED安装的目录下(比如D:\bbed_win),环境变量ORACLE_HOME设置好。确保消息文件在$ORACLE_HOME\RDBMS\MESG下,最后启动BBED: D:\bbed_win>bbed Password: BBED: Release 2.0.0.0.0 - Limited Production on Wed Apr 11 10:20:43 2018 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. ************* !!! For Oracle Internal Use only !!! *************** BBED>