oracle bbed 工具的使用方法 Post By:2007-4-3 10:08:57
bbed就是英文block browse block edit的缩写,用来直接查看和修改数据文件数据的一个工具。 在windows上没有提供这个工具,在linux上面有,需要编译: make -f ins_rdbms.mk BBED=$ORACLE_HOME/rdbms/lib/bbed $ORACLE_HOME/bin/bbed 然后把$ORACLE_HOME/rdbms/lib加到环境变量的PATH里面,就可以直接在命令中bbed了。 编译好了就可以使用了,不过有个默认的口令blockedit。 运行bbed之前先要自己写几个配置文件: 这里有2个 a.txt par.bbd [oracle@vm1 oracle]$ ls a.txt bifile.bbd Desktop log.bbd par.bbd [oracle@vm1 oracle]$ more a.txt 6 /u01/oracle/oradata/test/users01.dbf 26222592 2 /u01/oracle/oradata/test/users01.dbf.bak 26222592 [oracle@vm1 oracle]$ more par.bbd blocksize=8192 listfile=a.txt mode=edit 编好了就可以运行bbed了 [oracle@vm1 oracle]$ bbed parfile=par.bbd Password: --这里的密码 blockedit BBED: Release 2.0.0.0.0 - Limited Production on Wed Sep 14 16:18:31 2005 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. ************* !!! For Oracle Internal Use only !!! *************** BBED> 先看看帮助,有那些命令: BBED> help HELP [ | ALL ] BBED> help ALL SET DBA [ dba | file#, block# ] SET FILENAME 'filename' SET FILE file# SET BLOCK [+/-]block# SET OFFSET [ [+/-]byte offset | symbol | *symbol ] SET BLOCKSIZE bytes SET LIST[FILE] 'filename' SET WIDTH character_count SET COUNT bytes_to_display SET IBASE [ HEX | OCT | DEC ] SET OBASE [ HEX | OCT | DEC ] SET MODE [ BROWSE | EDIT ] SET SPOOL [ Y | N ] SHOW [ | ALL ] INFO MAP[/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 ] : N - a number which specifies a repeat count. 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 row f - a letter which specifies a display format: x - hexadecimal d - decimal u - unsigned decimal o - octal c - character (native) n - Oracle number t - Oracle date i - Oracle rowid FIND[/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] = : [ DBA | FILE | FILENAME | BLOCK | OFFSET | symbol | *symbol ] : [ value | ] SUM [ DBA | FILE | FILENAME | BLOCK ] [ APPLY ] PUSH [ DBA | FILE | FILENAME | BLOCK | OFFSET ] POP [ALL] REVERT [ DBA | FILE | FILENAME | BLOCK ] UNDO HELP [ | ALL ] VERIFY [ DBA | FILE | FILENAME | BLOCK ] CORRUPT [ DBA | FILE | FILENAME | BLOCK ] BBED> 还真不少,下面是几个常用的: 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 all 下面做些实验: 先建个表,插入1条数据。 [oracle@vm1 oracle]$ sqlplus SQL*Plus: Release 9.2.0.4.0 - Production on Wed Sep 14 16:46:15 2005 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Enter user-name: / as sysdba Connected to: Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production With the Partitioning option JServer Release 9.2.0.4.0 - Production SQL> create table haocp ( a varchar2(10)) tablespace users; Table created. SQL> insert into haocp values('a'); 1 row created. SQL> commit; Commit complete. SQL> select segment_name,file_id,block_id,blocks from dba_extents where segment_name = 'HAOCP'; SEGMENT_NAME -------------------------------------------------------------------------------- FILE_ID BLOCK_ID BLOCKS ---------- ---------- ---------- HAOCP 6 33 8 表存放在file 6 block 33 - 33+8 上面,这时先关闭数据库,对users数据文件作个cp。 SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> SQL> exit Disconnected from Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production With the Partitioning option JServer Release 9.2.0.4.0 - Production [oracle@vm1 oracle]$ [oracle@vm1 test]$ pwd /u01/oracle/oradata/test [oracle@vm1 test]$ cp users01.dbf users01.dbf.bak [oracle@vm1 test]$ sqlplus SQL*Plus: Release 9.2.0.4.0 - Production on Wed Sep 14 16:56:30 2005 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Enter user-name: / as sysdba Connected to an idle instance. SQL> startup ORACLE instance started. Total System Global Area 185668648 bytes Fixed Size 451624 bytes Variable Size 117440512 bytes Database Buffers 67108864 bytes Redo Buffers 667648 bytes Database mounted. Database opened. SQL> 重新启动完数据库,进入bbed [oracle@vm1 oracle]$ ls a.txt bifile.bbd Desktop log.bbd par.bbd [oracle@vm1 oracle]$ pwd /home/oracle [oracle@vm1 oracle]$ bbed parfile=par.bbd Password: BBED: Release 2.0.0.0.0 - Limited Production on Wed Sep 14 17:06:24 2005 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. ************* !!! For Oracle Internal Use only !!! *************** BBED> set file 6 FILE# 6 BBED> show FILE# 6 BLOCK# 1 OFFSET 0 DBA 0x01800001 (25165825 6,1) FILENAME /u01/oracle/oradata/test/users01.dbf BIFILE bifile.bbd LISTFILE a.txt BLOCKSIZE 8192 MODE Edit EDIT Unrecoverable IBASE Dec OBASE Dec WIDTH 80 COUNT 512 LOGFILE log.bbd SPOOL No BBED> 刚才创建的haocp表在file 6 blcok 33 - 33+8上面,用bbed看看36的内容
|
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15142212/viewspace-590966/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/15142212/viewspace-590966/