1 启动到NOMOUNT状态

n 查找参数文件,查找步骤spfile.ora—spfile.ora—init.ora

查看是否使用了SPFILE

Show parameter spfile;

n 根据参数文件中的设置,创建实例,分配内存,启动后台进程


 

2 启动到MOUNT状态

n 从参数文件中获得控制文件的位置,找到并锁定控制文件

Show parameter control_files;---nomount

Select * from v$controlfile;--mount

n 通过口令文件登录系统

文件格式:UNIX-orapw.ora

WIN—pwd.ora

命令:orapwd file= password= entries=users

3 启动到OPEN状态

n 根据控制文件记录的信息,进行检查点及完整性检查,如果不存在问题,就可以启动数据库;

n 第一次检查数据文件头中的检查点计数(Checkpoint cnt)是否和控制文件中的检查点计数(Checkpoint cnt)一致。

此步骤检查用以确认数据文件是否来自同一版本,而不是从备份中恢复而来。(因为Checkpoint cnt不会被冻结,会一直被修改)

n 第二次检查数据文件头的开始SCN和控制文件中记录的该文件的结束SCN是否一致,如果一致,就不需要进行恢复。

n 完成数据文件的检查后,打开数据库,锁定数据文件,同时将每个数据文件的结束SCN设置为无穷大。

n 完成数据库的验证和恢复过程后,数据库处于一致状态,数据库还需要进行一系列处理过程:将UNDO段在线等操作,然后数据库可以提供访问,同时SMON可以开始进行事务回滚等。

n 在每次数据库的启动中,还需要判断控制文件的字符集和数据库的字符集是否相符,如果不相符,则以数据库中的字符集为准更新控制文件的字符集。

4 BOOTSTRAP$

ORACLEmountopen的过程中,首先在内存中创建bootstrap$,然后从数据文件中装载了bootstrap$的内容,递归从该表中读取信息,创建数据库系统基本对象,从而打开数据库。

5 参考SQL

n 获取SCN

select dbms_flashback.get_system_change_number from dual;

n DUMP控制文件

ALTER SESSION SET EVENTS 'immediate trace name controlf level 10';

n 获取CHENKPOINT SCN

Select file#,checkpoint_change#,to_char(checkpoint_time,’yyyy-mm-dd hh24:mi:ss’) CPT from v$datafile;

Select dbid,checkpoint_change# from v$database;

n Tkprof格式化跟踪文件输出

tkprof mestest_ora_212.trc 212.txt explain=system/oracle aggregate=yes sys=yes waits=yes sort=fchela