ORACLE DB巡检报告工具说明

时间:2024.5.8

ORACLE DB巡检报告工具说明

本产品为资深ORACLE DBA 多年实践维护工作经验悉心总结所得,自成体系,并已在现网系统得到成功应用,成效明显,可以大幅提高DBA的工作效率。

一、 适用范围

条件一: 你必须是一个具有初级水平以上的ORACLE DBA,并且具备linux sh基础知识。

条件二: 你正管理着一套或者多套ORACLE数据库,并且事倍功半,疲于奔命。

条件三: 你期望自己的工作效率大幅提高,获得公司的肯定的同时得到更多的学习时间和发展空间。

二、 产品特点

1. 结构轻量

只需要拥有1台linux环境主机,通过简单操作即可完成部署,并且对现网数据库系统不会造成任何影响。

2. 集中展现

通过一个输出文件即可掌握每天数据库的所有关键指标(如alert错误信息,磁盘空间告警,对象增长情况,top sql性能指标)信息,同时支持按业务类型数据库分类输出。

(详见第三部分:使用示例介绍)

3. 扩展灵活

可以进行简单的脚本修改增加或减少需要获取报告的指标信息。

注意: 本脚本使用的前置条件是需要已部署 《ORACLE DB巡检工具集》及《ORACLE DB指标采集工具》,不能单独使用。

三、 使用示例

1. 汇总数据列表

2. 输出展示

ORACLEDB巡检报告工具说明

ORACLEDB巡检报告工具说明

ORACLEDB巡检报告工具说明

ORACLEDB巡检报告工具说明

ORACLEDB巡检报告工具说明

ORACLEDB巡检报告工具说明

3. 产品说明列表

联系QQ:

ORACLEDB巡检报告工具说明

ORACLEDB巡检报告工具说明

ORACLEDB巡检报告工具说明

3332008


第二篇:Oracle-BBED-工具-说明


Oracle BBED 工具 说明Oracle BBED 工具 说明一. BBED介绍 有关BBED 详细使用说明的pdf文档,也是从网上下载的:/source/1902555Thename bbed is an acronym for Block Browser and EDitor and it is shipped with thedatabase. It is intended for Oracle internal use only and the company neverpublishes any details about it. It is a very powerful tool but also extremelydangerous since it can change and/or corrupt data blocks of any Oracledatabase. Ifyou use this tool, you do so at your own risk. Any modifications made with thistool render the database unsupported by Oracle. BBED(OracleBlockBrowerandEDitor Tool),用来直接查看和修改数据文件数据的一个工具,是Oracle一款内部工具,可以直接修改Oracle数据文件块的内容,在一些极端恢复场景下比较有用。该工具不受Oracle支持,所以默认是没有生成可执行文件的,在使用前需要重新连接。二. BBED 的安装和使用2.1 BBED 安装 Oracle8i 的BBED在windows 平台下的$ORACLE_HOME/bin下可以找到,9i中似乎未随软件发布,故在windows没有这个工具,在linux上面有,需要编译。在9i/10g中连接生成bbed:cd$ORACLE_HOME/rdbms/libmake-f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed示例:[oracle@db2 ~]$ cd $ORACLE_HOME/rdbms/lib[oracle@db2 lib]$ make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbedLinking BBED utility (bbed)rm -f /u01/app/oracle/product/10.2.0/db_1/rdbms/lib/bbedgcc -o/u01/app/oracle/product/10.2.0/db_1/rdbms/lib/bbed-L/u01/app/oracle/product/10.2.0/db_1/rdbms/lib/-L/u01/app/oracle/product/10.2.0/db_1/lib/-L/u01/app/oracle/product/10.2.0/db_1/lib/stubs/ -L/usr/lib -lirc /u01/app/oracle/product/10.2.0/db_1/lib/s0main.o/u01/app/oracle/product/10.2.0/db_1/rdbms/lib/ssbbded.o/u01/app/oracle/product/10.2.0/db_1/rdbms/lib/sbbdpt.o `cat/u01/app/oracle/product/10.2.0/db_1/lib/ldflags` -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10 -ln10-lnnz10 -lnl10 /u01/app/oracle/product/10.2.0/db_1/rdbms/lib/defopt.o-ldbtools10 -lclntsh `cat/u01/app/oracle/product/10.2.0/db_1/lib/ldflags` -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10-ln10 -lnnz10 -lnl10 -lnro10 `cat /u01/app/oracle/product/10.2.0/db_1/lib/ldflags` -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10-ln10 -lnnz10 -lnl10 -lclient10 -lnnetd10-lvsn10 -lcommon10 -lgeneric10 -lmm -lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lcore10 -lsnls10-lnls10 -lxml10 -lcore10 -lunls10 -lsnls10 -lnls10 -lcore10 -lnls10 `cat/u01/app/oracle/product/10.2.0/db_1/lib/ldflags` -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10-ln10 -lnnz10 -lnl10 -lnro10 `cat/u01/app/oracle/product/10.2.0/db_1/lib/ldflags` -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10-ln10 -lnnz10 -lnl10 -lclient10 -lnnetd10-lvsn10 -lcommon10 -lgeneric10-lsnls10 -lnls10 -lcore10-lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lxml10 -lcore10 -lunls10 -lsnls10-lnls10 -lcore10 -lnls10 -lclient10 -lnnetd10-lvsn10 -lcommon10 -lgeneric10 -lsnls10 -lnls10

