Oracle-解析啟動的全過程

tom_xieym發表於2012-01-12
之前對Oracle也沒有什麼瞭解,只是DBA給我們一個使用者,然後我們連上去就OK,總是搞不明白。今天有空來看看Oracle的啟動過程,還是有很多東西值得我們來仔細研究的:
    Oracle的啟動過程總共分三步:
    1 啟動Oracle的例項;
    2 掛載Oracle資料庫;
    3 開啟資料庫;
    啟動Oracle例項到nomount狀態:
    SQL> startup nomount
    ORACLE 例程已經啟動。
    Total System Global Area  293601280 bytes
    Fixed Size                  1248600 bytes
    Variable Size             109052584 bytes
    Database Buffers          176160768 bytes
    Redo Buffers                7139328 bytes
    SQL>
    在這個情況下,Oracle都做了哪些工作呢:只是去尋找一個叫做spfile,或者是pfile的檔案,然後根據這個檔案去建立例項,分配記憶體;那麼你肯定是要問,那我如何才可以知道我載入的那個檔案呢:
    SQL> show parameter spfile;  NAME                                 TYPE ------------------------------------ ---------------------- VALUE ------------------------------ spfile                               string D:\ORACLE\PRODUCT\10.2.0\DB_1\ DATABASE\SPFILEGJSID.ORA SQL> 看到了吧,Oracle載入的就是在這個目錄下的SPFILE.ora。那pfile和spfile之間有什麼區別呢:pfile其實和spfile是一樣的內容,只不過spfile在檔案頭的時候,有些我也不太明白的東西。
    可以用以下的命令來實現pfile和spfile的轉換:
    SQL> create pfile from spfile;  檔案已建立。  SQL>
    接下來呢,就到了掛載Oracle資料庫的時候:
    SQL> alter database mount;  資料庫已更改。 那這個過程中,Oracle做了哪些工作,其實是根據剛剛spfile裡面的內容來尋找一個叫做控制檔案的東東control file,你能搞明白麼,在Oracle中,共有三個一模一樣的控制檔案,就是為了防止有控制檔案損壞。
    這個時候你可以通過以下的命令來檢視載入的控制檔案:
    SQL> select * from v$controlfile;  STATUS  NAME                                     IS_ BLOCK_SIZE FILE_SIZE_BLKS ------- ---------------------------------------- --- ---------- --------------         D:\ORACLE\DATA\GJSID\CONTROL01.CTL       NO       16384            430         D:\ORACLE\DATA\GJSID\CONTROL02.CTL       NO       16384            430         D:\ORACLE\DATA\GJSID\CONTROL03.CTL       NO       16384            430  SQL> show  parameter control_file;  NAME                                 TYPE        VALUE ------------------------------------ ----------- ------------------------------ control_file_record_keep_time        integer     7 control_files                        string      D:\ORACLE\DATA\GJSID\CONTROL01                                                  .CTL, D:\ORACLE\DATA\GJSID\CON                                                  TROL02.CTL, D:\ORACLE\DATA\GJS                                                  ID\CONTROL03.CTL SQL> 看到了吧,這個時候,控制檔案就載入到系統檢視裡了,在沒有mount之前,v$controlfile裡是沒有內容的。
    開啟資料庫,
    SQL> alter database open;
    這個時候,Oracle會去資料檔案頭和控制檔案頭裡去檢查資料庫版本的一致性,和資料的連續性,檢查SCN - system changing number。
    至此,Oracle就算是啟動完成了。如果其中有報錯的話,可以去檢視在alter_.log. 在其中有比較完整的資訊。
    全當自己學習Oracle的筆記吧。

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

相關文章