1. 程式人生 > >052-221(新增70題2018)

052-221(新增70題2018)

快速定位 choose form 啟動順序 生產 oracle 找到 oracle db -c

Your database is in the MOUNT state and you execute the following command to open it:
ALTER DATABASE OPEN;
What two actions are performed as a result of this command? (Choose two.)
A. All control files are opened.
B. All redo log files are opened
C. The password file is opened.
D. The parameter file is opened.
E. All online data files are opened.
Answer: BE

ACD明顯錯誤

oracle啟動時:nomount(獲取參數文件)→mount(通過參數文件獲取控制文件目錄)→open(根據控制文件中記錄的數據文件、日誌文件的位置信息、檢查點信息決定是否能啟動數據庫)

Oracle 數據庫啟動順序和在各個階段需要什麽文件_小龍太子_新浪博客

Oracle Server主要是由兩部分組成:Instance (實例)和Database。Instance 是指後臺進程/線程和一塊共享內存區域,

而Database 是指存儲在磁盤上的一組物理文件。

數據庫的啟動

Oracle數據庫的啟動主要包含3個步驟:

  1. 啟動數據庫到nomount狀態;
  2. 啟動數據庫到mount狀態
  3. 啟動數據庫到open狀態。

啟動到不同狀態所需要的文件是各不相同的,了解各個不同狀態的情況有助於我們快速定位錯誤。

啟動數據庫到nomount狀態

再啟動的第一步,Oracle 首先會尋找參數文件(pfile、spfile),然後根據參數文件中的設置,創建實例,分配內存,啟動後臺進程。

在這一步中,只要擁有一個參數文件就可以啟動Instance,在這一步中並不需要其他的任何控制文件或者數據文件的參與。

在創建數據庫時,如果在這一步就出現問題,那麽通常可能是系統配置(內核參數等)存在問題,用戶需要檢查是否分配足夠的系統資源等(SAG,PAG內存,CPU等等)。

Oracle根據參數文件的內容,創建Instance,分配了相應的內存區域,啟動了相應的後臺進程。

觀察警報日誌文件alter-test.log(test 是Instance的 sid),可以看到這一階段的啟動過程,讀取參數文件,應用參數啟動實例,所有在參數文件中定義的非缺省參數都會記錄在警報日誌文件中。

Oracle選擇參數文件的順序

Oracle首先會選擇spfile.ora 文件作為啟動參數文件:如果該文件不存在,Oracle選擇spfile.ora文件;如果兩者都不存在,Oracle將會選擇init.ora 文件;如果以上三個文件都不存在,Oracle將無法創建和啟動Instance。
可以通過show parameter spfile 命令來查看數據庫是否使用了spfile文件,如果value不為Null 則數據庫使用了spfile文件
在使用RMAN (Recovery Manager)時存在更為特殊的情況,Oracle 允許在不存在參數的文件的情況下啟動一個實例,數據庫的db_name會被缺省命名為DUMMY。

啟動到mount狀態

啟動到nomount狀態以後,Oracle就可以從參數文件獲得控制文件的位置信息

(Oracle 缺省會創建3個控制文件,這3個控制文件的內容完全一致,是Oracle為了安全而采用的鏡像手段,在生產環境中,通常應該將3個控制文件存在不同的物理硬盤上,避免因為介質故障而同時損壞3個控制文件):

*.control_files=‘/u01/app/oracle/oradata/test/control01.ctl‘,

‘/u01/app/oracle/oradata/test/control02.ctl‘,

‘/u01/app/oracle/oradata/test/control03.ctl‘

在nomount狀態,可以查詢v$parameter 視圖來查看控制文件信息,這部分信息來自啟動參數文件;當數據庫mount之後,可以查詢v$controlfile視圖獲得關於控制文件的信息,此時這部分信息來自控制文件。

在mount 數據庫過程中,Oracle需要找到控制文件並鎖定控制文件。如果控制文件全部丟失此時就會報出錯誤:

ORA-00205: error in identifying controlfile, check alert log for more info

因為Oracle的3個控制文件內容完全相同,如果只是損失其中1-2個可以復制完好的控制文件,更改為相應的名稱,就可以正常啟動數據庫;如果丟失了所有的控制文件,那麽就需要恢復或重建控制文件來打開數據庫。

了解啟動的各個步驟,也就是在發生問題的時候,快速定位,準確判斷,從而快速解決問題。

在啟動到mount狀態,數據庫必須具備的另外一個重要文件是口令文件,該文件位於$ORACLE_HOME/dbs目錄下的,缺省的名稱為orapw.

口令文件中存放sysdba/sysoper 用戶的名字和口令

[oracle@testoracle dbs]$ strings orapwtest

啟動數據庫open階段

由於控制文件中記錄了數據文件、日誌文件的位置信息、檢查點信息等重要信息,所以在數據庫的open階段,ORACLE可以根據控制文件記錄的這些信息找到這些文件,然後進行檢查點以及完整性檢查。

如果沒有問題數據庫是可以正常啟動的,如果存在不一致或者文件丟失則需要進行恢復。

實際上在數據庫open的過程中,ORACLE進行的檢查包括以下兩項:

第一次檢查數據文件頭中的檢查點計數(Checkpoin cnt)是否和控制文件中的檢查點計數一直,檢查的目的是確認數據文件是來自同一版本,而不是從備份中恢復而來(因為checkpoint Cnt 不會被凍結,會一直被修改)。

如果檢查點計數檢查通過,則數據庫進行第二次檢查。第二次檢查數據文件頭的開始SCN和控制文件記錄的該文件的結束SCN是否一致,如果控制文件中記錄的結束SCN等於數據文件頭的開始SCN,則不需要對那個文件進行恢復。

052-221(新增70題2018)