Oracle关闭数据库与实例
与数据库的启动相对应,关闭数据库时也是分步骤进行的。在关闭数据库与实例时,需要使用一个具有SYSDBA权限的用户账户连接到Oracle中,然后使用SHUTDOWN语句执行关闭操作。
1 数据库的关闭步骤
与启动数据库实例的3个步骤相同,关闭数据库与实例也可以分为3步:关闭数据,实例卸载数据库,最后终止实例。
当关闭数据库时,Oracle会将日志缓存中的重做日志记录到重做日志文件,并且将数据缓存中被修改的数据写入数据文件,然后再关闭所有的数据文件和重做日志文件。这时数据库的控制文件仍然处于打开状态,但是由于数据库已经处理关闭状态,用户也将无法访问数据库。
关闭数据库后,实例才能够卸载数据库。这时,数据库的控制文件已经被关闭,但是实例仍然存在。
最后是终止实例,实例所拥用的所有后台进程和服务进程都将被终止,内存中的SGA区被回收。
在SQL*Plus中可以使用SHUTDOWN语句关闭数据库,SHUTDOWN语句可以带有不同的子句,以控制数据库关闭的方式,其语法格式如下:
shutdown [normal | transactional | immediate | abort]
2 正常关闭方式(NORMAL)
如果对关闭数据库的时间没有限制,通常会使用正常方式来关闭数据库。使用带有NORMAL子句的SHTUDOWN语句将以正常方式关闭数据库,下面显示了在SQL*Plus中以正常方式关闭过程:
SQL> shutdown normal
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
在正常方式关闭数据库时,Oracle将执行如下操作:
● 阻止任何用户建立新的连接。
● 等待当前所有正在连接的用户主动断开连接,已经连接的用户能够继续当前的操作。
● 一旦所有的用户都断开连接,则立即关闭、卸载数据库,并终止实例。oracle客户端卸载步骤
注 意 | 以正常方式关闭数据库时,Oracle并不会断开当前用户的连接,而是等待当前用户主动断开连接。因此,在使用SHUTDOWN NORMAL语句关闭数据库时,应该通知所有在线的用户尽快断开连接。 |
3 立即关闭方式(IMMEDIATE)
立即方式能够在尽可能短的时间内关闭数据库。以立即方式关闭数据库时,Oracle将执行如下操作:
● 阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务。
● 任何未提交的事务均被回退。
● Oracle不再等待用户主动断开连接,而是直接关闭、卸载数据库,并终止实例。
需要立即方式关闭数据库时,只需要使用带IMMEDIATE子句的SHUTDOWN语句,例如:
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
在立即关闭方式下,Oracle不仅会立即中断当前用户的连接,而且会强行终止用户的当前事务,并将未完成的事务回退。与正常方式类以,以立即方式关闭数据库后,在下次启动数据库时不需要进行任何恢复操作。
注 意 | 如果存在太多未提交事务,立即方式仍然会耗费很长的时间。这时如果需要快速关闭数据库,可以使用SHUTDOWN ABORT语句。 |
4 事务关闭方式(TRANSACTIONAL)
事务方式介于正常关闭方式与立即关闭方式之间,它能够在尽可能短的时间内关闭数据库,但是能够保证当前所有的活动事务都可以被提交。使用事务方式关闭数据库时,Oracle将等待所有未提交的事务完成后再关闭数据库。
使用带有TRANSACIONAL子句的SHUTDOWN语句将以事务方式关闭数据库,例如:
SQL> shutdown transactional
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
事务方式关闭数据库时,Oracle将执行如下操作:
● 阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务。
● 等待所有未提交的活动事务提交完毕,然后立即断开用户的连接。
● 关闭、卸载数据库,并终止实例。
事务关闭方式既能保证用户不会丢失当前工作的信息,又可以尽可能快地关闭数据库。因此,事务关闭数据库方式也是最常用的数据库关闭方式。
5 终止关闭方式(ABORT)
如果上述三种关闭方式都无法关闭数据库,说明数据库产生了严重的错误,这时只能使用终止方式来关闭数据库。终止关闭方式将丢失一部分数据信息,会对数据库的完整性造成损害。因此,如果重新启动实例并打开数据库时,后台进程SMON会执行实例恢复。一般情况下,应当尽量避免使用这种方式来关闭数据库。
使用带有ABORT子句的SHUTDOWN语句可以以终止方式关闭数据库,例如:
SQL> shutdown abort
ORACLE 例程已经关闭。
以终止方式关闭数据库时,Oracle将执行如下操作:
● 阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务。
● 立即终止当前正在执行的SQL语句。
● 任何未提交的事务均不被回退。
● 立即断开所有用户的连接,关闭、卸载数据库,并终止实例。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论