-lcore10 -lsnls10 -lnls10 -lcore10 -lsnls10-lnls10 -lxml10 -lcore10 -lunls10 -lsnls10 -lnls10 -lcore10 -lnls10 `cat/u01/app/oracle/product/10.2.0/db_1/lib/sysliblist`-Wl,-rpath,/u01/app/oracle/product/10.2.0/db_1/lib -lm `cat /u01/app/oracle/product/10.2.0/db_1/lib/sysliblist`-ldl -lm-L/u01/app/oracle/product/10.2.0/db_1/lib[oracle@db2 lib]$以上生成的bbed可执行文件在$ORACLE_HOME/rdbms/lib目录,可以复制到其他位置或者其他同Oracle版本的机器上运行。也可通过以下命令将bbed生成到$ORACLE_HOME/bin目录[oracle@db2 lib]$ make -f ins_rdbms.mk BBED=$ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbedLinking BBED utility (bbed)rm -f /u01/app/oracle/product/10.2.0/db_1/bin/bbedgcc -o/u01/app/oracle/product/10.2.0/db_1/bin/bbed-L/u01/app/oracle/product/10.2.0/db_1/rdbms/lib/-L/u01/app/oracle/product/10.2.0/db_1/lib/-L/u01/app/oracle/product/10.2.0/db_1/lib/stubs/ -L/usr/lib -lirc /u01/app/oracle/product/10.2.0/db_1/lib/s0main.o/u01/app/oracle/product/10.2.0/db_1/rdbms/lib/ssbbded.o/u01/app/oracle/product/10.2.0/db_1/rdbms/lib/sbbdpt.o `cat/u01/app/oracle/product/10.2.0/db_1/lib/ldflags` -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10-ln10 -lnnz10 -lnl10 /u01/app/oracle/product/10.2.0/db_1/rdbms/lib/defopt.o-ldbtools10 -lclntsh `cat/u01/app/oracle/product/10.2.0/db_1/lib/ldflags` -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10-ln10 -lnnz10 -lnl10 -lnro10 `cat/u01/app/oracle/product/10.2.0/db_1/lib/ldflags` -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10-ln10 -lnnz10 -lnl10 -lclient10 -lnnetd10-lvsn10 -lcommon10 -lgeneric10 -lmm -lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10-lxml10 -lcore10 -lunls10 -lsnls10 -lnls10 -lcore10 -lnls10 `cat /u01/app/oracle/product/10.2.0/db_1/lib/ldflags` -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10-ln10 -lnnz10 -lnl10 -lnro10 `cat/u01/app/oracle/product/10.2.0/db_1/lib/ldflags` -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10-ln10 -lnnz10 -lnl10 -lclient10 -lnnetd10-lvsn10 -lcommon10 -lgeneric10-lsnls10 -lnls10 -lcore10-lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lxml10 -lcore10 -lunls10 -lsnls10-lnls10 -lcore10 -lnls10 -lclient10 -lnnetd10-lvsn10 -lcommon10 -lgeneric10 -lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lcore10 -lsnls10-lnls10 -lxml10 -lcore10 -lunls10 -lsnls10 -lnls10 -lcore10 -lnls10 `cat/u01/app/oracle/product/10.2.0/db_1/lib/sysliblist`-Wl,-rpath,/u01/app/oracle/product/10.2.0/db_1/lib -lm `cat/u01/app/oracle/product/10.2.0/db_1/lib/sysliblist` -ldl -lm -L/u01/app/oracle/product/10.2.0/db_1/lib[oracle@db2 lib]$ ls -lrt bbed-rwxr-xr-x 1 oracle oinstall 536161 Aug 1118:30 bbed[oracle@db2 lib]$ cd $ORACLE_HOME/bin[oracle@db2 bin]$ ls -lrt bbed-rwxr-xr-x 1 oracle oinstall 536161 Aug 11 18:33bbedOracleDatabase 11g中缺省的未提供BBED库文件,但是可以用10g的文件编译出来,需要先从10g中复制如下文件到相应目录,然后再执行上述连接命令,参考如下步骤:(1)复制Oracle 10g文件Copy $ORA10g_HOME/rdbms/lib/ssbbded.o t

o$ORA11g_HOME/rdbms/libCopy $ORA10g_HOME/rdbms/lib/sbbdpt.o to $ORA11g_HOME/rdbms/libCopy $ORA10g_HOME/rdbms/mesg/bbedus.msb to $ORA11g_HOME/rdbms/mesgCopy $ORA10g_HOME/rdbms/mesg/bbedus.msg to $ORA11g_HOME/rdbms/mesgCopy $ORA10g_HOME/rdbms/mesg/bbedar.msb to $ORA11g_HOME/rdbms/mesg(2)编译make -f $ORA11g_HOME/rdbms/lib/ins_rdbms.mkBBED=$ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbed2.2 使用BBED BBED是Oracle 内部使用的命令,所以Oracle 不提供技术支持。 为了安全,BBED设置了口令保护,默认密码为blockedit。[oracle@db2 bin]$ bbed Password: BBED-00113: Invalid password. Please rerunutility with the correct password.[oracle@db2 bin]$ bbed Password: BBED: Release 2.0.0.0.0 - LimitedProduction on Thu Aug 11 18:51:47 2011Copyright (c) 1982, 2005, Oracle. All rights reserved.************* !!! For Oracle Internal Useonly !!! ***************BBED>一般使用bbed,都是将一些配置信息写入到一个参数文本里,在调用bbed时,指定该参数文件。如:$bbedparfile=bbed.par相关的参数可以通过help 查看:[oracle@db2 admin]$ bbed help=yPASSWORD - Required parameterFILENAME - Database file nameBLOCKSIZE - Database block sizeLISTFILE - List file nameMODE - [browse/edit]SPOOL - Spool to logfile [no/yes]CMDFILE - BBED command file nameLOGFILE - BBED log file namePARFILE - Parameter file nameBIFILE - BBED before-image file nameREVERT - Rollback changes from BIFILE[no/yes]SILENT - Hide banner [no/yes]HELP - Show all valid parameters [no/yes]这里我们先演示一个示例。(1)先获取datafile 的信息将datafile 的信息写入一个文件,格式为:文件编号 文件名字 文件大小。可以通过如下SQL 获取:SYS@dave2(db2)> select file#||' '||name||' '||bytes from v$datafile ;FILE#||''||NAME||''||BYTES--------------------------------------------------------------------------------1/u01/app/oracle/oradata/dave2/system01.dbf 176xxxxxxxx/u01/app/oracle/oradata/dave2/undotbs01.dbf 9279897603/u01/app/oracle/oradata/dave2/sysaux01.dbf 3984588804 /u01/app/oracle/oradata/dave2/users01.dbf52428805 /u01/app/oracle/oradata/dave2/example01.dbf1048576006 /u01/app/oracle/oradata/dave2/dave01.dbf104857607/u01/app/oracle/oradata/dave2/undotbs02.dbf 10485768/u01/app/oracle/oradata/dave2/huaining01.dbf 524288008 rows selected.注意,这里的file id。 我们这里的file id 和 oracle 系统内部的file id 相同。 当然这个id 我们也可以自己指定。 当我们在bbed 里设置file id 时,就是根据这个参数文件中的的设置来的。 最好设置为相同,不然以后可能会混淆。将上面查询出来的datafile信息保存到文本里。 [oracle@db2 ~]$ cat /u01/filelist.txt1/u01/app/oracle/oradata/dave2/system01.dbf 176xxxxxxxx/u01/app/oracle/oradata/dave2/undotbs01.dbf 9279897603/u01/app/oracle/oradata/dave2/sysaux01

