从"关于
bootstrap$实际上存储的是数据字典的基表的定义,如OBJ$,C_OBJ$,TAB$等等。Oracle通过读取这些定义创建数据字典的基表,进而创建数据字典。
也就是说这里大概的流程是先读root dba,再通过root dba去找bootstrap$中存储的那些数据字典的基表的定义,最后根据这些定义创建数据字典。即所谓的一生二,二生三,三生万物。
在上述文章里,我们通过root dba找到了表bootstrap$的obj#,但现在的问题是:只知道bootstrap$的obj#是不够的,bootstrap$中的记录到底存在哪里?
答案是bootstrap$中记录的地址实际上是存在ktetb[0]. ktetbdba里。
好了,我们这里来证明上述观点:
SQL> desc bootstrap$;
Name Type Nullable Default Comments
-------- -------------- -------- ------- --------
LINE# NUMBER
OBJ# NUMBER
SQL_TEXT VARCHAR2(4000)
SQL> select count(*) from bootstrap$;
COUNT(*)
----------
57
SQL> select * from bootstrap$ where obj#=0;
LINE# OBJ# SQL_TEXT
--------------- --------- ---------------------------------------------------------------------------------------------- 0 0 CREATE ROLLBACK SEGMENT SYSTEM STORAGE ( INITIAL 112K NEXT 1024K MINEXTENTS 1 MAXEXTENTS 32765 OBJNO 0 EXTENTS (FILE 1 BLOCK 9))
SQL> select dump(0,16) from dual;
DUMP(0,16)
---------------
Typ=2 Len=1: 80
上述记录里SQL_TEXT为"CREATE ROLLBACK SEGMENT SYSTEM STORAGE ( INITIAL 112K NEXT 1024K MINEXTENTS 1 MAXEXTENTS 32765 OBJNO 0 EXTENTS (FILE 1 BLOCK 9))",在ultraEdit里看一下其16进制编码,上述语句的16进制编码为:
43 52 45 41 54 45 20 52
53 45 47 4D 45 4E 54 20 53 59 53 54 45 4D 20 53
54
4B 20 4D 49 4E 45 58 54 45 4E 54 53 20 31 20 4D
41 58 45 58 54 45 4E 54 53 20 33 32 37 36 35 20
28 46 49
29
按照上述观点,在ktetb[0]. ktetbdba所指向的的那个block里一定会有一条记录,这条记录有三个column,这三个column的值分别为80,80和
43 52 45 41 54 45 20 52
53 45 47 4D 45 4E 54 20 53 59 53 54 45 4D 20 53
54
4B 20 4D 49 4E 45 58 54 45 4E 54 53 20 31 20 4D
41 58 45 58 54 45 4E 54 53 20 33 32 37 36 35 20
28 46 49
29
好了,我们现在来验证一下:
BBED> set file 1
FILE# 1
BBED> set block 377
BLOCK# 377
BBED> p ktetb
struct ktetb[0], 8 bytes @108
ub4 ktetbdba @108 0x
ub4 ktetbnbk @112 0x00000007
SQL> exec cdba('
.
The file is 1
The block is 378
BBED> set block 378
BLOCK# 378
BBED> set offset 8030
OFFSET 8030
BBED> dump
File: /iprat02/ipratest/system01.dbf (1)
Block: 378 Offsets: 8030 to 8191 Dba:0x
------------------------------------------------------------------------
53595354 454d2053
45585420 31303234 4b204d49 4e455854 454e5453 2031204d 41584558 54454e54
53203332 37363520
0601
Leave a comment