今天在复习盖总的《深入解析Oracle》一书时,看到了介绍bootstrap$。
说实话,把以前的书再拿来复习,真的可以温故而知新。记得这本书还是上大学时看过的,一晃四年过去了。书上笔记还是犹如昨天的感觉。
先看看bootstrap$是什么,以下是在10g版本中:
SQL> select segment_type,segment_name from dba_segments where segment_name='BOOTSTRAP$';
SEGMENT_TYPE SEGMENT_NAME
------------------ --------------------
TABLE BOOTSTRAP$
SQL>
SQL> SELECT SEGMENT_NAME,SEGMENT_TYPE,EXTENT_ID,BLOCK_ID,FILE_ID,BLOCKS FROM DBA_EXTENTS WHERE SEGMENT_NAME='BOOTSTRAP$';
SEGMENT_NAME SEGMENT_TYPE EXTENT_ID BLOCK_ID FILE_ID BLOCKS
-------------------- ------------------ ---------- ---------- ---------- ----------
BOOTSTRAP$ TABLE 0 377 1 8
SQL>
BOOTSTRAP$是一个表,位于1号文件的377块开始的8个块中。(这里是10g,11g是位于520块开始)。
数据库的启动过程主要依靠这个表里的数据:
SQL> select count(*) from BOOTSTRAP$;
COUNT(*)
----------
57
SQL>
在11g中,这个表有60条数据。
可将数据库启动在mount模式,然后启用sql_trace跟踪,启用之后就alter database open打开数据库。生成的trc文件主要描述了数据库从bootstrap$加