.dbf 3984588804 /u01/app/oracle/oradata/dave2/users01.dbf52428805/u01/app/oracle/oradata/dave2/example01.dbf 1048576006 /u01/app/oracle/oradata/dave2/dave01.dbf104857607/u01/app/oracle/oradata/dave2/undotbs02.dbf 10485768/u01/app/oracle/oradata/dave2/huaining01.dbf 52428800(2) 创建parameter file:[oracle@db2 ~]$ cat /u01/bbed.parblocksize=8192 listfile=/u01/filelist.txt mode=edit(3)使用parameter file 连接bbed:[oracle@db2 ~]$ bbed parfile=/u01/bbed.parPassword: BBED: Release 2.0.0.0.0 - LimitedProduction on Thu Aug 11 20:47:49 2011Copyright (c) 1982, 2005, Oracle. All rights reserved.************* !!! For Oracle Internal Useonly !!! ***************BBED> showFILE# 1BLOCK# 1OFFSET 0DBA 0x00400001(4194305 1,1)FILENAME/u01/app/oracle/oradata/dave2/system01.dbfBIFILE bifile.bbdLISTFILE /u01/filelist.txtBLOCKSIZE 8192MODE EditEDIT UnrecoverableIBASE DecOBASE DecWIDTH 80COUNT 512LOGFILE log.bbdSPOOL No三. BBED命令说明先看帮助的说明:BBED> help allSET DBA [ dba | file#, block# ]SET FILENAME 'filename'SET FILE file#SET BLOCK [+/-]block#SET OFFSET [ [+/-]byte offset | symbol |*symbol ]SET BLOCKSIZE bytesSET LIST[FILE] 'filename'SET WIDTH character_countSET COUNT bytes_to_displaySET IBASE [ HEX | OCT | DEC ]SET OBASE [ HEX | OCT | DEC ]SET MODE[ BROWSE | EDIT ]SET SPOOL [ Y | N ]SHOW [ <SET parameter> | ALL ]INFOMAP[/v] [ DBA | FILENAME | FILE | BLOCK ]DUMP[/v] [ DBA | FILENAME | FILE | BLOCK |OFFSET | COUNT ]PRINT[/x|d|u|o|c] [ DBA | FILE | FILENAME |BLOCK | OFFSET | symbol | *symbol ]EXAMINE[/Nuf] [ DBA | FILE | FILENAME |BLOCK | OFFSET | symbol | *symbol ]</Nuf>:N - a number which specifies a repeatcount.u - a letter which specifies a unit size:b -b1, ub1 (byte)h -b2, ub2 (half-word)w -b4, ub4(word)r -Oracle table/index rowf - a letter which specifies a displayformat:x -hexadecimald -decimalu -unsigned decimalo -octalc -character (native)n -Oracle numbert -Oracle datei -Oracle rowidFIND[/x|d|u|o|c] numeric/character string [TOP | CURR ]COPY [ DBA | FILE | FILENAME | BLOCK ] TO [DBA | FILE | FILENAME | BLOCK ]MODIFY[/x|d|u|o|c] numeric/character string[ DBA | FILE | FILENAME | BLOCK | OFFSET | symbol | *symbol ]ASSIGN[/x|d|u|o] <targetspec>=<source spec><target spec> : [ DBA | FILE |FILENAME | BLOCK | OFFSET | symbol | *symbol ]<source spec> : [ value | <targetspec options> ]SUM [ DBA | FILE | FILENAME | BLOCK ] [APPLY ]PUSH [ DBA | FILE | FILENAME | BLOCK |OFFSET ]POP [ALL]REVERT [ DBA | FILE | FILENAME | BLOCK ]UNDOHELP [ <bbed command> | ALL ]VERIFY [ DBA | FILE | FILENAME | BLOCK ]CORRUPT [ DBA | FILE | FILENAME | BLOCK ]下面是几个常用的:set设定当前的环境show查看当前的环境参数,跟sqlplus的同名命令类似。dump列出指定block的内容

find在指定的block中查找指定的字符串,结果是显示出字符串,及其偏移量--offset,偏移量就是在block中的字节数modify修改指定block的指定偏移量的值,可以在线修改。copy把一个block的内容copy到另一个block中verify检查当前环境是否有坏块sum计算block的checksum,modify之后block就被标识为坏块,current checksum与reqired checksum不一致,sum命令可以计算出新的checksum并应用到当前块。undo回滚当前的修改操作,如果手误做错了,undo一下就ok了,回到原来的状态。revert回滚所有之前的修改操作,意思就是undo all3.1 SET 命令3.1.1 set dba Setsthe current data block using the standard Oracle DBA (Data Block Address)format. This is entered as file_id, block.关于DBA 说明,参考:Oracle rdba和 dba 说明/tianlesoftware/article/details/6529346SQL> select2 rowid,3 dbms_rowid.rowid_relative_fno(rowid)rel_fno,dbms_rowid.rowid_block_number(rowid)blockno,dbms_rowid.rowid_row_number(rowid) rownofrom t1 where object_id=100; ROWID REL_FNO BLOCKNOROWNO------------------ ---------- --------------------AAAMxZAABAAAO3SAAA 160882 0AAAMxZAABAAAO3TAAH 160883 7设置file 1,block 60882BBED> set dba 1,60882DBA 0x0040edd2(4255186 1,60882)如果设置成功,会返回该block的RDBA (Relative Data Block Address),rdba就是rowid中的rfile#+block#。括号里面的是DBA值和block 和 file id。 我们验证一下:SYS@dave2(db2)> variable dbavarchar2(30);SYS@dave2(db2)> exec :dba :=dbms_utility.make_data_block_address(1,60882);PL/SQL procedure successfully completed.SYS@dave2(db2)> print dbaDBA----------------------------------------------------------42551863.1.2 set filename Setsthe current file to the one specified. It must be a valid Oracle data file andit must be enclosed in single quotes. If the file is not in the current path itmust also be fully qualified. If successful, bbed will respond showing the filenow being accessed. BBED>set filename '/u01/app/oracle/oradata/dave2/users01.dbf'FILENAME/u01/app/oracle/oradata/dave2/users01.dbf--必须是一个有效的datafile,并且用单引号括起来3.1.3 set file Setsthe current file to the number specified. The number specified must be one ofthe file ids supplied in the filelist referenced at startup. If successful,bbed will respond showing the file id now being accessed. BBED> set file 4 FILE# 4--注意这里的number,是我们之前配置的filelist里的number。它可以和我们db 里的file id 不一样。 不过最好是配置一样的。3.1.4 set block Setsthe current block. The block is relative to the filename or file already set.The absolute block can be specified, or an offset to the current block can bespecified using the plus (+) or (-) symbols. If successful, bbed will respondshowing the current block

. --注意这里的block 是一个相对的位置,我们需要先指定一个file,然后在指定block。 即对应file里的block。可以对当前block的位置进行+和-操作。BBED> set file 4 FILE# 4BBED> set block 60882 BBED-00309: out of range block number(60882)BBED> set file 1FILE# 1BBED> set block 60882 BLOCK# 60882BBED> set bock +10BBED-00202: invalid parameter (bock)BBED> set block +10BLOCK# 60892BBED> set block -10BLOCK# 608823.1.5 set offset Setsthe current offset. The offset is relative to the block already set. Theabsolute offset can be specified, or an offset to the current offset can bespecified using the plus (+) or minus (-) symbols. If successful, bbed willrespond showing the current offset. --偏移量是相对某个block里的偏移量,可以用+和-进行操作BBED> set offset 20OFFSET 20BBED> set offset +2OFFSET 22BBED> set offset -2OFFSET 203.1.6 set blocksize Setsthe blocksize of the current file. The blocksize must match the file selectedor an error will be reported. If successful, bbed will respond showing thecurrent blocksize. 设置当前datafile 的blocksize 大小,该大小必须和datafile 的实际block 匹配,否则会报错。BBED> set blocksize 8192 BLOCKSIZE 81923.1.7 set listfile Setsthe listfile to the specified file. This option can be used if the listfile wasnot specified on the command line. The listfile must be enclosed in singlequotes. If successful, bbed will respond showing the current listfile. --在前面讲过,可以通过parameter file 来指定bbed的属性,当然也可以通过set 来指定这些信息。对于listfile的文件,必须用单引号括起来。BBED> set listfile '/u01/filelist.txt'LISTFILE /u01/filelist.txt3.1.8 set width Setsthe current screen width. If not specified bbed will assume an 80-characterdisplay. 设定当前屏幕的宽度,默认是80.BBED> set width 200WIDTH 2003.1.9 set count Setsthe number of bytes of the data block to display from the dump command. Thedefault is 512. Tosee an entire 8Kb block therefore you would need to dump the block eight timesat offsets 0, 512, 1024, 1536, 2048, 2560, 3092 and 3604. Bysetting the count higher bbed will dump more of the block each time. Byreducing it a smaller dump can be achieved. 设置dump 命令显示bytes的数量。默认是512 bytes。BBED> set count 512COUNT 5123.1.10 set ibase Setsthe internal number base. The default is decimal. However it can also be set tohexadecimal or octal. This allows the set file, set block and set offsetcommands to use an alternate base to decimal. If successful, bbed will respondshowing the current base: --设置内部的数字格式,默认是十进制。 也可以设置为十六进制或者八进制。设置完数字格式之后,可是使用该格式来设置blcok,offset等。BBED> set i

