Oracle 11g 物理存儲結構

  Oracle 系統的物理存儲結構比較具體和直觀,它用來描述 Oracle 數據在磁盤上的物理組成狀況。Oracle 系統的數據在邏輯上存儲在表空間中,而在物理上存儲在表空間所包含的物理文件(即數據文件)中。數據庫

  Oracle 數據庫的物理存儲結構由多種物理文件組成,主要由數據文件、控制文件、重作日誌文件、歸檔日誌文件、參數文件、口令文件和警告日誌文件等。安全

1、數據文件

  數據文件時用於保存用戶應用程序數據和 Oracle 系統內部數據的文件,這些文件在操做系統中就是普通的系統文件, Oracle 在建立表空間的同時會建立數據文件。Oracle 數據庫在邏輯上由表空間組成,每一個表空間能夠包含一個或多個數據文件,一個數據文件只能隸屬於一個表空間。服務器

  在建立表空的同時,Oracle 會建立該表空間的數據文件。在表空間中建立數據對象(如表、索引、序列等)時,用戶是沒法指定使用哪個數據文件來進行存儲的,只能由 Oracle 系統負責爲數據對象選擇集體的數據文件,並在其中分配物理存儲空間。一個數據對象的數據能夠所有存儲在一個數據文件中,也能夠分佈存儲在一個表空的多個數據文件中。性能

  在讀取數據時,Oracle系統首先從數據文件中讀取數據,並將數據存儲在內存的高數緩衝區中。若是用戶要讀取數據庫的某些數據,而請求的數據又不在內存的高速數據緩衝區中,則須要從相應的數據文件中讀取數據並存儲在緩衝區中。當修改和插入數據時,Oracle 不會當即將數據寫入數據文件,而是把這些數據保存在數據緩衝區中,而後由 Oracle 的後臺進程 DBWR 決定如何將其寫入相應的數據文件。這樣的存取方式減小了磁盤的 I/O 操做,提升了系統的響應性能。spa

  數據文件又能夠分爲3種類型:系統數據文件(system01.dbf 和 sysaux01.dbf )、撤銷數據文件(undotbs01.dbf)和用戶數據文件(users01.dbf、example01.dbf、tbsp_1.dbf和 tbsp_2.dbf)。操作系統

  一、系統數據文件

  用於存放「特殊」 的用戶數據和 Oracle 系統自己的數據,如用戶創建的表名、列名及字段類型等,這些屬於用戶數據範疇,這些數據將存放在系統表空間所包含的數據文件中;而 Oracle 系統內部的數據字典、系統表中所存儲的數據屬於 Oracle 系統的內部數據,這些數據也存放在系統表空間所包含的數據文件中。線程

  二、撤銷數據文件

  撤銷數據文件隸屬於撤銷表空間。若是修改 Oracle 數據庫中的數據,那麼就必須使用撤銷段,撤銷段用來臨時存放修改前的舊數據,而撤銷段一般存放一個單純的撤銷表空間中,這個撤銷表空間所包含的數據文件就是撤銷數據文件。
日誌

  三、用戶數據文件

  用戶數據文件用於存放用戶應用系統的數據,這些數據包括與應用系統有關的全部相關信息。對象

2、控制文件

  控制文件時一個二進制文件,記錄了數據庫的物理結構,其中主要包含數據庫名、數據文件與日誌文件的名字和位置、數據庫創建日期等信息。控制文件通常在 Oracle 系統安裝時或建立數據庫時自動建立,控制文件所存放的路徑由服務器參數文件 spfileorcl.ora 的 control_files 參數值來指定。索引

  因爲控制文件存放有數據文件、日誌文件等的相關信息,所以, Oracle 實例在啓動時必須訪問控制文件。只有控制文件正常,實例才能加載並打開數據庫;但若控制文件中記錄了錯誤的信息,或者實例沒法找到一個可用的控制文件,則實例沒法正常啓動。

  當 Oracle 實例在正常啓動時,系統首先要訪問的初始化參數文件 spfile,而後 Oracle 爲系統全局區(SGA) 分配內存。這時, Oracle 實例處於安裝狀態,而且控制文件處於打開狀態;接下來 Oracle 會自動讀出 「控制文件」 中的全部數據文件和日誌文件的信息,並打開當前數據庫中全部的數據文件和全部的日誌文件以供用戶訪問。

  每一個數據庫至少擁有以供控制文件,以供數據庫能夠同時擁有多個控制文件,可是以供控制文件只能屬於一個數據庫。控制文件內部除了存放數據庫名及其建立日期、數據文件、日誌文件等的相關的信息以外,在系統運行過程當中,還存放系統更改好、檢查點信息及歸檔的當前狀態等信息。

  出於安全考慮,在安裝 Oracle 數據庫或建立數據庫時,Oracle 數據庫系統會自動建立兩個或3個控制文件,每一個控制文件記錄相同的信息。這樣可確保在數據庫運行時,若是某個控制文件損壞, Oracle 會自動使用另一個控制文件,當全部的控制文件都損壞時,系統將沒法工做。

