Oracle的邏輯結構(表空間、段、區間、塊)——表空間

bq_wang發表於2009-02-22
Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONEOracle的邏輯結構(表空間、段、區間、塊)——表空間

 

關於資料庫、表空間和資料檔案的關係

l  一個Oracle資料庫包含一個或多個邏輯儲存單元—表空間,表空間用來儲存資料的所有資料。

l  Oracle資料庫的每一個表空間包含一個或多個資料檔案,資料檔案是一種與Oracle執行作業系統相關的物理結構。

l  資料庫資料儲存在構成資料庫的表空間的資料檔案中。

 

資料庫分配空間的方法

表空間的大小就是構成表空間的資料檔案的大小。而資料庫的大小則是各個表空間大小的累計。

擴大資料庫的三種方法:

l  給表空間增加資料檔案

ALTER TABLESPACE TablespaceName ADD DATAFILE ‘Datafiel path/DatafileName’

l  增加新的表空間

CREATE TABLESPACE TablespaceName DATAFILE ‘Datafiel path/DatafileName’

l  增加資料檔案大小

ALTER DATABASE DATAFILE ' DatafileName ' AUTOEXTEND ON NEXT 20M MAXSIZE 1000M;

表空間概覽

一個資料庫被劃分成一個或多個叫表空間的邏輯儲存單元;一個表空間被分割成一種叫資料段的邏輯單位;一個段又進一步分割為區間。區間則是一系列連續的資料塊。

系統表空間

每一個Oracle資料庫都包含一個SYSTEM表空間,資料建立的時候Oracle自動建立的,資料被開啟時,該系統表空間總是線上的。

為了更好利用本地管理表空間的優點,你可以建立一個本地管理系統表空間或者吧現存的字典管理系統表空間變更為本地管理方式。

在一個本地管理表空間的資料庫環境中,是無法建立字典管理表空間的。在字典管理表空間中使用傳輸特性是可能的,但是卻不能置為可寫的。

在系統表空間中包含了整個資料的資料字典表;和相應的PL/SQL程式單元(儲存過程、函式、包、觸發器等等)

撤銷表空間

撤銷表空間是一個特殊的表空間,僅僅用來儲存撤銷資訊,你不能在撤銷表空間建立任何其他型別的資料段。每一個資料庫都包含0或者多個撤銷表空間。在自動撤銷管理模式下,每一個Oracle例項被分配一個撤銷表空間。撤銷表空間管理撤銷資料,透過Oracle自動建立和維護的撤銷段。

一個事務中的第一條DML操作執行的時候,事務就被繫結到一個當前表空間的撤銷段上

臨時表空間。在極端情況下,假設一個例項沒有撤銷表空間,則事務被繫結到系統撤銷段中。

每一個撤銷表空間有一組撤銷檔案構成,並且基於本地管理的;和其他型別的表空間一樣,撤銷資料塊形成區間,並且以點陣圖的方式展現每個區間的狀態。在某一個時間點上,一個區間要麼被分配給一個事務表,要麼是空閒的

預設臨時表空間

當系統表空間是基於本地管理的時候,則必須在建立資料庫的同時指定一個預設臨時表空間;一個本地管理系統表空間不能被用來作為預設的臨時儲存。

假如系統是字典管理方式,則建立資料庫的時候不需要建立一個預設臨時表空間,系統表空間可以被用來作為預設臨時儲存。當然在alter.log日誌檔案會收到“建立一個預設臨時表空間的建議”

使用多表空間

一個小的資料庫僅僅需要系統表空間,不過Oracle公司建議你至少建立一個表空間來儲存使用者資料,以和資料字典資訊隔離。這將會給帶來更加彈性的系統管理操作,減少資料字典和模式物件在同一資料檔案的爭用。

你可以用多個表空間進行以下任務:

l  控制資料庫資料的磁碟分配

l  給資料庫使用者分配特定的空間配額

l  透過使表空間線上或脫線控制資料的可用性

l  實施資料庫部分備份和恢復操作

l  在跨裝置進行資料儲存分配,以提高系統效能

資料庫管理員可以用表空間來完成以下工作:

l  建立新表空間

l  在表空間中增加資料我呢間

l  設定或更改表空間的段的預設儲存引數設定

l  使表空間只讀或讀寫

l  使表空間成為臨時表空間或永久表空間

l  刪除表空間

管理表空間的空間

表空間以區間為單位分配空間。表空間有兩種方式來進行空閒和已用空間的跟蹤

l  本地管理表空間:由表空間自己進行區間管理

l  字典管理表空間:透過資料字典進行區間管理

本地管理表空間

表空間管理所屬的區間是透過點陣圖方式來維護的,這個點陣圖存在於每一個資料檔案中用來跟中可用或已用資料塊的狀態。點陣圖中的每一位都對應一組資料塊或單一的資料塊。當一個區間被分配或者釋放或者重用時,oracle改變點陣圖值顯示資料塊的最新狀態。這些改變不會產生回滾資訊,因為本身不會改變資料字典中的表。(表空間配額資訊變更等個例除外)

本地管理表空間與字典管理表空間相比有如下優勢:

l  本地管理表空間自動的跟蹤空閒空間,消除了合併可用區間的需要

l  區間的本地管理避免了空間管理操作的遞迴。

多個資料塊大小

系統表空間的資料塊大小是標準資料塊大小。這個是資料庫建立是設定好的。

你可以指定四種資料塊大小。在初始檔案中你給每一種不同大小的資料塊配置相應的緩衝區。這些子緩衝區也可以在例項執行時進行配置。你可以用任何這些塊大小來建立表空間。標準塊大小適用於系統表空間和大多數其他表空間

線上和脫線表空間

資料庫管理員可以使系統表空間之外的任何表空間線上或脫線,甚至資料庫開啟的時候。資料庫開啟的時候,系統表空間總是線上的,這是因為資料字典對Oracle必須是可用的。

表空間通常是線上的,因為這裡麵包含的資料對使用者來說是可用的,資料庫管理可以使表空間脫線主要用來進行備份和恢復。

只讀表空間

只讀表空間的主要目的是為了實施資料庫恢復和備份的需要,Oracle不能更新只讀表空間的資料檔案,因此這些檔案就像CR-ROMWORM驅動器中的只讀媒介一樣。

排序操作使用的臨時表空間

透過為排序指定臨時表空間的方法,您可以更加有效的為排序操作管理空間。這樣有助於有效地消除空間管理操作的序列,這些操作會涉及排序空間的分配和回收。

所有使用排序的操作,例如Joins, index builds, ordering, 分組聚合,收集最佳化統計,都受益於臨時表空間。這種效能的提升在RAC環境下尤為明顯。

資料庫之間的表空間傳輸

傳輸表空間允許你可以把一部分資料從一個資料庫轉移到另外一個相同平臺的資料庫。你也可以透過在資料庫之間複製表空間,克隆一個表空間並移植到另一個資料庫中。

透過傳輸表空間移動資料的速度要比匯出/匯入或解除安裝/載入相同的資料快一個數量級,因為傳輸一個資料檔案僅涉及到資料檔案的複製和表空間後設資料的整合。

 

 

 

 

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

相關文章