base hexIBASE HexBBED> set block +DBLOCK# 14BBED> set ibase decimalIBASE Dec3.1.11 set obase Thepurpose of this command is unknown. 3.1.12 set mode Setsthe bbed mode. The options are browse or edit. In browse mode no changes can bemade. This is the suggested mode for first-time users, or if you are intendingto use the tool only to inspect data blocks. --设置bbed 的模式,该默认有2种:browse 和 edit。 browse 模式不允许进行修改。 如果要修改,就选择edit模式。 这个在我们的之前的配置文件里,我们选择了edit。BBED> set mode browseMODE BrowseBBED> set mode editMODE Edit3.1.13 set spool Thiscommand appears to not be implemented. 3.2 show 命令 显示当前的配置选项。BBED> showFILE# 1BLOCK# 14OFFSET 0DBA 0x0040000e(4194318 1,14)--注意这里的block 变成了14. 是我们刚才设置的。FILENAME/u01/app/oracle/oradata/dave2/system01.dbfBIFILE bifile.bbdLISTFILE /u01/filelist.txtBLOCKSIZE 8192MODE EditEDIT UnrecoverableIBASE DecOBASE DecWIDTH 200COUNT 512LOGFILE log.bbdSPOOL No3.3 info 显示当前可以进行browse 或者edit 的file。即我们filelist 里指定的datafile信息。BBED> infoFile#NameSize(blks)-------------------1 /u01/app/oracle/oradata/dave2/system01.dbf 2150402/u01/app/oracle/oradata/dave2/undotbs01.dbf 1132803/u01/app/oracle/oradata/dave2/sysaux01.dbf 486404/u01/app/oracle/oradata/dave2/users01.dbf 6405/u01/app/oracle/oradata/dave2/example01.dbf 128006/u01/app/oracle/oradata/dave2/dave01.dbf 12807/u01/app/oracle/oradata/dave2/undotbs02.dbf 1288/u01/app/oracle/oradata/dave2/huaining01.dbf 6400--一行不能完整显示,设置一下width 参数,就ok了BBED> set width 65WIDTH 65BBED> infoFile#NameSize(blks)-------------------1/u01/app/oracle/oradata/dave2/system01.dbf 2150402/u01/app/oracle/oradata/dave2/undotbs01.dbf 1132803/u01/app/oracle/oradata/dave2/sysaux01.dbf 486404 /u01/app/oracle/oradata/dave2/users01.dbf 6405/u01/app/oracle/oradata/dave2/example01.dbf 128006/u01/app/oracle/oradata/dave2/dave01.dbf 12807/u01/app/oracle/oradata/dave2/undotbs02.dbf 1288 /u01/app/oracle/oradata/dave2/huaining01.db 64003.4 Map Themap command shows a map of the current block. It can be combined with the /voption to produce a more verbose output. The map shows the offsets throughoutthe block where certain information can be found such as the block header, thedata block header or the row directory. Ifthe set commands have not been used to set a current block, or it the user simplywishes to examine another block while keeping the current block their focus,the file name, file id, block or DBA can be specified with the command. Map会通过偏移量来显示block里的详细信息,如block header,data block header 和row directory。 使用/v 选项,可以查看更详细的信息。在不指定

block的情况下,会显示当前block的信息,如果想显示其他block的信息,可以使用file name,file id,block 和DBA 来指定要显示的block。BBED> map File:/u01/app/oracle/oradata/dave2/system01.dbf (1)Block: 60882 Dba:0x0040edd2------------------------------------------------------------KTBData Block (Table/Cluster)struct kcbh, 20 bytes @0 struct ktbbh, 72 bytes @20 struct kdbh, 14 bytes @92 struct kdbt[2], 8 bytes @106sb2kdbr[4]@114 ub1freespace[7974]@122 ub1rowdata[92]@8096 ub4tailchk@8188 --这个是默认情况,@后面代表的对应的信息在block里的偏移量,即offset。--通过dba 来指定某个blockBBED> map /v dba 1,60882File:/u01/app/oracle/oradata/dave2/system01.dbf (1)Block: 60882 Dba:0x0040edd2------------------------------------------------------------KTBData Block (Table/Cluster)struct kcbh, 20 bytes @0 ub1 type_kcbh@0 ub1 frmt_kcbh@1 ub1 spare1_kcbh@2 ub1 spare2_kcbh@3 ub4 rdba_kcbh@4 ub4 bas_kcbh@8 ub2 wrp_kcbh@12 ub1 seq_kcbh@14 ub1 flg_kcbh@15 ub2 chkval_kcbh@16 ub2 spare3_kcbh@18 struct ktbbh, 72 bytes @20 ub1 ktbbhtyp @20 union ktbbhsid, 4 bytes@24 struct ktbbhcsc, 8 bytes@28 b2 ktbbhict@36 ub1 ktbbhflg@38 ub1 ktbbhfsl@39 ub4 ktbbhfnx@40 struct ktbbhitl[2], 48 bytes@44 struct kdbh, 14 bytes @92 ub1 kdbhflag@92 b1 kdbhntab@93 b2 kdbhnrow@94 sb2 kdbhfrre@96 sb2 kdbhfsbo@98 sb2 kdbhfseo @100b2 kdbhavsp@102 b2 kdbhtosp@104 struct kdbt[2], 8 bytes @106 b2 kdbtoffs@106 b2 kdbtnrow @108 sb2kdbr[4]@114 ub1freespace[7974]@122 ub1rowdata[92]@8096 ub4tailchk@8188 --通过block 来mapBBED> map block 60888File:/u01/app/oracle/oradata/dave2/system01.dbf (1)Block: 60888 Dba:0x0040edd8------------------------------------------------------------KTBData Block (Table/Cluster)struct kcbh, 20 bytes @0 struct ktbbh, 72 bytes @20 struct kdbh, 14 bytes @92 struct kdbt[2], 8 bytes @106 sb2kdbr[4]@114 ub1freespace[7936]@122 ub1rowdata[130]@8058 ub4tailchk@8188 Map 显示的具体信息解释如下:struct kcbh, 20 bytes Block Header Structure ub1 type_kcbh Block type (see Header Block Types below) ub1 frmt_kcbh Block format 1=Oracle 7, 2=Oracle 8+ ub1 spare1_kcbh Not used ub1 spare2_kcbh Not used ub4 rdba_kcbh RDBA -Relative Data Block Address ub4 bas_kcbh SCN Base ub2 wrp_kcbh SCN Wrap ub1 seq_kcbh Sequence number, incremented for every change made to the block at the same SCN ub1 flg_kcbh Flag: 0x01 New Block 0x02 Delayed Logging Change advanced SCN/seq 0x04 Check value saved - block XOR‘s to zero 0x08 Temporary block ub2 chkval_kcbh Optional block checksum (if DB_BLOCK_CHECKSUM=TRUE) ub2 spare3_kcbh Not used struct ktbbh, 72 bytes Transaction Fixed Header Structure

