• 【体系结构】Oracle 11g实例和数据库关闭过程详解


    实例和数据库关闭概览

    通常情况下,当执行一些维护或其他管理任务时,将会关闭数据库,使其不可访问。可以使用SQL*Plus的shutdown命令,或者OEM来进行数据库的关闭。下图展示了实例和数据库的关闭顺序:

    说明:
    • 关闭数据库:数据库处于mounted状态,但是在线数据文件和在线重做日志文件被关闭;
    • 卸载数据库:实例处于started状态,但是不再与数据库的控制文件相关联;
    • 数据库实例关闭:数据库实例不再处于started状态,即实例关闭。
    注:在实例故障或者shutdown abort时,Oracle数据库不会进行上面的这些过程,它会立即终止实例。

    关闭模式

    下图总结了不同的关闭模式对应的数据库行为:

    SHUTDOWN语句如下:
    • Shutdown abort
    该模式用于紧急情况,例如不能用其它模式关闭,该模式的关闭最快。但是,由于必须执行实例恢复以使数据文件保持一致,因此该数据库的后续打开可能要花费更长时间;
    • Shutdown immediate
    该模式的关闭速度仅次于shutdown abort,Oracle数据库终止任何正在执行的SQL语句并断开用户连接,活动的事务被终止,未提交的更改被回滚;
    • Shutdown transaction
    该模式防止用户启动新的事务,但在关闭之前需要等待所有当前事务完成,根据当前事务的特点,该模式可能花费很长时间;
    • Shutdown normal
    该模式是关闭的默认模式,数据库在关闭之前等待所有连接的用户断开连接。

    如何关闭数据库?

    数据库的关闭操作隐含在数据库关闭(shutdown)中,该操作取决于数据库是正常关闭还是异常关闭。
    1、正常关闭期间,数据库如何关闭?
    当数据库以除abort之外的任何选项关闭时,Oracle数据库将SGA中的数据写入数据文件和在线重做日志文件,接下来,数据库关闭在线数据文件和在线重做日志文件。离线表空间的任何离线数据文件已经关闭,当数据库重新打开时,离线的表空间仍然处于离线状态。
    在这个阶段,数据库是关闭的,无法进行正常操作,数据库关闭后,控制文件仍然是打开的。
    2、异常关闭期间,数据库如何关闭?
    如果shutdown abort或者异常终止发生,则处于打开状态的数据库的实例关闭并立即关闭数据库。Oracle数据库不会将SGA的缓冲区的数据写入到数据文件和重做日志文件,随后重新打开数据库时需要进行实例恢复,Oracle数据库会自动执行该操作。

    如何卸载数据库?

    数据库关闭后,Oracle数据库卸载数据库,将其与实例分离。在数据库卸载后,Oracle数据库关闭数据库的控制文件,此时,实例仍然留在内存中。

    如何关闭实例?

    数据库关闭的最后一步是关闭实例,当数据库实例关闭时,SGA将从内存移除,后台进程被终止。
    注:在非正常情况下,实例可能不会被干净的关闭。内存结构可能不会从内存中移除,或者某个后台进程可能不会被终止。当先前实例的残留内存或进程存在时,随后的实例启动可能会失败,在这种情况下,需要强制新实例启动,或者通过在SQL*Plus或使用OEM中执行shutdown abort语句。

  • 相关阅读:
    Flink入门(五)——DataSet Api编程指南
    不仅仅是双11大屏—Flink应用场景介绍
    Kafka2.4发布——新特性介绍(附Java Api Demo代码)
    Vmvare扩展虚拟机磁盘大小
    Ambari2.7.3.0添加组件
    Flink入门(四)——编程模型
    Flink入门(三)——环境与部署
    Flink入门(二)——Flink架构介绍
    「漏洞预警」Apache Flink 任意 Jar 包上传导致远程代码执行漏洞复现
    直击面试,聊聊 GC 机制
  • 原文地址:https://www.cnblogs.com/alen-liu-sz/p/12975653.html
Copyright © 2020-2023  润新知