Oracle 啟動的三個步驟

quanjima發表於2014-11-03


Oracle 資料庫的啟動需要三個步驟,當我們直接輸入Startup進行啟動時,實際上資料庫已經隱含的將三個步驟一起執行。

而實際上,Oracle的啟動過程包括了啟動例程,裝載資料庫,開啟資料庫。每完成一個步驟,資料庫就進入了一個特定的環境,以保證資料庫進入了某種一致性的狀態。

本文即是對這三個步驟中需要開啟的檔案,以及各個步驟執行後的資料庫狀態進行簡單的實驗。我們在每一個步驟執行時,透過alert_orcl.log觀察每個步驟oracle所做的工作

1.啟動例程

每一個啟動的資料庫,至少要對應一個例程。它是由一組邏輯記憶體結構和後臺程式組成的。

當資料庫啟動時,這些記憶體結構和後臺程式得到分配,初始化,和啟動。

oracle資料在這一步驟中,只會讀取引數檔案的內容,只是為例程建立各種邏輯記憶體結構和後臺服務程式。此時資料庫還不能使用資料庫中的任何檔案。

SQL> startup nomount
ORACLE instance started.

Total System Global Area  285212672 bytes
Fixed Size                  1218968 bytes
Variable Size              83887720 bytes
Database Buffers          192937984 bytes
Redo Buffers                7168000 bytes

我們透過人為的移除初始化引數檔案,測試在每一個步驟中都用到了那些檔案:

首先重新命名初始化檔案(資料庫啟動失敗)

:[oracle@myhost dbs]$ mv spfileorcl.ora spfileorcl.ora.bak

SQL> startup nomount
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/app/oracle/product/10.2.0/db_1/dbs/initorcl.ora'

重新命名控制檔案(資料庫啟動沒有受影響):

[oracle@myhost orcl]$ mv control01.ctl control01.ctl.bak
[oracle@myhost orcl]$ mv control02.ctl control02.ctl.bak
[oracle@myhost orcl]$ mv control03.ctl control03.ctl.bak


SQL> startup nomount
ORACLE instance started.

Total System Global Area  285212672 bytes
Fixed Size                  1218968 bytes
Variable Size              83887720 bytes
Database Buffers          192937984 bytes
Redo Buffers                7168000 bytes

2.裝載資料庫

在啟動例項所用到的引數檔案中,記錄了控制檔案的相關位置和儲存資訊。當資料庫在啟動過程中試圖裝載資料庫時,會按照這個路徑找到控制檔案,並開啟。

控制檔案中記錄著資料庫的名稱,資料檔案的位置和名稱等資料庫物理結構方面的資訊。此時資料庫會去讀取這些資訊,但是並不開啟資料檔案,只是為了開啟資料檔案做準備。

在裝載資料庫時,系統不會去開啟資料檔案和重做日誌檔案。此時資料庫仍然處於關閉的狀態。

在這一狀態下,資料庫管理員可以進行如下的操作:

1、對資料庫的資料檔案進行重新命名。

2、維護重做日誌檔案。如新增、刪除日誌檔案或者更改日誌檔案的名字。

3、執行資料庫的完全恢復操作

4、改變資料庫的歸檔

3.開啟資料庫

在開啟資料庫的過程中,例程會根據控制檔案中的資訊找到對應的重做日誌檔案,資料檔案等等。

只要控制檔案中列出的任何一個重做日誌檔案或者資料檔案損壞的話,都無法正常開啟資料庫。只有在開啟資料庫的時候,系統才會真正的去檢視這些檔案是否可用。

此時的資料檔案,日誌檔案都處於開啟狀態,管理員無法對這些檔案進行維護操作。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29913993/viewspace-1318934/,如需轉載,請註明出處,否則將追究法律責任。

相關文章