ub1 ktbbhtyp Block type (1=DATA, 2=INDEX) union ktbbhsid, 4 bytes Segment/Object ID struct ktbbhcsc, 8 bytes SCN at last block cleanout b2 ktbbhict Number of ITL slots ub1 ktbbhflg 0=on the freelist ub1 ktbbhfsl ITL TX freelist slot ub4 ktbbhfnx DBA of next block on the freelist struct ktbbhitl[2], 48 bytes ITL list index struct kdbh, 14 bytes Data Header Structure ub1 kdbhflag N=pctfree hit(clusters); F=do not put on freelist; K=flushable cluster keys b1 kdbhntab Number of tables (>1 in clusters) b2 kdbhnrow Number of rows sb2 kdbhfrre First free row entry index; -1 = you have to add one sb2 kdbhfsbo Freespace begin offset sb2 kdbhfseo Freespace end offset b2 kdbhavsp Available space in the block b2 kdbhtosp Total available space when all TXs commit struct kdbt[1], 4 bytes Table Directory Entry Structure b2 kdbtoffs b2 kdbtnrow sb2 kdbr[1] Row Directory ub1 freespace[8030] Free Space ub1 rowdata[38] Row Data ub4 tailchk (See Tailchecks below) Differentblock types are designated by the first byte of the block. The following tableshows how to decode the block type: 不同的block 可以第一个byte的值是不一样的。 具体值对应block 类型如下。 Header Block Types ID Type 01 Undo segment header 02 Undo data block 03 Save undo header 04 Save undo data block 05 Data segment header (temp, index, data and so on) 06 KTB managed data block (with ITL) 07 Temp table data block (no ITL) 08 Sort Key 09 Sort Run 10 Segment free list block 11 Data file header 可以通过dump block来查看对应的具体的值。 下文讲dump时会有相关的示例。oracleblocks 的最后4个bytes 是tail check。 下面看一下oracle 9i block的tail check 组成。Tailchecks Thetail of an Oracle 8+ block is a concatenation of the lower order two bytes ofthe SCN base, the block type and the SCN sequence number. Oracleblock tail 由4个bytes组成,但实际上只用了低2个bytes来存放。 2个bytes的tail 由scn base,block type 和 scn sequence 组成。E.g, if the SCN base number is 0x00029728,the block type is 06 and the SCN sequence number is 0x02, the tail check wouldbe 0x97280602: SCN base Type SCN seq9728 06 02 Althoughthis tail check value is generated from three components, Oracle treats thefinal value as a single unsigned integer stored as a word (4-bytes). Onlittle-endian architecture machines, which include Intel, the value will bestores as low-order byte first. 虽然tail check 由3个部分组成,但是oracle 把这3部分作为一个整体来存储,并且占用4个bytes。 对于little

-endian(低端)架构的机器,包括Intel, 他们会先存放low-order byte,即低位字节。Thereforeif the tail check is examined in the block using a standard block editor, orthe dump command which will be explained in the next section, the byte ordermay look different. A tail check of 0x97280602 stored on an Intel machine wouldbe written to disk as "02062897". 可以通过标准block editor 或者dump 来查看tail check。 对于不同的机器,他们存储的顺序是不一样的。比如tail check 0x97280602 在Intel Machine 就被存储为02062897,因为它会先保存low-order bytes。3.5 dump(d) Thedump command dumps the content of the block to the screen. It can be combinedwith the /v option to produce a more verbose output. TheDBA, Filename, File, Block and/or Offset to dump can be specified with thecommand. If these are not specified the current file, block and offsetas established with the set command will be dumped. The size of the dump islimited by the set count option and defaults to 512 bytes or alternatively thesize of the dump can be specified with the command. dump命令可以讲block 的内从显示到屏幕。 每次显示的bytes由count 控制,默认是512 bytes。 使用 /v 选项,可以显示更多详细信息。示例:BBED> dump /vdba 1,60884 offset 0 count 128File:/u01/app/oracle/oradata/dave2/system01.dbf (1)Block: 60884Offsets: 0 to 127Dba:0x0040edd4-------------------------------------------------------06a20000 d4ed4000 e3580900 00000106 l.¢..?í@.?X......64610000 01000000 fb000000 de580900 lda......?...TX..00000000 02000200 00000000 01002900 l..............).15010000 a3008000 ce002700 00800000 l....£...?.'.....de580900 01002800 15010000 a4008000 lTX....(.....¤...ce003500 06200000 e3580900 01020700 l ?.5....?X......ffff2400 021fde1e de1e0000 01000100 l..$...T.T.......0600851f 6f1f591f 441f2e1f 181f021f l....o.Y.D.......<16 bytes per line>我们看一下blockheader 中第一行16个bytes 的架构:Type Format Unused RDBA SCN Base SCN Wrap Seq Flag 06 a2 0000 d4ed4000 e3580900 0000 01 06 在上一节讲到不同的blocktype id 代表不同的类型:06 KTB managed data block (with ITL) 我们在dump 一个看看:BBED> dump /v dba 1,6081 offset 0 count128File:/u01/app/oracle/oradata/dave2/system01.dbf (1)Block: 6081Offsets: 0 to 127Dba:0x004017c1-------------------------------------------------------10a20000 c1174000 972a0000 00000104 l.¢..á.@..*......cbf20000 00000000 00000000 00000000 l?ò..............00000000 01000000 07000000 20100000 l............ ...00000000 01000000 07000000 c3174000 l............?.@.00000000 00000000 00000000 01000000 l................00000000 00000000 00000000 01000000 l ................00000000 7e030000 00000040 c2174000 l....~......@?.@.07000000 00000000 00000000 00000

000 l................这个block headertype 就变成了10. 3.6 print(p) Theprint command allows data structures to be printed in raw or formatted output.The DBA, Filename, File, Block and/or Offset to print can be specified with thecommand. If these are not specified the current file, block and offset asestablished with the set command will be printed. print命令输出datastructures。 在使用print时,可以指定dba,block 等参数来限定输出特定block。 Ifthe print command is issued with just the block and offset to print, bbed willdisplay the data structure at that offset. 在3.4 节map里讲了block的结构,在前面,我们讲过,可以通过dump 来查看block 的type。通过print 也可以查看。现在我们print 一个file 1,block 60811的Data Block Header 的type。BBED> set dba 1,60811DBA 0x0040ed8b(4255115 1,60811)BBED> set offset 0OFFSET 0BBED> p kcbh.type_kcbhub1 type_kcbh @0 0x06--type 类型为06.Itis also possible to use the print command to print individual data structuresby specifying the name. 可以通过print 输出指定名称的block structures。BBED> p kcbhstruct kcbh, 20 bytes @0 ub1 type_kcbh@0 0x06ub1 frmt_kcbh@1 0xa2ub1 spare1_kcbh@2 0x00ub1 spare2_kcbh@3 0x00ub4 rdba_kcbh@4 0x0040ed8bub4 bas_kcbh @8 0x00095560ub2 wrp_kcbh@12 0x0000ub1 seq_kcbh@14 0x01ub1 flg_kcbh@15 0x06 (KCBHFDLC,KCBHFCKV)ub2 chkval_kcbh@16 0x4667ub2 spare3_kcbh@18 0x0000Ifwe wanted to determine the number of rows in the block, we could print the dataheader structure or kdbh: 如果我们想确定block 中row的数量,可以print data header structure 或者kdbh。struct kdbh, 14 bytes Data Header Structure BBED> p kdbhstruct kdbh, 14 bytes @92 ub1 kdbhflag@92 0x01 (KDBHFFK)b1kdbhntab @93 2b2kdbhnrow@94 10sb2 kdbhfrre@96 -1sb2 kdbhfsbo@98 42sb2 kdbhfseo@100 7917b2kdbhavsp@102 7875b2kdbhtosp@104 7875We can also specifying certain datastructure elements to print such as the row count: 也可以指定某个具体的structure元素进行print。BBED> p kdbhnrowb2 kdbhnrow @94 10该block里保存了10行rows。注意:当print 一个data structure 时,输出的格式如下:UnitSize* | Name | Offset| Value *Unit size is shown in bytes and indicates if the value is signed (s) orunsigned (u). Inaddition to printing information about the specified data structure, the printcommand can also be used to print information about thelocation the data structure points to by using the pointer (*) prefix. --在pointer 加前缀* 可以print location data structure。For example we can display the block row information by printing the kdbr datastructure,kdbr 里保存的是row directory 的信息。sb2 kdbr[1] Row Directory BBED> p kdbrsb2 kdbr[0] @114 8070sb2 kdbr[1] @116 8053sb2 kdbr[2] @118 8036sb2 kdbr[3] @120 8019sb2 kdbr[4] @

