數據庫結構(三).物理結構
?
?
一、數據庫的物理結構:
?
1.數據文件(data file)?
??? 每個數據庫有一個或多個數據文件,數據文件包含了全部數據庫的數據。邏輯數據庫結構(如表、索引、數據字典)都存儲在數據文件中。在存取數據時,Oracle先從數據文件中讀取數據到內存的數據緩沖區中,這樣的存取方式減少了磁盤I/O操作,提高了相應性能。數據文件一旦建立后就不能改變大小,只能增加。
?
??? 數據文件系統機制包括:
??? ①“Cooked”操作系統(OS)文件系統
??? ②原始分區(raw partitions)
??? ③自動存儲系統(Automatic Storage Management,ASM)
??? ④集群文件系統(RAC)
??? 本地管理的表空間:
??? 8.1.5版本之后使用本地管理表空間(local-managed tablespace)。它的優點是:無需數據字典,僅對每個數據文件中存儲的一個位圖來管理區段。目前版本已無法建立dictionary tablespace
?
2.控制文件(control file)?
??? 控制文件是一個很小的二進制文件,用于描述數據庫的物理結構。包括:①數據庫名;②數據庫數據文件和日志文件的名字和位置;③數據庫建立日期。
?
??? 一般在安裝Oracle時自動創建,其存放位置由參數文件SPFILEsid.ora的CONTROL_FILES參數值來確定。數據庫在使用的過程中會不斷更新控制文件。如果該文件損壞,則數據庫將無法正常工作。
?
??? Oracle10g默認安裝了3個控制文件,每個文件內容相同,當某個文件損壞時,Oracle會自動使用另一個,以確保數據庫正常運行。
??? 可查詢V$CONTROLFILE來獲得控制文件信息。
?
3.重做日志文件(redo log file)?
??? 重做日志文件用于記錄對數據庫的修改信息,包括數據的修改以及數據庫結構的修改。查詢信息不會被記錄在日志中。為了防止日志文件本身的故障,ORACLE允許鏡象日志(mirrored redo log),以致可在不同磁盤上維護兩個或多個日志副本。日志文件中的信息僅在系統故障或介質故障恢復數據庫時使用,這些故障阻止將數據庫數據寫入到數據庫的數據文件。然而任何丟失的數據在下一次數據庫打開時,ORACLE自動地應用日志文件中的信息來恢復數據庫數據文件。
?
??? 日志工作過程中,多個日志是循環使用的,即一個日志文件組被填滿后,系統自動轉換到另一個日志文件組。當所有日志文件組都被填滿后,系統會將日志信息寫入到第一個日志組中,這時有兩個模式:歸檔模式(Archivelog)和非歸檔模式(NoArchivelog),當運行在歸檔模式時,系統將啟用ARCH進程將要被覆蓋的日志保存到磁盤上形成歸檔日志。若使用非歸檔模式,則會覆蓋被寫入的文檔。
?
??? 查詢數據庫的日志組情況:select group#,bytes,members,status from v$log;
?
??? 查詢數據庫的日志歸檔模式:select log_mode from v_database;
?
4.臨時文件(temp file)?
??? Oracle的臨時文件用來存儲大規模排序和散列操作的中間結果。如果RMAN中沒有足夠的空間,還會用臨時文件存儲全局臨時表數據,或者結果集數據。
?
??? 注意:
??? 1.永久表和索引等不會存儲在臨時文件中,但是臨時表及其索引的內容要存儲在臨時文件。
??? 2.臨時文件不生成redo log,無法重做
??? 3.不需要備份臨時數據文件,因為無法恢復
?
5.密碼文件(password file)?
??? 密碼文件是一個可選文件,允許遠程SYSDBA或管理員訪問數據庫。具體操作比較復雜。
?
?
?
二、實例的物理結構 :
?
1.參數文件(parameter file)?
??? 參數文件記錄了Oracle數據庫的基本參數信息,主要包括:數據庫名、控制文件路徑、進程等。
??? 以前的參數文件名為init.ora,所以又叫init文件,但是在Oracle10g中,參數文件名為SPFILEsid.ora,其參數由Oracle系統自動管理。SPFILE的改進主要消除了參數文件的兩個嚴重問題:
?
??? 1.由于只能放在數據庫服務器上,不能放在客戶機上,所以杜絕參數文件的繁衍。
??? 2.可使用ALTER SYSTEM命令直接寫入參數值,無需使用編輯器進行編輯。(用戶最好不要用編輯器進行修改)
??? 注:取消參數設置:alter system reset sort_area_size scope=spfile sid='*'
?
2.跟蹤文件(trace file)?
??? 跟蹤文件能夠提供調試信息,需要設置參數SQL_TRACE=TRUE
??? 數據庫的測量性可以使用以下方法:
??? 1.V$動態視圖:例如V$WAITSTAT、V$SESSION_EVENT等,均可反映系統動作
??? 2.審計命令:例如DBMS_FGA等,可對某個表進行顆粒審計檢測
??? 3.資源管理器:DBMS_RESOURCE_MANAGER,對數據庫資源(CPU、I/O等)實現微管理
??? 4.Oracle事件:跟蹤診斷,在之前文章中已經詳細介紹過
??? 5.DBMS_TRACE:PL/SQL引擎中的工具,全面記錄調用樹、產生的異常、遇到的錯誤等
??? 6.觸發器:不用介紹了
??? 7.SQL_TRACE:即10046事件
?
3.警告文件(alert file)?
??? 警告文件就是數據庫的日記,是一個簡單的文本文件。記載了從數據庫創建到完結之間的所有包括日志開關、內部錯誤、表空間創建、離線及恢復等等的所有操作信息。
?
?
三、其他物理結構:
?
1.修改跟蹤文件(change tracking file)?
??? 修改跟蹤文件是Oracle10g新增的一個可選文件,唯一的目的是跟蹤上一個增量備份以來那些塊已經修改。這樣RMAN就只需要備份發生變化的塊,而不必讀取整個數據庫。如果打開跟蹤功能,數據庫的任何改變都會被自動寫入到這個文件中。但是這回消耗系統的資源。
?
??? 可使用以下命令打開:alter database enable block change tracking;
?
2.閃回日志文件(flashback log file)?
??? 這也是Oracle10g的新增功能。引入Flash Back命令是為了加快原來很慢的時間點數據庫恢復(point in time database recovery)過程。具體內容參考詳細資料。
?
3.轉儲文件(dump/DMP file)?
??? 使用導出工具創建的獨立的DMP文件,其中包括了所有必要的元數據(create和alter語句形式),可能還有數據本身,可以用于重新創建表、模式、甚至整個數據庫。而導入工具的作用就是讀取這些DMP文件,執行其DDL語句,并加載其數據。
?
4.數據泵文件(Data Pump file)?
??? 主要是被外部表和新的導入、導出工具(IMPDP/EXPDP)使用。只有10g之后的版本有這種功能。
?
5.平面文件(flat file)?
??? 平面文件就是一些沒有格式的數據記錄文件。
?
?