表空間&資料檔案和控制檔案(zt)

tolywang發表於2007-06-23

資料庫、表空間和資料檔案是緊密相關的,它們的關係如下:

一個Oracle資料庫由一個或多個邏輯儲存單元——表空間構成,表空間儲存著資料庫中所有的資料;


Oracle資料庫中的每個表空間由一個或多個檔案組成,這些檔案就是資料檔案,它們是Oracle所在作業系統上的物理結構。

Oracle資料庫中的所有資料物理的儲存在資料檔案中。

除了普通表空間外,Oracle還有幾種特殊的表空間。系統表空間(SYSTEM表空間)、UNDO表空間(9i以前的回滾表空間)、臨時表空間。

系統表空間中除了儲存資料字典外還儲存所有的儲存過程、函式、包、觸發器和物件。

UNDO表空間用於儲存被DML語句影響的記錄的原始狀態,以便在事務失敗的時候可以進行回滾。

當大的排序操作發生時,排序無法在記憶體中完成,這是會使用臨時表空間。

Oracle推薦使用多個表空間,使用多個表空間的優點:

控制資料庫的磁碟空間分配;

為資料庫使用者指定不同的配額(QUOTA);

透過設定單獨的表空間ONLINE或OFFLINE來控制資料的可用性;

執行部分資料庫的備份和恢復操作;

將資料儲存分佈到多個物理裝置來提高效能。

Oracle支援兩種管理空間方式的表空間:

本地管理表空間(Locally managed tablespace):透過表空間頭部的BITMAP來管理空閒空間。

資料字典管理表空間(Dictionary managed tablespace):透過資料字典中的表來管理空閒空間。

對於本地管理表空間還可以選擇如何管理段內的空閒空間:

AUTO方式:透過BITMAP管理,這種方式又叫做automatic segment-space management。

MANUAL方式:透過FREELISTS來管理。

Oracle為了更好的支援傳輸表空間,Oralce從9i開始支援表空間的BLOCK_SIZE和資料庫的db_block_size的設定不同。

表空間可以設定為ONLINE和OFFLINE,OFFLINE的表空間無法進行訪問。透過對單獨表空間的ONLINE和OFFLINE,可以減少對系統的影響。

表空間可以設定為READ ONLY和READ WRITE兩種狀態,只讀的表空間不可以進行鎖操作,因此甚至可以放到只讀裝置上如CDROM。

資料檔案是作業系統上的物理檔案。一個表空間中包含一個或多個資料檔案。在Oracle9i以後,組成臨時表空間的檔案和普通資料檔案區分開,叫做臨時檔案。

臨時檔案具有以下特性:

臨時檔案總是設定為NOLOGGING模式;

臨時檔案不能設定為READ ONLY;

臨時檔案不能重新命名;

不能透過ALTER DATABASE語句建立臨時檔案;

當建立建立臨時檔案時,Oracle只是分配空間,沒有進行初始化,這樣可以加快建立臨時檔案的速度;

臨時檔案的查詢透過這兩個檢視:V$TEMPFILE和DBA_TEMP_FILES。

控制檔案中儲存著下列資訊:資料庫名稱、資料庫建立的時間、所有資料檔案和重做日誌檔案的名稱和位置、表空間資訊、OFFLINE資料檔案資訊、重做日誌歷史資訊、歸檔日誌檔案資訊、備份集資訊、備份資料檔案和重做日誌檔案資訊、資料檔案複製資訊、當前重做日誌序號和檢查點資訊。

當資料檔案和聯機重做日誌檔案發生變化時,都會將資訊寫道控制檔案中。Oracle記錄這些資訊是為了:

在啟動時,Oracle可以找到並開啟資料檔案和重做日誌檔案;

Oracle可以確定資料庫恢復是否需要或是否可能。

控制檔案還記錄CHECKPOINT資訊,用於在恢復時指定哪些恢復操作是沒有必要的,它們已經寫到資料檔案中了。

由於控制檔案的重要性,因此一定要建立多個控制檔案,並放到不同的物理磁碟上,同時注意對控制檔案的備份。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-84690/,如需轉載,請註明出處,否則將追究法律責任。

相關文章