2012年(11)
分类: Oracle
2012-10-26 11:37:49
Oracle的启动与关闭过程
一、Oracle的四种状态
SHUTDOWN: 数据库关闭
NOMOUNT: 实例启动,读取初始化文件
MOUNT: 实例启动,打开控制文件
OPEN: 实例启动,打开所有数据文件
数据库可以实现几种状态之间的转换:
NOMOUNTàMOUNT :ALTER DATABASE MOUNT
MOUNTàOPEN :ALTER DATABASE OPEN
二、Oracle的启动:
步骤:
1.启动实例不装载数据库:start nomount阶段
此阶段无法对数据库进行任何操作,一般用于创建数据库和重新创建控制文件,到这一步,数据库做的操作有:
①读取参数文件initSID.ora(SID为实例名)
②分配SGA
③启动后台进程
④打开告警文件和后台跟踪文件
2.启动实例并装载数据库吗,但不打开:start mount阶段
此状态下可以对数据库进行维护操作,如数据文件改名,增删改重做日志,数据库恢复等。mount一个数据库包括以下几个步骤:
①把已启动的数据库与实例联系起来
②定位并打开初始化参数CONTROL_FILES指定的控制文件(获取实例锁)
③读控制文件获取数据文件和重做日志文件的名字和状态(不检查是否存在)
3.启动实例装载并打开数据库:start open阶段
数据库正常表名实例已经启动,并且数据库已经装载和打开,这时所有合法的数据库用户才可以连到数据库,并执行典型的数据访问操作。打开一个数据库包括:
①打开联机数据文件
②打开联机重做日志文件
在这一阶段,Oracle检查所有数据文件和重做日志文件是否存在,能否被正常打开,对于可以自动恢复的错误,后台进程SMON在数据库打开之前进行恢复操作,对于不可恢复的错误,数据库打开失败并报错
特殊启动方式:
①启动实例并限制数据库访问:startup restrict
此方式打开数据库,只允许管理员访问,即只有拥有create session和restricted session用户权限的才可以访问(只有管理员才拥有此权限)。通常用于执行如下操作:
<1>进行结构维护和重建索引
<2>进行数据库exp和imp操作
<3>进行数据装入(sql * loader)
②强制数据库启动:startup force
在normal和immediate选项无法成功打开或关闭数据库时,用此方式打开数据库
三、数据库关闭
步骤:
1.连接数据库
2.关闭数据库
Oracle首先把高速缓冲区和重做日志缓冲区的数据写入数据文件和联机日志文件,然后关闭有关数据文件和日志文件,此时控制文件还处于打开状态
3.卸载数据库
从一个实例卸载数据库,关闭控制文件,但实例还处于打开状态
4.关闭实例
关闭alert文件和跟踪文件,释放SGA,终止后台进程,彻底关闭数据库
三个常用选项:
1.shutdown normal
处理完用户的事务,等待用户退出后,关闭数据库,卸载数据库,关闭实例,下次启动数据库时,不做实例恢复操作
2.shutdown immediate
在特定情况下,用户可能要用immediate选项,如果使用该选项,则Oracle正在处理的SQL语句立即被终止,任何未被提交的事务被回滚,数据库关闭。
缺点:不等待用户断开连接,但数据库时连续的,在下次启动时不需要恢复
3.shutdown abort
在紧急情况下使用该选项,如当某个后台进程死掉,无法使用normal和immediate选项,此时使用abort,当使用该选项时,Oracle正在处理的SQL语句立即被终止,不做回滚,下次启动时,要进行实例恢复