天天看點

Oracle 資料庫存儲結構

Oracle資料庫存儲結構

by:授客 QQ:1033553122

資料庫存儲結構

Oracle資料庫由實體和邏輯結構組成。實體結構由作業系統可見、可被操作的實體檔案組成,好比存儲資料的資料檔案。邏輯結構主要由包含實體檔案的表空間組成。

Oracle存儲結構

Oracle 資料庫存儲結構

注:Archived Redo

Logs僅在開啟日志歸檔後才有。

關于控制檔案(control file)

每個Oracle資料庫都有一個控制檔案,一個很小的二進制檔案,記錄了資料庫的實體結構,包含:

1)資料庫名字

2)相關資料檔案及重做日志檔案的位置和檔案名

3)資料庫建立的時間戳

4)檢查點資訊

oracle啟動時,會依據參數檔案查找控制檔案,然後根據控制檔案查找資料檔案和日志檔案。

不管什麼時候,隻要資料庫處于打開狀态,控制檔案就必須處于可寫狀态。如果沒有控制檔案,資料庫将不能被加載,并且很難恢複,是以Oracle推薦鏡像多個控制檔案。

關于聯機重做日志檔案(Online Redo Log

Files)

每個Oracle資料庫都有含2個或更多的聯機重做日志檔案。這些聯機重做日志檔案統稱為資料庫的重做日志(redo

log)。聯機重做日志檔案中存放的是重做記錄(redo

record),也稱為重做條目(redo

entry)。重做條目由一組改變向量(change

vector)組成,改變向量是對資料庫中某個資料塊(block)更改的描述(即更改記錄的副本)。例如,你改變了員工表中某個員工的薪資,會生成一個包含改變向量的重做記錄,其中改變向量描述了對員工表資料段的資料塊,undo段的資料塊,事務表undo段的更改。當執行恢複操作時,資料庫讀取重做記錄中的改變向量并應用與相關的資料塊。

如果資料庫出故障,需要恢複已備份的資料據檔案,而最近未備份的,丢失的資料則可通過聯機重做日志檔案擷取。聯機重做日志檔案用于硬體、軟體、或媒體失敗引起的資料庫故障恢複操作。Oracle資料庫可鏡像多個聯機重做,是以可在不同磁盤上維護2個或更多個和聯機重做日志檔案的保持一緻的副本。

聯機重做日志由聯機重做日志檔案組組成。每個檔案組由一個聯機重做日志檔案和它的鏡像副本組成,包含一個組号,比如Group

1。每個彼此完全一緻的副本被看成是檔案組的成員.

下圖顯示了擁有3個聯機重做日志檔案組,每組2個成員的資料庫。對于每個組,為了最大的可用性,每個成員存儲在不同的磁盤。

Oracle 資料庫存儲結構

當事務被送出後,LGWR把事務重做記錄從SGA的重做日志緩沖區寫到重做日志檔案,并為每個被送出事務指定一個系統改變号(system

change number,SCN)來标志重做記錄。僅當指定事務的所有相關重做記錄被安全儲存到聯機重做日志檔案中,LGWR才确認事務被送出了。

事務送出之前,重做記錄也會被寫到某個重做日志檔案中。如果重做日志緩沖區滿了,或另一個事務被送出,LGWR會重新整理重做日志緩沖區中所有重做日志記錄到某個重做日志檔案,即使一些重做記錄還沒被送出。如果有必要,資料庫會復原這些改變。

資料庫日志寫程序(LGWR)采用循環的方式,不停的把日志記錄從記憶體緩沖區寫到重做日志檔案,直到那個組中的日志檔案被寫滿或者有請求日志切換的操作,才會把日志記錄寫到下一個日志組中。如下圖,當再次往某個組中進行寫操作時,會覆寫之前寫入的重做記錄。

Oracle 資料庫存儲結構

被寫滿的重做日志文對于LGWR是否可再利用,取決于歸檔是否開啟:

1)如果歸檔未開啟(資料庫處于NOARCHIVEINGLOG模式),僅當改變記錄被寫入到資料檔案後,被寫滿的重做日志檔案才可再次使用

2)如果已開啟歸檔(資料庫處于ARCHIVELOG模式),

僅當改變記錄被寫入到資料檔案,且被寫滿的重做日志檔案被歸檔後,重做日志檔案才可再次使用

關于歸檔重做日志檔案(archived redo log

file)

當開啟了聯機重做日志檔案歸檔時,oracle資料庫會在它們被覆寫之前,複制聯機重做日志檔案到另一個位置。這個過程就叫做歸檔(archiving),拷貝的這些檔案副本就叫做歸檔重做日志檔案。Oracle強烈推薦開啟歸檔模式。同時,Oracle推薦通過配置把歸檔重做日志檔案寫到快速恢複區(fast

recover area)

每個歸檔重做日志檔案為重做日志檔案組中,其中一個被寫滿的重做日志檔案成員的拷貝,包含唯一的日志序列号.比如,你鏡像了多個重做日志檔案,如果group

1包含了彼此一緻的成員檔案a_log1和b_log1,那麼歸檔程序(ARCn)僅歸檔其中一個成員檔案。如a_log1被損壞,ARCn歸檔與a_log1完全一緻的b_log1.開啟歸檔後,歸檔重做日志将包含了每個組中單個成員檔案的副本

關于資料檔案(data

資料檔案為資料庫中存儲資料的作業系統檔案。其中,臨時檔案(Tempfiles)為僅與臨時表空間(temporary

tablespace)相關的一種特殊的資料檔案。

資料檔案可以被分成以下組成部分:

1)段(Segment)

