實例啟動模式和關機模式
所以,我知道該實例有 3 種啟動模式可用,即 NOMOUNT、MOUNT 和 OPEN。我想知道的是在 NOMOUNT 模式下,說明實例已啟動但仍未與數據庫關聯,那麼誰啟動了實例?是數據庫本身還是其他東西?
如果我使用該命令
shutdown
,那麼只有實例被關閉還是數據庫也被關閉?提前致謝!
這樣想:
- 數據庫是磁碟上的一組*物理文件。*這是一個完全被動的“東西”。它自己不會“做”任何事情——它只是數據。
- 實例是管理數據庫的軟體/程序(及其記憶體)。這是活躍的部分。它是客戶端連接的對象,是處理 SQL、讀取數據、更新數據、維護事務日誌等的對象。
當您從 開始時
nomount
,您啟動實例(啟動幾個程序,創建記憶體區域),但實際上並沒有去查看數據庫。您將在記憶體中準備好掛載數據庫的內容,或者在該狀態下執行一些您可以執行的維護操作(例如創建數據庫),但僅此而已。此時數據庫完全無法訪問。當你
mount
時,控製文件(包含數據庫文件的描述)被讀取,但數據庫仍然沒有打開。即你不能訪問數據本身。只有您最終
open
數據庫才能開始與數據庫互動。使用 RAC 會稍微複雜一些,但原理是一樣的:數據庫只是一組文件。這些實例允許您與數據庫進行互動。
關機以相反的方向進行。對於正常的非 RAC 關閉,實例會刷新所有尚未保存在數據庫中的記憶體數據,並關閉數據庫文件。客戶端無法再訪問數據。
然後實例解除安裝數據庫,關閉控製文件。在這一點上,你留下的東西與實例幾乎相同
nomount
——一組程序和記憶體實際上並不能做太多事情。最後一步是實際關閉:記憶體區域被釋放回作業系統,程序死亡,這是該實例的結束。
數據庫不做任何事情。實例是系統中唯一的活動部分。
有關更深入的視圖,請參閱Oracle 數據庫實例。它概述了啟動和關閉順序以及其他基本資訊。
Oracle 概念指南中的答案:
在典型的案例中,您手動啟動一個實例,然後掛載並打開數據庫,使其可供使用者使用。您可以使用 SQL*Plus STARTUP 命令、Oracle Enterprise Manager(企業管理器)或 SRVCTL 實用程序來執行這些步驟。
每當打開的數據庫持續關閉時,Oracle 數據庫都會自動執行以下步驟:
- 數據庫已關閉 數據庫已掛載,但線上數據文件和重做日誌文件已關閉。
- Database unmounted 實例已啟動,但不再與數據庫的控製文件關聯。
- 數據庫實例關閉 數據庫實例不再啟動。