我正在阅读 Oracle 12c 概念手册。然后我意识到有些事情不是“技术上”解释的。以下是第 13.2.2.2 段的摘录:
当数据库作为 SHUTDOWN 的一部分使用 ABORT 以外的任何选项关闭时,Oracle 数据库将 SGA 中的数据写入数据文件和联机重做日志文件。接下来,数据库关闭联机数据文件和联机重做日志文件…… 数据库关闭后,Oracle 数据库卸载数据库以解除其与实例的关联。
从技术上讲,我不明白上面以粗体显示的那两个句子会发生什么。有任何想法吗?
我不知道整个过程,但我相信当文件关闭时,操作系统或程序会将其从 RAM 中删除。我不能将其与上面的粗体句子完全一致。
它有助于理解“挂载模式”的含义:
在 DB 挂载之前,实例启动(SGA 和其他内存结构已分配,但 DB 及其文件等尚未验证。在挂载模式下,将读取控制文件,它将确保所有日志文件/数据文件等可用,并且准备就绪。这是必不可少的维护。然后,在挂载之后,您打开数据库,在此期间数据库将进行额外的检查,包括查看是否需要任何恢复。完成这些后,数据库就可以使用了。
因此,在关闭期间,一旦发出关闭命令,Oracle 将开始按特定顺序停止进程。然后它将修改数据刷新到表中,更新列使用指标、一堆内部表、审计等。
然后 DB 卸载,即与装载相反,它检查挂起的磁盘操作,完成它们然后开始关闭文件,告诉 ASM 将磁盘组与该实例分离。在此之后,归档过程,logwriter 停止。
因此,当文件头被更新时,控制文件被更新并且文件 io 停止,数据库被卸载。剩下的就是内存结构。一旦它们被销毁,数据库实例就会完全关闭。
我相当确定有人可以为您提供更多详细信息,但这应该对您有所帮助。