深入理解ORACLE啟動過程

huangdazhu發表於2017-05-02


ORACLE SERVER由例項(Instance)和資料庫(database)組成,而例項是由一組後臺程式和一塊共享記憶體區域(sga)組成,而後臺程式是資料庫和作業系統進行互動的通道,後臺程式的命名由ORACLE_SID決定,ORACLE根據ORACLE_SID來尋找引數檔案啟動例項。資料庫是指儲存在磁碟上的一組物理檔案。

 

ORACLE啟動分3個過程:

NOMOUNT狀態:啟動例項

MOUNT狀態:開啟控制檔案

OPEN狀態:開啟控制檔案中描述的檔案

 

NOMOUNT狀態:

ORACLE需要尋找SPFILE(oracle 10g預設,pfile也可以)檔案,來建立例項和分配記憶體。

 

MOUNT狀態:

在此狀態需要開啟控制檔案,而控制檔案中包含日誌檔案,資料檔案的位置資訊,檢查點資訊等重要資訊。

在ORACLE9i中,丟失口令檔案會報錯,可以透過orapw工具重建。在oracle 10g不會報錯,透過v$pwfile_users檢視查詢。

lk_檔案在資料庫啟動時建立,用於作業系統對資料庫的鎖定。

口令檔案存在$ORACLE_HOME/dbs

 

alter system set controlfile='控制檔案路徑' scope=spfile;

alter system set lock_name_space=orcl  scope=spfile;

 

重建控制檔案:

SQL>startup nomount;

SQL>create controlfile reuse database "orcl" noresetlogs archivelog

maxlogfiles 5

maxlogmembers 3

maxdatafiles 100

maxinstances 1

maxloghistory 1134

logfile

group 3 '/data/app/oracle/oradata/orcl/redo03.log' size 10m,

group 4 '/data/app/oracle/oradata/orcl/redo04.log' size 10m,

group 5 '/data/app/oracle/oradata/orcl/redo05.log' size 10m

datafile

'/data/app/oracle/oradata/orcl/system01.dbf',

'/data/app/oracle/oradata/orcl/undotbs01.dbf',

'/data/app/oracle/oradata/orcl/sysaux01.dbf'

character set zhs16gbk;

 

OPEN狀態

首先會檢查資料檔案頭中檢查點計數與控制檔案中檢查點計數是否一致。其次檢查資料檔案頭的開始SCN和控制檔案中記錄該檔案的結束SCN是否一致,如果控制檔案中結束的SCN等於資料檔案頭中開始的SCN,說明不需要恢復。

 

SQL>show parameter backgroud_dump_dest;

如果資料庫中的某個檔案丟失,那麼在MOUNT階段不會在前臺顯示告警日誌,會記錄在alter_.log中。 

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

相關文章