db_recovery_file_dest_size of 1500 MB is 5.37% used. This is a
user-specified limit on the amount of space that will be used by this
database for recovery-related files, and does not reflect the amount of
space available in the underlying filesystem or ASM diskgroup.
Sun Feb 03 02:26:11 2019
Completed: alter database open
Sun Feb 03 02:26:11 2019
Starting background process CJQ0
Sun Feb 03 02:26:11 2019
CJQ0 started with pid=28, OS id=3188
--3、第一个对象的创建
create table bootstrap$
( line# number not null,
obj# number not null,
SQL_text varchar2(4000) not null)
storage (initial 50K objno 56 extents (file 1 block 520))
注意:这一步骤实际上是 oracle 在内存中创建 bootstrap$的结构,然后从数据文件中读取数据到内存中,
完成第一次初始化。
在 9i 读取位置是文件 1 的 377 块,自动 11g 后变更为文件 1 的 520 块。
从数据库的创建脚本$ORACLE_HOME/rdbms/admin/SQL.bsq 文件中,可以获得 bootstrap$表的初始创
建语句。
从数据库查一下,file 1 block 520 上存储的是什么对象
SQL> select segment_name,file_id,block_id from dba_extents where block_id=520
and file_id=1;
SEGMENT_NAME FILE_ID BLOCK_ID
--------------- ---------- ---------
BOOTSTRAP$ 1 520
file 1 block 520 存放的正是 bootstrap$对象,查看 trace 文件内容,下一步执行什么操作
select line#, SQL_text from bootstrap$ where obj# != :1
在创建并从数据文件中加载了 bootstrap$的内容之后,oracle 开始递归的从该表中读取信息,加载数据。
那么 bootstrap$中记录什么信息呢?
在数据库中,bootstrap$是一张实际存在的系统表。
SQL> desc bootstrap$
Name Null? Type
--------------- -------- --------------------
LINE# NOT NULL NUMBER
OBJ# NOT NULL NUMBER
SQL_TEXT NOT NULL VARCHAR2(4000)
select * from bootstrap$ where rownum <5;
可以看到 bootstrap$实际上是记录了一些数据库系统基本对象的创建语句。oracle 通过 bootstrap$进
行引导,进一步创建相关的
重要对象,从而启动了数据库。
--4、如何去定位 bootstrap$的位置呢?
在系统表空间文件头存在一个重要的数据结构 rootdba,我们可以通过转储数据文件头获得这个信息,从生
成的 trace 文件中,获得以下信息。
V10 STYLE FILE HEADER:
Compatibility Vsn = 202375680=0xc100200
Db ID=2903506423=0xad0ffdf7, Db Name='PRODCDB'
Activation ID=0=0x0
Control Seq=60695=0xed17, File size=103680=0x19500
File Number=1, Blksiz=8192, File Type=3 DATA
Tablespace #0 - SYSTEM rel_fn:1
评论