QMNC
Mon Jun 22 17:46:09 2015
QMNC started with pid=20, OS id=30789
Completed: ALTER DATABASE OPEN
Starting background process CJQ0
Mon Jun 22 17:46:11 2015
CJQ0 started with pid=22, OS id=30806
Mon Jun 22 17:46:18 2015
Shutting down instance (normal)
Shutting down instance: further logons disabled
Stopping background process QMNC
Stopping background process CJQ0
Stopping background process MMNL
Stopping background process MMON
License high water mark = 5
All dispatchers and shared servers shutdown
ALTER DATABASE CLOSE NORMAL
Mon Jun 22 17:46:22 2015
SMON: disabling tx recovery
SMON: disabling cache recovery
Mon Jun 22 17:46:22 2015
Shutting down archive processes
Archiving is disabled
Archive process shutdown avoided: 0 active
Thread 1 closed at log sequence 1279
Successful close of redo thread 1
Completed: ALTER DATABASE CLOSE NORMAL
ALTER DATABASE DISMOUNT
Completed: ALTER DATABASE DISMOUNT
ARCH: Archival disabled due to shutdown: 1090
Shutting down archive processes
Archiving is disabled
Archive process shutdown avoided: 0 active
Mon Jun 22 17:46:23 2015
Stopping background process VKTM:
ARCH: Archival disabled due to shutdown: 1090
Shutting down archive processes
Archiving is disabled
Archive process shutdown avoided: 0 active
Mon Jun 22 17:46:25 2015
Instance shutdown complete
?
?
借鉴《Concept》,一些知识点:
1. 如果用户试图访问一个正在关闭的数据库,会得到错误提示:ORA-01090: shutdown in progress - connection is not permitted.
2. 关闭数据库,必须用SYSOPER或SYSDBA的角色。
3. 关闭数据库,是有超时时间的,如果用户未中断连接,或者交易未完成,超过一小时,则shutdown命令会取消,提示错误:ORA-01013: user requested cancel of current operation.
4. 几种关闭库的参数,
shutdown normal:
默认的关闭参数,需要两个条件:
(1) 执行语句后,不允许新的连接。
(2) 数据库关闭之前,数据库会等待所有已连接用户中断连接。
下一次启动时不需要实例恢复。
shutdown immediate:
使用场景:
(1) 初始化一个自动,无人值守的备份。
(2) 马上就要断电。
(3) 数据库或应用工作不正常,你不能马上联系到用户退出登录或他们无法退出登录。
条件:
(1) 不允许新的连接,不允许新的交易。
(2) 任何未提交的事务会回滚(如果此时有个长交易,未提交,那么不会像这种关闭名称immediate那样迅速地关闭)。
(3) 不会等待已连接用户退出登录。数据库会隐式回滚活动事务,中断连接用户。
下一次启动时不需要实例恢复。
shutdown transactional:
适用于计划停机,允许活动交易处理完成后再停止实例的场景。
条件:
(1) 不允许新的连接,不允许新的交易。
(2) 所有交易完成后,会中断所有和库的连接。
(3) 在这个时间点,关闭实例就像执行了shutdown immediate。
下一次启动时不需要实例恢复。
transactional参数主要会防止用户丢失交易,同时不需要所有用户退出登录。
shutdown abort:
适用场景:
数据库或应用不能正常工作,并且没有其它类型的关闭操作正在进行。
(1) 需要立即关闭数据库(例如,一分钟后电源会被关闭)。
(2) 启动实例时碰到了问题。
条件:
(1) 不允许新的连接,不允许新的交易。
(2) 正在被Oracle处理的客户端SQL语句会被立即中断。
(3) 未提交事务不会回滚。
(4) Oracle不会等待正保持连接的客户端退出登录。数据库会隐式地中断所有连接。
下一次启动时需要进行实例恢复。
总结:
以上四种参数会适合于不同的场景,简单讲,shutdown normal是默认的关闭方式,最完整的关闭方式,缺点是需要被动等待所有交易完成,所有用户退出登录。shutdown immediate只要不存在较长的需要回滚的事务,其关闭时间会快。shutdown transactional会最大限度地保证交易的完成。前三种都不需要实例恢复。shutdown abort则是最暴力的关闭,关闭时间最快,但代价是启动需要实例恢复,因为关闭时存在未回滚未提交的事务。