122 8002sb2 kdbr[5] @124 7985sb2 kdbr[6] @126 7968sb2 kdbr[7] @128 7951sb2 kdbr[8] @130 7934sb2 kdbr[9] @132 7917格式的对应关系:Unit Size* | Name| Offset | Valuesb2 kdbr[9]@132 7917从上面的结果,可以看出,在这个数据块里有10行记录。 每行的pointer 需要2个bytes来存储。 这10行row的offset 从114 到132. 我们可以使用kdbr[0] 作为一个指针来print 它对应的内容。这个kdbr[0] 是一个本地的data structure,我们print 需要加*号前缀。BBED> p *kdbr[0]rowdata[153]------------ub1 rowdata[153] @8162 0xac通过这个信息,我们可以知道该行记录的偏移量是8162. 我们就dump 它的具体信息。BBED> d /v dba 1,60811 offset 8162 count128File:/u01/app/oracle/oradata/dave2/system01.dbf (1)Block: 60811Offsets: 8162 to 8191Dba:0x0040ed8b-------------------------------------------------------ac000209 00090000 40ed8b00 000040ed l?.......@í....@í8b000003 c2052702 c1020106 6055 l ....?.'.á...`U<16 bytes per line>Theprint command can also print absolute offsets, although it does not offer thecount option like the dump command: print命令也可以直接输出一个绝对的offset内容。 BBED> p offset 8162rowdata[153]------------ub1 rowdata[153] @8162 0xac这个输出结果默认是16进制的。我们可以将其修改成其他格式。Switch Display Format /x Hex /d signed decimal /u unsigned decimal /o Octal /c Character /n Oracle Number /t Oracle Date /i Oracle ROWID BBED> p offset 8162rowdata[153]------------ub1 rowdata[153] @81620xacBBED> p /d offset 8162rowdata[153]------------ub1 rowdata[153] @8162 1723.7 examine(x) Theexamine command is used to display data from the block in raw or formattedoutput. The DBA, Filename, File, Block and/or Offset to examine can bespecified with the command. If these are not specified the current file, blockand offset as established with the set command will be examined. If the examinecommand is issued with just the block and offset to examine, bbed will displaythe data structure at that offset. --examine命令也是用来显示datablock的内容的。 Unlikethe print command it cannot interpret data structures, but it can be used todisplay row information. Combined with knowledge of the data type of the row,it can be used to retrieve complete rows from the block: --print命令不能对datastructures 进行一个解释说明。Theexamine command will interpret the data in the block according to the followingswitches: Switch Display Format /b b1, ub1 (byte) /h b2, ub2 (half-word) /w b4, ub4 (word) /l b8, ub8 (long) (was b4/ub4 in Oracle7). /r Oracle table/index row Theexamine command allows switches from the print command to be combined withthese sp

ecific switches to interpret data. --examine可以根据switch的方式和print 命令进行一个结合来对data 进行解释说明。Forexample if we wanted to interpret data as an Oracle table row with the firstcolumn character and the second and third columns numeric, we would execute thecommand as follows: BBED>x /rcnn Thefollowing example shows the print and examine commands being used to step throughthe first and second rows of a block, with the data interpreted as a row in theformat: character, number, number: BBED> set dba 1,60811DBA 0x0040ed8b(4255115 1,60811)BBED> p *kdbr[0]rowdata[153]------------ub1 rowdata[153] @8162 0xacBBED> x /rcnnrowdata[153] @8162 ------------flag@8162: 0xac (KDRHFL, KDRHFF, KDRHFH,KDRHFK)lock@8163: 0x00cols@8164: 2kref@8165: 9mref@8167: 9hrid@8169:0x0040ed8b.0nrid@8175:0x0040ed8b.0col0[3] @8181: ?.'col1[2] @8185: 1 BBED> p *kdbr[1]rowdata[136]------------ub1 rowdata[136] @8145 0x6cBBED> x /rcnnrowdata[136] @8145 ------------flag@8145: 0x6c (KDRHFL, KDRHFF, KDRHFH,KDRHFC)lock@8146: 0x02cols@8147: 4col0[2] @8149: á.col1[1] @8152: 0 col2[2] @8154: 3 col3[4] @8157: 42092Arepeat count can also be specified to repeat the examine command for subsequentrows. The following shows the print command being used to position the offsetat the last row and then the next three rows are examined. examine命令也可以指定多行进行显示。 下面的示例我们通过print命令讲offset 指向到最后一个位置。 然后repeat 3次。 BBED> p kdbhnrowb2 kdbhnrow @94 10--这个block上总共有10 个rows。BBED> p *kdbr[9]rowdata[0]----------ub1 rowdata[0] @8009 0x6c--用print 将位置指向最后一个row。BBED> x /3rcnnrowdata[0] @8009 ----------flag@8009: 0x6c (KDRHFL, KDRHFF, KDRHFH,KDRHFC)lock@8010: 0x02cols@8011: 4col0[2] @8013: á.col1[1] @8016: 0 col2[2] @8018: 27 col3[4] @8021: 52385 rowdata[17] @8026 -----------flag@8026: 0x6c (KDRHFL, KDRHFF, KDRHFH,KDRHFC)lock@8027: 0x02cols@8028: 4col0[2] @8030: á.col1[1] @8033: 0 col2[2] @8035: 24 col3[4] @8038: 42280 rowdata[34] @8043 -----------flag@8043: 0x6c (KDRHFL, KDRHFF, KDRHFH,KDRHFC)lock@8044: 0x02cols@8045: 4col0[2] @8047: á.col1[1] @8050: 0 col2[2] @8052: 21 col3[4] @8055: 42224--examine 显示3次。注意:Notethat Oracle fills data blocks from the bottom-up, so setting the offset to thefirst row will prohibit the use of the repeat option.Oracle使用block 是从底向上的。 如果讲offset 设置为0. 那么将会组织repeat 的操作。假如当前current row 是3,repeat 2次,那么row 3 和row 2 将被显示。 如果current row 是9, repeat 3次,那么row 9,row 8 和row 7 将被显示。 如果不能满足repeat,就会返回错误。3.8 find(f) Thefind command is used to locate data within a

