ORACLE撤銷表空間(Undo Tablespaces)

edwardking888發表於2010-07-01

撤銷表空間(undo tablespace)是一個特殊的表空間(tablespace),只用於存
儲撤銷資訊(undo information)。使用者不能在其中建立段(segment)(例如
表或索引)。一個資料庫中可以沒有撤銷表空間,也可以包含多個。在自動
撤銷管理模式(automatic undo management mode)下,每個Oracle例項
(instance)有(且僅有)一個撤銷表空間。Oracle在撤銷表空間內自動地創
建和維護撤銷段(undo segment),對撤銷資料(undo data)進行管理。

當事務(transaction)內第一條 DML 語句執行時,系統就為期其在當前撤銷
表空間(undo tablespace)中分配一個撤銷段(undo segment),同時也分配
一個事務表(transaction table)。在極少數情況下,如果例項(instance)中
沒有指定撤銷表空間,那麼事務將使用系統的撤銷段。

警告:
在建立撤銷表空間(undo tablespace),並使之聯機(online)
之前,不要執行任何使用者事務 (transaction)。

撤銷表空間(undo tablespace)由一組撤銷檔案(undo file)構成,且為本地
管理的(locally managed)。與其他表空間(tablespace)的結構類似,撤銷表
空間中也存在由撤銷資料塊(undo block)構成的資料擴充套件(extent),這些
資料擴充套件的狀態由點陣圖(bitmap)表示。在任何時間點上,一個資料擴充套件或
者被分配給一個事務表(transaction table)(被使用狀態),或者處於可用狀
態。

使用者可以建立大檔案撤銷表空間(bigfile undo tablespace)

 

建立撤銷表空間

資料庫管理員可以使用 CREATE UNDO TABLESPACE 語句單獨建立撤銷表
空間(undo tablespace),也可以在使用 CREATE DATABASE 語句建立資料
庫的同時建立撤銷表空間。撤銷表空間也使用一組資料檔案儲存資料。與常
規的表空間一樣,撤銷表空間既可以用 DROP TABLESPACE 語句移除,其屬
性也可以通過 ALTER TABLESPACE 語句修改。

提示:
當撤銷表空間(undo tablespace)正在被例項(instance)使用,
或者包含了事務恢復所需的撤銷資訊(undo information)時,
不能將其移除(drop)。

分配撤銷表空間

使用者可以使用以下兩種方法將撤銷表空間(undo tablespace)分配給一個例項
(instance):
● 在例項啟動時。使用者可以在例項的初始化檔案(initialization file)中指
定一個撤銷表空間,或指定由系統自動選擇一個可用的撤銷表空間。
● 當例項執行時。使用 ALTER SYSTEM SET UNDO_TABLESPACE 將當
前活動的撤銷表空間替換為另一個。這種方式很少使用。

使用者可以使用 ALTER TABLESPACE 語句向撤銷表空間(undo tablespace)添
加資料檔案(datafile),以擴充套件撤銷表空間的容量。

使用者可以建立多個撤銷表空間(undo tablespace),以便切換使用。使用者還可
以設定撤銷資訊(undo information)的儲存週期(retention period)。使用者也
可以使用資料庫資源管理器(Database Resource Manager)為使用者規定撤銷表
空間的使用配額(quota)。

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

相關文章