學習Oracle,最好首先了解Oracle的框架。這樣對Oracle有一個整體的認識,有高屋建瓴的作用。
1、物理結構(由控制文件、數據文件、重做日志文件、參數文件、歸檔文件、口令文件組成)
一個數據庫中的數據存儲在磁盤上物理文件,被使用時,調入內存。
其中控制文件、數據文件、重做日志文件、跟蹤文件及警告日志(trace files,alert files)屬於數據庫文件;參數文件(parameter file)口令文件(passWord file)是非數據庫文件
1.1數據文件:存儲數據的文件.數據文件典型地代表了根據他們使用的磁盤空間和數量所決定的一個Oracle數據庫的容積。
由於性能原因,每一種類型的數據放在相應的一個或一系列文件中,將這些文件放在不同的磁盤中。
types: .data dictionary .data .redo data .index .temporary data 等等
1.2控制文件:包含維護和驗證數據庫完整性的必要信息、例如,控制文件用於識別數據文件和重做日志文件,一個數據庫至少需要一個控制文件.
控制文件內容
。數據庫名
。表空間信息
。所有數據文件的名字和位置
。所有redo日志文件的名字和位置
。當前的日志序列號
。檢查點信息
。關於redo日志和歸檔的當前狀態信息
控制文件的使用過程
控制文件把Oracle引導到數據庫文件的其它部分。啟動一個實例時,Oracle 從參數文件中讀取控制文件的名字和位置。安裝數據庫時,Oracle 打開控制文件。最終打開數據庫時,Oracle 從控制文件中讀取數據文件的列表並打開其中的每個文件。
1.3重做日志文件:
含對數據庫所做的更改記錄,這樣萬一出現故障可以啟用數據恢復。一個數據庫至少需要兩個重做日志文件.
1.4 跟蹤文件及警告日志(Trace Files and Alert Files)
在instance 中運行的每一個後台進程都有一個跟蹤文件(trace file)與之相連。Trace file 記載後台進程所遇到的重大事件的信息。
警告日志( Alert Log)是一種特殊的跟蹤文件,每個數據庫都有一個跟蹤文件,同步記載數據庫的消息和錯誤.
1.5參數文件:包括大量影響Oracle數據庫實例功能的設定,如以下設定:
。數據庫控制文件的定位
。Oracle用來緩存從磁盤上讀取的數據的內存數量
。默認的優化程序的選擇和數據庫文件相關,執行兩個重要的功能
1〉為數據庫指出控制文件
2〉為數據庫指出歸檔日志的目標
1.6歸檔文件:是重做日志文件的脫機副本,這些副本可能對於從介質失敗中進行恢復很必要。
1.7口令文件:認證哪些用戶有權限啟動和關閉Oracle例程.
2、邏輯結構(表空間、段、區、塊)
表空間:是數據庫中的基本邏輯結構,一系列數據文件的集合。
段:是對象在數據庫中占用的空間.
區:是為數據一次性預留的一個較大的存儲空間.
塊:Oracle最基本的存儲單位,在建立數據庫的時候指定.
3、內存分配(SGA和PGA)
SGA:是用於存儲數據庫信息的內存區,該信息為數據庫進程所共享。它包含Oracle 服務器的數據和控制信息,它是在Oracle服務器所駐留的計算機的實際內存中得以分配,如果實際內存不夠再往虛擬內存中寫。
PGA:包含單個服務器進程或單個後台進程的數據和控制信息,與幾個進程共享的SGA 正相反,PGA 是只被一個進程使用的區域,PGA 在創建進程時分配,在終止進程時回收.
4、後台進程
包括數據寫進程(Database Writer,DBWR)、日志寫進程(Log Writer,LGWR)、系統監控(System Monitor,SMON)、進程監控(Process Monitor,PMON)、檢查點進程(Checkpoint Process,CKPT)、歸檔進程、服務進程、用戶進程)
數據寫進程:負責將更改的數據從數據庫緩沖區高速緩存寫入數據文件
日志寫進程:將重做日志緩沖區中的更改寫入在線重做日志文件
系統監控:檢查數據庫的一致性如有必要還會在數據庫打開時啟動數據庫的恢復
進程監控:負責在一個Oracle 進程失敗時清理資源
檢查點進程:負責在每當緩沖區高速緩存中的更改永久地記錄在數據庫中時,更新控制文件和數據文件中的數據庫狀態信息。該進程在檢查點出現時,對全部數據文件的標題進行修改,指示該檢查點。在通常的情況下,該任務由LGWR執行。然而,如果檢查點明顯地降低系統性能時,可使CKPT進程運行,將原來由LGWR進程執行的檢查點的工作分離出來,由CKPT進程實現。對於許多應用情況,CKPT進程是不必要的。只有當數據庫有許多數據文件,LGWR在檢查點時明顯地降低性能才使CKPT運行。CKPT進程不將塊寫入磁盤,該工作是由DBWR完成的。 init.ora文件中 CHECKPOINT_PROCESS 參數控制CKPT進程的使能或使不能。缺省時為FALSE,即為使不能。
歸檔進程:在每次日志切換時把已滿的日志組進行備份或歸檔
服務進程:用戶進程服務。
用戶進程:在客戶端,負責將用戶的SQL語句傳遞給服務進程,並從服務器段拿回查詢數據。
5、SCN(System ChangeNumber):
系統改變號,一個由系統內部維護的序列號。當系統需要更新的時候自動增加,他是系統中維持數據的一致性和順序恢復的重要標志。