block. The command allows hex,string or numeric data to be searched for. The pattern can be searched for fromthe top of the block (offset 0) using the TOP directive, or from the currentposition using the CURR directive. find命令可以用来搜索关键字。 可以从offset 0 搜索到top 或者从当前的offset 搜索到top。 Switchesare used to determine the data type of the pattern to search for. These areshown below: Switch Datatype /x Hexadecimal /d Decimal /u unsigned decimal /o Octal /c character (native) Note: Number and Dates are not supported bythe find command. find 命令支持的switch 类型如上表,注意,find 不支持number和Date 。示例:--创建表并insert数据SYS@dave2(db2)> create table dvd(jobvarchar2(100));Table created.SYS@dave2(db2)> insert into dvdvalues('Dave is DBA!');1 row created.SYS@dave2(db2)> commit;Commit complete.SYS@dave2(db2)> insert into dvdvalues('Dave like Oracle!');1 row created.SYS@dave2(db2)> commit;Commit complete.--查看block 情况:SYS@dave2(db2)> selectrowid,dbms_rowid.rowid_relative_fno(rowid) rel_fno,dbms_rowid.rowid_block_number(rowid) blockno,dbms_rowid.rowid_row_number(rowid) rownofrom dvd; ROWID REL_FNO BLOCKNOROWNO------------------ ---------- --------------------AAAN9VAABAAAcKiAAA 1115362 0AAAN9VAABAAAcKiAAB 1115362 1--设置block 和 offsetBBED> set file 1FILE# 1BBED> set block 115362BLOCK# 115362BBED> set offset 0OFFSET 0--查找DaveBBED> find /c Dave topFile:/u01/app/oracle/oradata/dave2/system01.dbf (1)Block: 115362 Offsets: 8155 to 8191 Dba:0x0041c2a2------------------------------------------------------------------------44617665 206c696b 65204f72 61636c65 212c01010c446176 65206973 20444241 21020616 b3 <32 bytes per line>bbed 显示在offset 8155的为位置,我们dump 该offset 看看BBED> d /v dba1,115362 offset 8155 count 128File: /u01/app/oracle/oradata/dave2/system01.dbf(1)Block: 115362Offsets: 8155 to 8191Dba:0x0041c2a2-------------------------------------------------------44617665 206c696b 65204f72 61636c65 l Dave like Oracle212c0101 0c446176 65206973 20444241 l!,...Dave is DBA21020616 b3 l !...3<16 bytes per line>--结果显示的头四个字母就是Dave如果我们要继续搜索Dave,那么只需要按下f 就可以了,不需要跟参数。BBED> fFile:/u01/app/oracle/oradata/dave2/system01.dbf (1)Block: 115362 Offsets: 8176 to 8191 Dba:0x0041c2a2------------------------------------------------------------------------44617665 20697320 44424121 020616b3 <32 bytes per line>BBED> d /v dba1,115362 offset 8176 count 128File:/u01/app/oracle/oradata/dave2/system01.dbf (1)Block: 115362Offsets: 8176 to 8191Dba:0x0041c2a2-------------------------------------------------------44617665 20697320

44424121 020616b3 l Dave is DBA!...3<16 bytes per line>3.9 Copy Thecopy command is used to copy blocks from one location to another. As with othercommands, the file or filename and offset can be specified, or the DBA can bespecified instead. 命令格式如下:BBED> copy dba 1,115362 to dba 1,115363copy 是个危险的命令,慎用。3.10 modify(m) Themodify command is used to change data inside a block. The DBA, Filename, File,Block and/or Offset to modify can be specified with the command. If these arenot specified the current file, block and offset as established with the setcommand will be modified. Alternatively a symbol or symbol pointer can bespecified for modification. Thepattern of bytes used to overwrite the original can be specified inhexadecimal, decimal, unsigned decimal, octal or character data using the sameswitches as the find command. 在file 1,block 115362 有我们的Dave,我们这里把Dave 改成dmm。BBED>modify /c dmm dba 1, 115362 offset 8155 File:/u01/app/oracle/oradata/dave2/system01.dbf (1)Block: 115362 Offsets: 8155 to 8191 Dba:0x0041c2a2------------------------------------------------------------------------646d6d65 206c696b 65204f72 61636c65 212c01010c446176 65206973 20444241 21020616 b3 <32 bytes per line>--dump 验证一下BBED> d /v dba 1,115362 offset8155 count 128File:/u01/app/oracle/oradata/dave2/system01.dbf (1)Block: 115362Offsets: 8155 to 8191Dba:0x0041c2a2-------------------------------------------------------646d6d65 206c696b 65204f72 61636c65 l dmme like Oracle212c0101 0c446176 65206973 20444241 l!,...Dave is DBA21020616 b3 l !...3<16 bytes per line>--注意,这里只修改了Dave的前三个字母,即把Dave变成了dmme。注意一点,这里仅仅是修改,还没有进行update,即sum apply, select 才会改变。SYS@dave2(db2)> select * from dvd;JOB--------------------------------------------------------------------------------Dave is DBA!Dave like Oracle!3.11 assign Theassign command does symbolic assignment, with type and range checking. Eithertarget or source can be omitted for the current offset. Forexample, the following command assigns structure at current offset to file 4,block 2 ”s first ITL entry BBED> assign dba 4, 2 ktbbhitl[0] 3.12 sum Thesum command is used to check and set the block checksum. The DBA, Filename,File, Block and/or Offset to check can be specified with the command. If theseare not specified the current file, block and offset as established with theset command will be checked. Theapply directive can be used to update the checksum. 我们可以使用bbed 对block 进行修改。 要使这些修改生效,就要使用sum命令。BBED> sum dba 1,115362Check value for File 1, Block 115362:current = 0xe5fb, required = 0xe5fbBBED> sum dba 1,115362 applyCheck value for File 1, Block 115362:current