3、日誌文件

  日誌文件的主要功能是記錄對數據所做的修改,對數據庫所做的修改幾乎都記錄在日誌文件中。在出現問題時,能夠經過日誌文件獲得原始數據,從而保障不丟失已有操做成果。 Oracle 的日誌文件包括重作日誌文件(Redo Log File)和歸檔日誌文件(Archive Log File),它們是 Oracle系統的主要文件之一,尤爲是重作日誌文件,它是 Oracle 數據庫系統正常運行所不可或缺的。

  一、重作日誌文件

  重作日誌文件用來記錄數據庫全部發生過的更改信息(修改、添加、刪除等信息)及由 Oracle內部行爲(建立數據表、索引等)而引發的數據庫變化信息。在數據庫恢復時,能夠從該日誌文件中讀取原始記錄。在數據庫運行期間,當用戶執行 commit 命令(數據庫提交命令)時,數據庫首先將每次曹鎖的原始記錄寫入到日誌文件中,寫入日誌文件成功後,才把新的記錄傳遞給應用程序。因此,在日誌文件上能夠隨時讀取原始記錄以恢復某些數據。

  爲了保障數據庫系統的安全,每一個 Oracle 實例都啓用一個日誌線程來記錄數據庫的變化。日誌線程由若干「日誌組」構成,每一個日誌組又由一個或者多個日誌文件構成。

  經過對錶或者整個表空間設定 nologging 屬性時,使基於表空間全部的 DML操做(如建立表、刪除視圖、修改索引等操做)都不會生成日誌信息,這樣就會減小信息的產生。

  Oracle 系統在運行過程當中產生的日誌信息,首先被臨時存放在系統全局區的「重作日誌緩衝區」中,當發出 commit 命令(或日誌緩衝區信息滿1/3)時,LGWR 進程(日誌寫入進程)將日誌信息從「重作日誌緩衝區」 中讀取出來,並將「讀取的日誌信息」 寫入到日誌文件組中序列號較小的文件裏,一個日誌組寫滿後接着寫另一個日誌組。當 LGWR 進程將全部能用的日誌文件都使用過一遍以後,它將再次轉向第一個日誌組從新覆寫。

  二、歸檔日誌文件

  當全部的日誌文件被寫入一遍以後,LGWR 進程將再次轉向第一個日誌組進行從新覆寫,這樣勢必會致使一部分較早的日誌信息覆蓋掉,但 Oracle 經過歸檔日誌文件解決了這個問題。

  Oracle 數據庫能夠運行在兩種模式下,即歸檔模式和非歸檔模式。非歸檔模式是指在系統運行期間,所產生的日誌信息不斷地記錄到日誌文件組中,當全部重作日誌組被寫滿後,又從新從第一個日誌組開始覆寫。歸檔模式是在各個日誌文件都被寫滿而即將被覆蓋以前,先由歸檔進程(ARCH)將即被覆蓋的日誌文件中的日誌信息讀出,並將 「讀出的日誌信息」 寫入到歸檔日誌文件中,而這個過程又被稱爲歸檔操做。

  在歸檔操做進行的過程當中,日誌寫入進程(ARCH)須要等待歸檔進程(ARCH)的結束才能開始覆寫日誌文件,這樣就延遲了系統的響應時間,並且歸檔日誌文件自己又會佔用大量的磁盤空間,這些都會影響系統的總體性能。因此在默認狀況下,Oracle 系統不採用歸檔模式運行。

4、服務器參數文件

5、密碼文件、警告文件和跟蹤文件

相關文章
相關標籤/搜索