startup nomount  

##启动实例,启动第一步,ORACLE首先寻找参数文件,然后根据参数文件中的设置(内存分配设置),创建实例,分配内存、启动后台进程,nomount过程也就是启动数据库实例的过程,


首先根据ORACLE_SID来决定和寻找spfile参数文件启动实例,在ORACLE实例启动时,在操作系统上fork的进程就依据这个ORACLE_SID来创建。 

DB_NAME用来定义数据库名称,必须是一个不超过8个字符的文本串,DB_NAME代表了实例即将挂载的数据库名称,在数据库创建过程中,DB_NAME被记录在数据文件,控制文件和日志文件中,另外还记录在spfile参数文件中,在实例启动过程中,参数文件中必须至少要有DB_NAME参数,而且如果在数据库启动mount阶段中参数文件中的DB_NAME和控制文件中的数据库名称不一样,则数据库不能启动


alter database mount 

 ##启动数据库到mount状态  startup mount

启动到nomount状态以后,oracle就可以从参数文件中获得控制文件的位置信息,找到控制文件,并且根据控制文件中记录的数据文件位置进行数据文件的存在性判断。



alter database open 

 ##启动数据库到open状态

控制文件中记录了数据库中数据文件,日志文件的位置信息,检查点信息等重要信息,在数据库open阶段,ORACLE将根据控制文件中记录的这些信息找到这些文件,然后进行检查点及完整性检查,如果不存在问题就可以启动数据库。

open过程中,ORACLE进行的检查包括以下二项:

第一次检查数据文件头中的检查点计数(checkpoint CNT)是否和控制文件中的检查点计数(checkpoint CNT)一致,此步骤检查用以确认数据文件是来自同一版本,而不是从备份中恢复过来

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