= 0xe5fb, required = 0xe5fb正常情况下,apply 以后,就已改生效了,但是我测试的时候apply 并没有生效,而是把db 重启之后,modify 才生效。SYS@dave2(db2)> select * from dvd;JOB--------------------------------------------------------------------------------Dave is DBA!Dave like Oracle!SYS@dave2(db2)> startup forceORACLE instance started.Total System Global Area 239075328 bytesFixed Size 1218724 bytesVariable Size 83887964 bytesDatabase Buffers 150994944 bytesRedo Buffers 2973696 bytesDatabase mounted.Database opened.SYS@dave2(db2)> select * from dvd;JOB--------------------------------------------------------------------------------Dave is DBA!dmme like Oracle!3.13 push / pop Thepush and pop commands are used to push a file, block and offset location onto amemory backed stack and then pop them back. This allows a current locationbeing edited to be temporarily saved while another location is examined ormodified. Note that the stack only stores the location? it does notsave the contents. --push命令将对象放到内存的stack,pop 将对象从内存写回磁盘。Thefollowing example shows file 7, block 16, offset 8163 being examined. Thelocation is saved with the push command. We then move to file 6, block 1 beforereturning to DBA 7,16 with the pop command. BBED> push dba 7,16 DBA 0x01c00010 (29360144 7,16) OFFSET 8163 BBED> set dba 6,1 DBA 0x01800001 (25165825 6,1) BBED> pop DBA 0x01c00010 (29360144 7,16) OFFSET 8163 Thecommand pop all can be used to remove all push‘d entries from the stack. Thecommand show all can be used to show all saved locations. 3.14 revert Therevert command is used to restore a file, filename, block or DBA to it‘soriginal state when bbed was started. revert是恢复自bbed 启动以来的所有修改。BBED> revert dba 1,115362All changes made to this block will berolled back. Proceed? (Y/N) yReverted file'/u01/app/oracle/oradata/dave2/system01.dbf', block 115362BBED> sum dba 1,115362 applyCheck value for File 1, Block 115362:current = 0xdef7, required = 0xdef7这个block是我们之前修改成dmme 的。 我们应用之后,再次select:SYS@dave2(db2)> select * from dvd;JOB--------------------------------------------------------------------------------Dave is DBA!dmme like Oracle!还是没有改变,flush 一下buffer cache之后就更改回来了。我们刚才在之前的测试时,是重启了DB。 看来也是启了flush buffer cache的作用。SYS@dave2(db2)> alter system flushbuffer_cache;System altered.SYS@dave2(db2)> select * from dvd;JOB--------------------------------------------------------------------------------Dave is DBA!Dave like Oracle!3.15 undo Theundo command rolls back the last modify or assign command. If the undo commandis issued again the modification is re-done

. undo命令是回滚最后一次的操作。BBED> modify /cdmm dba 1, 115362 offset 8155 File:/u01/app/oracle/oradata/dave2/system01.dbf (1)Block: 115362 Offsets: 8155 to 8191 Dba:0x0041c2a2------------------------------------------------------------------------646d6d65 206c696b 65204f72 61636c65 212c01010c446176 65206973 20444241 21020616 b3 <32 bytes per line>BBED> d /v dba1,115362 offset 8155 count 128File:/u01/app/oracle/oradata/dave2/system01.dbf (1)Block: 115362Offsets: 8155 to 8191Dba:0x0041c2a2-------------------------------------------------------646d6d65 206c696b 65204f72 61636c65 l dmmelike Oracle212c0101 0c446176 65206973 20444241 l!,...Dave is DBA21020616 b3 l !...3<16 bytes per line>BBED> undoBBED>modify /x446176 filename '/u01/app/oracle/oradata/dave2/system01.dbf' block115362. offset 8155.File:/u01/app/oracle/oradata/dave2/system01.dbf (1)Block: 115362 Offsets: 8155 to 8191 Dba:0x0041c2a2------------------------------------------------------------------------44617665 206c696b 65204f72 61636c65 212c01010c446176 65206973 20444241 21020616 b3 <32 bytes per line>--undo 下面的modify是oracle 自己执行的。BBED> d /v dba 1,115362 offset 8155count 128File:/u01/app/oracle/oradata/dave2/system01.dbf (1)Block: 115362Offsets: 8155 to 8191Dba:0x0041c2a2-------------------------------------------------------44617665 206c696b 65204f72 61636c65 l Davelike Oracle212c0101 0c446176 65206973 20444241 l!,...Dave is DBA21020616 b3 l !...3<16 bytes per line>3.16 verify Theverify command is used to verify the integrity of the block. It performs asimilar function to the dbverify utility. verify命令用来验证block的完整性。BBED> verify dba 6,15DBVERIFY - Verification startingFILE = /u01/app/oracle/oradata/dave2/dave01.dbfBLOCK = 15DBVERIFY - Verification completeTotal Blocks Examined : 1Total Blocks Processed (Data) : 1Total Blocks Failing (Data) : 0Total Blocks Processed (Index): 0Total Blocks Failing (Index): 0Total Blocks Empty : 0Total Blocks Marked Corrupt : 0Total Blocks Influx : 03.17 corrupt Thecorrupt command is used to mark blocks as media corrupt. corrupt命令将一个block 标记为corrupt,这样db 在操作时就会跳过该block,从而避免错误。BBED> corrupt dba 6,15Block marked media corruptNote: The undo command does not undo acorruption. The revert command however does. 注意: undo 命令不能undo 一个corruption,但是revert 命令却可以。小结:关于bbed 命令的语法部分就这么多。 下篇将重点看一下BBED 命令的使用。

更多相关推荐:
巡检报告

GCIGC6F3编号DGGLXC004巡检时间20xx041913注本表一式三份一份由项目管理中心存档一份由项目部留存一份抄送集团技术管理部图1图223图3图4图5图6图733

IT 系 统 巡 检 报 告

IT系统巡检报告年月日项目名称客户名称实施地点实施单位1前言11巡检目的为保障重庆瀚置管理顾问有限公司IT系统的平稳运行将按重庆瀚置管理顾问有限公司IT系统维护方案定期对各子系统进行巡检并且根据巡检的实际结果给...

巡检报告模板

巡检报告模板,内容附图。

巡检报告

永城保险公司系统常规性巡检报告单神州数码科技有限公司20xx年4月目录概述3主机及操作系统常规配置检查4oracle数据库常规参数检查6数据库关键性能参数检查及分析7RAC集群检查9关键性SQL语句定位及分析1...

项目巡检报告

项目巡检阶段评估报告编号一巡检组织情况二项目概况三项目现场检查情况四项目检查各部门意见及措施五项目综合检查评估意见及措施

各种网络安全设备巡检报告

附录1防火墙巡检表附录2IDS巡检表附录3防病毒系统巡检表附录4审计系统巡检表附录5服务器巡检表服务器检查列表Windows附录6数据库巡检表附录7网络设备检查列表

网络巡检报告

网络巡检报告

oracle数据库巡检报告模板

系统oracle数据库巡检报告文档控制修改记录审阅分发目录文档控制2检查总结5概要5总体概况5优化建议5介绍6目标6检查方法6检查范围6数据库配置分析7硬件配置7软件配置7数据库参数8控制文件9Temporar...

AIX巡检报告以及操作手册

巡检报告单机器型号序列号检查时间年月日1机房环境温度符合要求不符合湿度符合要求不符合2机器清洁根据需要清洁机器各部件已清洁不需要3检查系统硬件情况设备故障灯是否有亮有无是否有其他否异常情况如硬盘风扇异常的声音电...

运维巡检报告及操作手册(AIX)

巡检报告单机器型号序列号检查时间年月日1机房环境温度符合要求不符合湿度符合要求不符合2机器清洁根据需要清洁机器各部件已清洁不需要3检查系统硬件情况设备故障灯是否有亮有无是否有其他否异常情况如硬盘风扇异常的声音电...

用友--海轮王巡检报告

用友软件三友科技公司巡检报告地址哈尔滨市南岗区宣化街573号盟科观邸C4栋19xx室电话01051820xx3传真01051820xx3EMaillihong20xx219163com送至TO公司COMPANY...

小型机巡检报告

IBM小型机系统巡检工作报告浙江犀利科技有限公司20xx年10月1客户名称宁波市第一医院服务地址柳汀街联系人吴斌联系电话138xxxxxxxx机器型号序列号谨对本次巡检工作予以证明具体巡检工作内容见附件服务工程...

巡检报告(41篇)