今天看了些书,总结下自己所学,直接切入主题。
Oracle启动概括可以分为三个步骤:1)在内存中建立数据库实例;2)加载数据库文件建立数据库的连接; 3)打开数据库供用户使用。
这三个步骤对应数据的不同状态:
(1) nomount
(2) mount
(3) open
nomount(未加载): 在内存中建立数据库实例,(SGA创建)根据参数文件启动后台进程。Oracle的参数文件有SPFILE<SID>.ORA, PFILE.ORA, INIT<SID>.ORA, Oracle按照文件顺序查找参数文件,查找到的就忽略其他文件,如果没有这三个文件,实例不能启动。Nomount状态会使用告警日志文件。
实例一旦在nomount状态,可以通过定位数据库的控制文件来进入mount(加载状态)。数据库的控制文件在参数文件中的CONTROL_FILES存在。如果控制文件损坏,可以停留在nomount状态修复这些损坏。
在OPEN状态,所有数据库文件(包括数据文件,日志文件等)都定位和打开。所有数据文件和日志文件的位置都可以再控制文件中定位。如果数据库文件损坏,可以停留在mount状态修复这些损坏。
数据库打开时:数据文件 联机重做日志文件 控制文件必须同步。所以如果防止不同步的情况,某个实例试图打开数据库的时候,SMON(系统监视进程)会检查数据文件和联机重做日志文件的状态,如果检测到无序的关闭,SMON进程会启动实例恢复进程,使之同步。
数据的关闭和启动顺序相反,有序关闭期间,数据库首先被关闭,后然卸载,最终实例被终止。所有会话被终止;活动的事物通过PMON进程回滚,已完成的事物同DBWn进程转存到磁盘数据文件,同时数据文件和日志文件关闭。卸载阶段,控制文件关闭,然后通过收回分配的SGA和后台进程,停止实例。
Oracle用startup命令启动数据库。
Oracle用shutdown名利关闭数据库。