資料庫的啟動與停止是極為重要的管理性功能,只能由以管理員權限串連資料庫的使用者使用。
一、初始化參數檔案與伺服器參數檔案
在啟動執行個體時,Oracle 需要讀取初始化參數檔案(initialization parameter file)或伺服器參數檔案(server parameter file)。這兩個檔案中包含了一組供執行個體及資料庫使用的配置參數。在較早的版本中,Oracle 將初始化參數儲存於文字格式設定的初始化參數檔案中。而在最近的版本中,使用者也可以使用二進位格式的伺服器參數檔案(SPFILE)維護初始化參數。
伺服器參數檔案能夠持續地(persistent)儲存系統的初始化參數。在執行個體運行期間對初始化參數所做的修改能夠儲存到伺服器參數檔案中,供下次執行個體啟動 時使用。
初始化參數可以被分為兩部分:基礎(basic)參數與進階(advanced)參數。在大多數情況下,使用者只需調整基礎參數就能保證資料庫正常運行。而在極少數情況下,使用者還需要對進階參數進行調整才能最佳化系統效能。
二、執行個體是如何啟動的
當 Oracle 啟動執行個體時,首先需要從伺服器參數檔案(server parameter file)或初始化參數檔案(initialization parameter file)中讀取初始化參數,之後建立儲存資料庫資訊的共用記憶體區 SGA,最後建立後台進程(background process)。此時,構成執行個體的記憶體區及進程還沒有和資料庫產生聯絡。
管理員可以使執行個體以限制模式(restricted mode)啟動,也可以將當前啟動並執行執行個體切換到限制模式。運行在限制模式下的執行個體只允許具有 RESTRICTED SESSION 系統許可權的使用者串連到資料庫。
在某些特殊情況下,一個執行個體也許不能被正常停止。例如,執行個體的某些進程沒有正常結束。此時,如果使用者按正常程式啟動執行個體,資料庫將返回錯誤。管理員需要在啟動執行個體前手工結束系統中殘留的 Oracle 進程才能解決這個問題。
三、資料庫是如何掛載的
Oracle 將資料庫掛載(mount)到執行個體,以便執行個體和資料庫共同工作。在掛載資料庫時,執行個體首先需要找到並開啟資料庫控制檔案(control file)。控制檔案的名稱及位置資訊記錄在參數檔案的 CONTROL_FILES參數中。接著 Oracle 將讀取控制檔案擷取資料庫的資料檔案(datafile)名及重做記錄檔(redo log file)名。
此時,資料庫還沒有被開啟,只有 DBA 才能訪問資料庫。當資料庫處於掛載狀態時,管理員可以進行維護性的操作。此時資料庫的常規操作都是被禁止的。
1、 RAC 系統中的資料庫是如何掛載的
某些版本的 Oracle 允許多個執行個體同時掛載(mount)同一個資料庫,DBA需要使用 CLUSTER_DATABASE 初始化參數來開啟此項功能。此參數的預設值為 false。而在較早版本的不支援 RAC 的 Oracle 中,此參數只能被設為 false。
如果第一個掛載某資料庫的執行個體的 CLUSTER_DATABASE 參數為 false,那麼只有此執行個體才能夠掛載這個資料庫。而當第一個掛載資料庫的執行個體的 CLUSTER_DATABASE 參數為 true 時,其它 CLUSTER_DATABASE 參數為 true 的執行個體也可以掛載同一個資料庫。掛載同一資料庫的執行個體的數量受一個預設的最大值限制,此值是在建立資料庫時設定的。
2、備用資料庫的掛
備用資料庫(standby database)是一個與主要資料庫(primary database)完全相同的副本,她能在發生災難時保證系統的持續可用性
(availability)。
備用資料庫永遠處於復原模式(recovery mode)。為了構造一個備份資料庫,管理與必須使用 ALTER DATABASE 語句使一個資料庫以備份模式(standby mode)掛載,並將主要資料庫中產生的歸檔重做日誌(archiveredo log)載入到此資料庫中。
使用者可以將一個備份資料庫以唯讀模式(read-only mode)開啟,作為臨時的報表查詢資料庫。備份資料庫不能以可讀寫狀態(read/write mode)開啟。
3、複製資料庫是如何掛載的
複製資料庫(clone database)是專供按時間點恢複(point-in-time recovery)資料表空間功能使用的資料庫副本。當使用者按時間點恢複資料表空間時,需要將複製資料庫掛載(mount)並將其中的資料表空間恢複到期望的時間,之後將複製資料庫中被恢複的資料表空間的中繼資料及資料檔案複製到主要資料庫(primary database)。
四、 資料庫是如何開啟的
將已掛載資料庫(mounted database)開啟(open)就可以使此資料庫正常工作。任何有效使用者都可以串連到一個開啟的資料庫並訪問其中的資訊。通常資料庫是處於開啟狀態的,以便為使用者提供服務。
當管理員開啟資料庫時, Oracle 將開啟所有聯機的資料檔案(datafile及重做記錄檔(redo log file)。如果資料庫上次停止時某個資料表空間處於離線狀態,那麼開啟資料庫時此資料表空間及相關的資料檔案將依舊處於離線狀態。
如果 Oracle 在開啟資料庫時找不到所需的資料檔案或重做記錄檔,系統將返回錯誤資訊。管理員必須從備份中恢複損壞或缺失的檔案後,才能開啟資料庫。