一、數據庫的物理結構
:
?
?
???
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)
???
平面文件就是一些沒有格式的數據記錄文件。
???????
?
?
?
-The End-