ORACLE的关闭状态

与数据库的启动相对应,关闭数据库时也是分步骤进行的。在关闭数据库与实例时,需要使用一个具有SYSDBA权限的用户连接到Oracle中,然后使用Shutdown语句执行关闭操作。(1) 关闭步骤
与启动数据库实例时的三个步骤一样,关闭数据库与实例也可以分为三步:首先关闭数据库,然后实例卸载数据库,最后终止实例。当关闭数据库时,Oracle将重做日志,高速缓存中的内容写入重做日志文件,并且将数据库高速缓存中被改动过的数据(脏数据)写入数据文件,然后再关闭所有的数据库文件和重做日志文件。这时数据库的控制文件仍然处于打开状态,但是由于数据库已经处于关闭状态,用户将无法访问数据库。关闭数据库后,实例才能卸载数据库。数据库的控制文件在这个时候被关闭,但是实例仍然存在。最后是终止实例,实例所拥有的所有后台进程和服务进程被终止,内存中的SGA区被回收。(2) shutdown normal 正常关闭方式(NORMAL)如果对关闭数据库的时间没有限制,通常会使用正常方式来关闭数据库。使用带有Normal子句的Shutdown语句将以正常方式关闭数据库。正常关闭数据库时,Oracle将执行如下操作:l 阻止任何用户建立新的连接;l 等待当前所有正在连接的用户主动断开连接。正在连接的用户能够继续他们当前的工作,甚至能够提交新的事务;l 一旦所有的用户都断开连接,立刻关闭、卸载数据库,并终止实例。以正常方式关闭数据库时,Oracle并不会断开当前用户的连接,而是等待当前用户主动断开连接。在这个过程中,连接的用户甚至可以建立新的事务。如果以正常方式关闭数据库,在下次启动数据库时不需要进行任何恢复操作。正常关闭方式所耗费的时间完全取决于用户主动断开连接的时间。通常DBA在发布Shutdown normal语句后,会通知所有在线的用户尽快断开连接。(3) shutdown immediate 立即关闭方式(immediate)立即关闭方式能够在尽可能短的时间内关闭数据库。通常如下几种情况下需要使用立即方式来关闭数据库:l 即将启动自动数据备份操作;l 即将发生电力供应中断;l 当数据库本身或某个数据库应用程序发生异常,并且这时无法通知用户主动断开连接,或者用户根本无法执行断开操作。使用带Immediate子句的Shutdown语句将以立即方式关闭数据库。立即方式关闭数据库时,Oracle将执行如下操作:l 阻止任何用户建立新的连接,同时阻止当前连接用户开始任何新的事务;l 任何未提交的事务均被回退;l Oracle不再等待用户主动断开连接,直接关闭、卸载数据库,并终止实例。如果存在太多的未提交事务,立即方式仍然会耗费很长的时间。这时如果需要快速关闭数据库,可以使用Shutdown abort语句。在立即关闭方式下,Oracle不仅会立即中断当前用户的连接,而且会强行终止用户的当前事务,并将未完成的事务回退。与正常方式类似,以立即方式启动数据库后,在下次启动数据库时不需要进行任何恢复操作。(4) shutdown transactional 事务关闭方式(transactional)事务关闭方式介于正常方式与立即方式之间,它能够使用尽可能短的时间关闭数据库,但是能够保证当前所有的活动事务都可以被提交。使用事务方式关闭数据库时,Oracle将等待所有未提交的事务完成后再关闭数据库。使用带有Transactional子句的Shutdown语句将以事务方式关闭数据库。事务关闭方式既能够保证用户不会丢失当前工作的信息,又可以尽可能快地关闭数据库。事务关闭方式也是最常用的数据库关闭方式。以事务方式关闭数据库,下次启动数据库时不需要进行任何恢复操作。事务方式关闭数据库时,Oracle将完成如下操作:l 阻止任何用户建立新的连接,同时阻止当前连接用户开始任何新的事务;l 等待所有未提交的活动事务提交完毕,然后立即断开用户的连接;l 关闭、卸载数据库,并终止实例。(5) shutdown abort 终止关闭方式(ABORT)如果上述三种关闭方式都无法成功关闭数据库,说明数据库产生了严重的错误。这时只能使用终止方式来关闭数据库。终止关闭方式将丢失一部分数据信息,会对数据库的完整性造成损害,需要在下一次启动数据库时进行恢复,因此应当尽量避免使用终止方式来关闭数据库。在如下几种特殊情况中,应当使用终止关闭方式:l 数据库本身或某个数据库应用程序发生异常,并且使用其他关闭方式均无效时;l 出现紧急情况,需要立刻关闭数据库(比如得到通知将在一分钟内发生电力供应中断);l 在启动数据库实例的过程中产生错误。使用带有Abort子句的Shutdown语句将以终止方式关闭数据库。终止方式关闭数据库时,Oracle将执行如下操作:l 阻止任何用户建立新的连接,同时阻止当前连接用户开始任何新的事务;l 立即终止当前正在执行的SQL语句;l 任何未提交的事务均不被回退;l 立即断开所有用户的连接,关闭、卸载数据库,并终止实例。如果以终止方式关闭数据库,由于当前未完成的事务并不会被回退,所以当下次启动数据库时需要进行数据库恢复。
Tags: 

延伸阅读

最新评论

发表评论