使用BBED查看SYSTEM文件头的root dba及bootstrap$(二)

2014-11-24 17:08:33 · 作者: · 浏览: 3
1bytes,
DBA=0x00400001====> 转换为二进制为:00000000 01000000 00000000 00000001
file#=00000000 01 -----文件号
block#=000000 00000000 00000001 -->号块
此处的计算是:
0x00400208先转换为二进制为:00000000 01000000 00000010 00001000
数据文件号是:0000000001 数据块号是:0000000000001000001000
BYS@ bys3>select bit_to_number('0000000001') from dual;
BIT_TO_NUMBER('0000000001')
---------------------------
1
BYS@ bys3>select bit_to_number('0000000000001000001000') from dual;
BIT_TO_NUMBER('0000000000001000001000')
---------------------------------------
520
##################################################################################################

3.在数据库中查询file# 1 header_block=520的块的信息--- bootstrap$

BYS@ bys3>col segment_name for a15
BYS@ bys3>select segment_name,segment_type,header_file,header_block from dba_segments where header_block=520;
SEGMENT_NAME SEGMENT_TYPE HEADER_FILE HEADER_BLOCK
--------------- ------------------ ----------- ------------
BOOTSTRAP$ TABLE 1 520
截取bootstrap$;表的前几行
SYS@ bys3>col SQL_TEXT for a110
SYS@ bys3>select * from bootstrap$; --截取部分
LINE# OBJ# SQL_TEXT
---------- ---------- --------------------------------------------------------------------------------------------------------------
-1 -1 8.0.0.0.0 -----兼容8.0以后版本
0 0 CREATE ROLLBACK SEGMENT SYSTEM STORAGE ( INITIAL 112K NEXT 56K MINEXTENTS 1 MAXEXTENTS 32765 OBJNO 0 EXTENTS
(FILE 1 BLOCK 128)) --创建 系统回滚段

20 20 CREATE TABLE ICOL$("OBJ#" NUMBER NOT NULL,"BO#" NUMBER NOT NULL,"COL#" NUMBER NOT NULL,"POS#" NUMBER NOT NULL,
"SEGCOL#" NUMBER NOT NULL,"SEGCOLLENGTH" NUMBER NOT NULL,"OFFSET" NUMBER NOT NULL,"INTCOL#" NUMBER NOT NULL,"S
PARE1" NUMBER,"SPARE2" NUMBER,"SPARE3" NUMBER,"SPARE4" VARCHAR2(1000),"SPARE5" VARCHAR2(1000),"SPARE6" DATE) S
TORAGE ( OBJNO 20 TABNO 4) CLUSTER C_OBJ#(BO#)

42 42 CREATE INDEX I_ICOL1 ON ICOL$(OBJ#) PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE ( INITIAL 64K NEXT 1024K MINEX
TENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 OBJNO 42 EXTENTS (FILE 1 BLOCK 384))

使用Ultraedit把文字转换为16进制OBJ#=0行的SQL_TEXT转换为16进制数: --用于下一步时与BBED DUMP数据块的信息对比
00000000h: 43 52 45 41 54 45 20 52 4F 4C 4C 42 41 43 4B 20 ; CREATE ROLLBACK
00000010h: 53 45 47 4D 45 4E 54 20 53 59 53 54 45 4D 20 53 ; SEGMENT SYSTEM S
00000020h: 54 4F 52 41 47 45 20 28 20 20 49 4E 49 54 49 41 ; TORAGE ( INITIA
00000030h: 4C 20 31 31 32 4B 20 4E 45 58 54 20 35 36 4B 20 ; L 112K NEXT 56K
00000040h: 4D 49 4E 45 58 54 45 4E 54 53 20 31 20 4D 41 58 ; MINEXTENTS 1 MAX
00000050h: 20 45 58 54 45 4E 54 53 20 33 32 37 36 35 20 4F ; EXTENTS 32765 O
00000060h: 42 4A 4E 4F 20 30 20 45 58 54 45 4E 54 53 20 28 ; BJNO 0 EXTENTS (
00000070h: 46 49 4C 45 20 31 20 42 4C 4F 43 4B 20 31 32 38 ; FILE 1 BLOCK 128
00000080h: 29 29 ; ))
#############################################################################################################

4.使用BBED查看root dba的指向的file# 1 block# 520的详细信息

接第2步中BBED的使用
BBED> set dba 0x00400208
DBA 0x00400208 (4194824 1,520)
BBED> show all
FILE# 1
BLOCK# 520
OFFSET 0
DBA 0x00400208 (4194824 1,520)
FILENAME /u01/oradata/bys3/system01.dbf
BIFILE bifile.bbd
LISTFILE bbedfile.txt
BLOCKSIZE 8192
MODE Edit
EDIT Unrecoverable
IBASE Dec
OBASE Dec
WIDTH 80
COUNT 512
LOGFILE log.bbd
SPOOL No
BBED> map
File: /u01/oradata/bys3/system01.dbf (1)
Block: 520 Dba:0x00400208
------------------------------------------------------------
Unlimited Data Segment Header
struct kcbh, 20 bytes @0
struct ktech, 72 by