段包含一種特殊類型的資料庫對象。例如,表段中存放的是資料表,索引段中存放的是索引。一個資料檔案可以包含多個段。

2)擴充區(Extent)

擴充區是段中一組連續的資料塊。oracle資料庫以擴充區為單元,為段配置設定空間。當已有擴充被寫滿時,資料庫為段配置設定另一個擴充區

3)資料塊(Data

block)

資料塊也叫做資料庫塊(database

block),資料存儲最小的I/O單元。一個擴充包含幾個連繼續資料塊。資料庫建立時,資料庫會指定一個預設的塊大小。

資料庫建立後,如果不使用重建資料庫語句,不能改變預設的塊大小。

段,擴充區,資料塊都是邏輯結構。僅oracle資料庫可以決定一個資料檔案可包含多少個資料塊。作業系統僅可識别檔案和作業系統塊。每個oracle資料塊大小為作業系統資料塊大小的倍數。

關于參數檔案

參數檔案是一個包含初始化參數清單及對應參數值的檔案。Oracle支援以下兩種類型的參數檔案:

1)伺服器參數檔案(Server

Parameter File,SPFILE)(推薦使用)

2)初始化參數檔案(Initiallization

Parameter File,PFILE)

啟動instance時,oracle會在基于平台的預設位置下按以下順序查找初始化參數檔案,并讀取參數,來決定資料庫的運作環境設定和資源:

1.SPFILE

2.PFILE

如果SPFILE是由DBCA在OASM磁盤組中建立的,則會在磁盤組中搜尋。

關于密碼檔案(Password

File)

資料庫使用密碼檔案來驗證具有SYSDBA、SYSOPER連接配接權限的管理者使用者。對于以SYSDBA、SYSOPER權限遠端連接配接來說,密碼檔案是必不可少的。密碼檔案于資料庫本身之外,是以可在資料庫還沒啟動之前,對DBA進行驗證。

當使用DBCA建立資料庫時,DBCA會建立一個僅包含一條記錄:“SYS使用者”的密碼檔案。把使用者加入到密碼檔案,自動授予那個使用者SYSDBA權限。

關于備份檔案(Backup

備份檔案為某種形式的資料庫副本,當資料庫丢失資料時,可用于資料庫的恢複操作。

關于表空間(Tablespace)

表空間為資料庫的邏輯存儲單元。每個表空間包含相關的邏輯結構(比如表,視圖,其它資料庫對象)。例如,所有的應用程式對象可以放進一個單獨的表空間,友善維護。

一個表控件由一個或更多個實體資料檔案組成。配置設定給表空間的資料庫對象存放在該表空間的實體資料檔案中。

當建立oracle資料庫時,會自動建立一些表空間,比如SYSTEM,SYSAUX表空間。

表空間提供了定位實體存儲上的資料的一種方法。當你定義包含于某個表空間的資料檔案時,你為這些檔案指定了一個存儲位置。任何配置設定給那個表空間的模式對象(schema

object)位于指定的存儲位置。同時,表空間提供了備份與恢複的一個單元,oracle允許進行表空間級别的備份、恢複。

以下是不同類型的表空間描述 

表空間 描述
EXAMPLE 該表空間包含oracle自帶的示例方案.Oracle文檔和教材包含基于示例模式的示例
SYSTEM 該表空間在資料庫建立時自動建立。用于管理資料庫,包含資料字典(關鍵表和隻讀視圖)及包含資料庫管理資訊的動态表和動态視圖.所有這些都包含于SYS模式,且僅能被SYS使用者或其他帶有必備權限的管理者通路
SYSAUX

這是SYSTEM表空間的一個輔助表空間,包含一些元件和産品,減少SYSTEM表空間的壓力。oracle

10g release 1或更高版本,必須有一個SYSAUX表空間。安裝期間使用SYSAUX作為它們的預設表空間的元件包含自動化工作負載資訊庫(Automatic

Workload Repository),Oracle流(Stream),Oracle文本(Text)和資料庫控制資訊庫(Control

Repository)

TEMP

該表空間存儲處理SQL語句(如查詢排序)時生成的臨時資料。每個資料庫都有一個臨時表空間指作為使用者的臨時表空間.

在預配置的資料庫中,TEMP被指定為預設的臨時表空間。當使用者帳号被建立時,如果沒有指定臨時表空間,那麼oracle會把TEMP表空間指派給使用者

UNDOTBS1

資料庫用于存儲恢複資訊的撤銷表空間(undo

tablespace).

USERS 該表空間用于存儲持久的使用者對象和資料。類似TEMP表空間,每個資料庫都有用于持久的使用者資料一個表空間.否則,使用者對象将建立在SYSTEM表空間(不推薦)。在預配置的資料庫中,USERS被指定為所有建立使用者的預設表空間。

參考連結:

http://docs.oracle.com/cd/E11882_01/server.112/e10897/storage.htm#ADMQS006

http://docs.oracle.com/cd/E11882_01/server.112/e25494/part2.htm#i996730

作者:授客

微信/QQ:1033553122

全國軟體測試QQ交流群:7156436

Git位址:https://gitee.com/ishouke

友情提示:限于時間倉促,文中可能存在錯誤,歡迎指正、評論!

作者五行缺錢,如果覺得文章對您有幫助,請掃描下邊的二維碼打賞作者,金額随意,您的支援将是我繼續創作的源動力,打賞後如有任何疑問,請聯系我!!!

           微信打賞                       

支付寶打賞                  全國軟體測試交流QQ群  

Oracle 資料庫存儲結構
Oracle 資料庫存儲結構
Oracle 資料庫存儲結構