塗抹ORACLE--第16章--資料庫物理儲存結構(1)

junsansi發表於2010-03-17

塗抹ORACLE試閱章節:第16章-體系結構之資料庫結構

===========================================================================

  對於很多初接觸Oracle的朋友,很容易混淆資料庫的概念。由於通常提到資料庫(D atabase ),閃現在腦海中的第一印象並不是一個物理的概念,而是有著廣泛意義的邏輯概念,如更多的是想到這是軟體的代名詞,又或者想到某個具體的儲存物件。不過,Oracle對於這些相關概念的定義要嚴謹得多。

  嚴格來講,Oracle資料庫包括兩個組成部分,資料庫(Database)只是其中之一,特指儲存資料和相關物件的一系列物理檔案;另一部分是例項(Instance),特指一系列作業系統程式和它管理的記憶體區。

    提示:

    所謂資料庫物理備份,其實備份的就是資料庫的物理檔案。只要擁有完整的物理備份,就可以隨時將資料庫恢復至備份時間點的狀態。

  Oracle 在儲存資料時並不是簡單進行資料堆砌,而是由一整套嚴謹並且高效的邏輯結構來管理物理資料的儲存,因此Oracle資料庫的儲存結構也可以分成兩大類:物理儲存結構和邏輯儲存結構。物理儲存結構對應一系列不同格式、型別、作用的檔案,用來儲存物件及其物理資料;邏輯儲存結構則是Oracle內部儲存、管理資料的方式。

16.1 資料庫物理儲存結構

  資料庫由一系列物理檔案組成,不同的檔案型別在處理資料時承擔著不同任務,有發號施令的(俗稱領導),有老實聽話,讓記啥就記啥的(跟班,又稱祕書),有任勞任怨,誰想用就誰用的(一位楊姓兄弟,暱稱白勞),有盡忠職守埋頭苦幹的(俗稱保鏢)。對號入座的話,分別對應下列型別的檔案:

  • 控制檔案(Control Files);
  • 資料檔案(Datafiles);
  • 臨時檔案(Tempfiles);
  • 重做日誌檔案(Online Redolog Files & Archived Log Files)。

    提示:

    本章中出現的控制檔案、資料檔案與本書第二部分“載入資料”中提到的控制檔案、資料檔案可不是一回事兒喲。第二部分中出現的控制檔案和資料檔案,是指SQL*L oader 及外部表載入時用到的檔案型別,僅只是對應的命令列所使用的檔案的稱謂。而本章中出現的控制檔案和資料檔案,是指整個Oracle資料庫執行過程中,儲存資料庫物理結構及實際資料的檔案型別。

16.1.1 控制檔案(Control Files )

  看到控制兩字就該知道,這類事物一般都處於領導階層,Oracle資料庫的控制檔案雖然個頭不大(最大不超過20000個資料塊),但是地位非凡,這倒正應了那句話:濃縮的都是精華。Oracle資料庫例項啟動後(即啟動到NOMOUNT模式),要通過載入控制檔案確定資料檔案、重做日誌檔案的路徑(進入到MOUNT模式),然後才能開啟資料庫(Finally,OPEN資料庫)。因此,沒有了控制檔案,想順利啟動Oracle資料庫是不可能的。

    提示:

    控制檔案的資料塊大小與當前資料庫的資料塊大小有可能並不相同。在10g版本中,要檢視當前Oracle資料庫中控制檔案的資料塊大小,可以通過V$CONTROLFILE檢視的BLOCK_SIZE列實現,預設情況下應為16K。

  當然,控制檔案中並不是只有資料檔案和重做日誌檔案的路徑(如果僅有這些,這個導字早就被別人領了),還包括資料庫名稱、資料庫建立資訊、表空間資訊、資料檔案狀態、日誌檔案資訊、備份資訊、檢查點資訊等。該檔案不僅在資料庫啟動過程中需要,在Oracle資料庫執行過程中,控制檔案也需要發揮重要作用,如記錄檢查點的相關資訊、歸檔檔案路徑、備份資訊(假如採用RMAN執行備份的話),以及資料庫發生結構修改(流行詞彙形容叫領導班子調整,類似新增刪除表空間、資料檔案、日誌檔案)等操作都需要同步到控制檔案。如果在Oracle資料庫執行過程中,由於某些原因導致控制檔案無法訪問,則資料庫也無法繼續正常工作。

  控制檔案是一個二進位制檔案,不能直接通過文字編輯工具修改,一般這個檔案中的內容都是由Oracle自行維護。一個Oracle資料庫至少要擁有一個控制檔案,鑑於其重要地位(領導嘛),Oracle對其的保護有加,在預設情況下,控制檔案就會有三份冗餘(就是一模一樣的檔案存在三份),這三份檔案的一致性由Oracle自動維護,當然啦,冗餘的數量和冗餘檔案的位置可以由DBA指定,Oracle建議控制檔案至少要有兩份冗餘,並且儲存在不同的磁碟中,以提高該檔案的可用性。

  查詢當前資料庫擁有的控制檔案,最常用的是通過下列兩種方式進行。

  • 通過初始化引數CONTROL_FILES查詢:

    SQL> SHOW PARAMETER CONTROL_FILES;

    NAME                  TYPE        VALUE

    --------------------- ----------- ------------------------------

    control_files         string      F:\ORACLE\ORADATA\JSSBOOK\CONT

                                      ROL01.CTL, F:\ORACLE\ORADATA\J

                                      SSBOOK\CONTROL02.CTL, F:\ORACL

                                      E\ORADATA\JSSBOOK\CONTROL03.CTL
  • 通過動態效能檢視V$CONTROLFILE查詢:

    SQL>  SELECT NAME FROM V$CONTROLFILE;

    NAME

    --------------------------------------------------

    F:\ORACLE\ORADATA\JSSBOOK\CONTROL01.CTL

    F:\ORACLE\ORADATA\JSSBOOK\CONTROL02.CTL

    F:\ORACLE\ORADATA\JSSBOOK\CONTROL03.CTL

=================================================

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

相關文章