回滾段管理一直是ORACLE數據庫管理的一個難題
回滾段概述
回滾段用於存放數據修改之前的值(包括數據修改之前的位置和值)
回滾段的作用
事務回滾
事務恢復
讀一致性
事務級的讀一致性
ORACLE一般提供SQL語句級(SQL STATEMENT LEVEL)的讀一致性
SET TRANSACTION READ ONLY
或
SET TANNSACTION SERIALIZABLE
以上兩個語句都將在事務開始後提供讀一致性
回滾段的種類
系統回滾段
非系統回滾段
DEFERED回滾段
回滾段的使用
分配回滾段
SET TRANSTRACTION USE ROLLBACK SEGMENT rollback_segment
事務將以順序
例如(兩個事務使用同一個回滾段
回滾段的擴張(EXTEND)
當當前回滾段區的所有塊用完而事務還需要更多的回滾空間時
OPTIMAL參數指明回滾段空閒時收縮到的位置
創建回滾段
語法
CREATE [PUBLIC] ROLLBACK SEGMENT rollback_segment
[TABLESPACE tablespace]
[STORAGE ([INITIAL integer[K|M]] [NEXT integer[K|M]]
[MINEXTENTS integer]
[MAXTENTS {integer|UNLIMITED}]
[OPTIMAL {integer[K|M]|NULL}]) ]
注
回滾段可以在創建時指明PRIVATE或PUBLIC
MINEXTENTS 必須大於等於
PCTINCREASE必須是
OPTIMAL如果要指定
建議
一般情況下
設置OPTIMAL參數來節約空間的使用
不要設置MAXEXTENTS為UNLIMITED
回滾段應創建在一個特定的回滾段表空間內
例
CREATE ROLLBACK SEGMENT rbs
TABLESPACE rbs
STORAGE ( INITIAL
MAXEXTENTS
使回滾段在線
當回滾段創建後
ALTER ROLLBACK SEGMENT rollback_segment ONLINE;
例
ALTER ROLLBACK SEGMENT rbs
為了使回滾段在數據庫啟動時自動在線
ROLLBACK_SEGMENT=(rbs
修改回滾段的存儲參數
可以使用ALTER ROLLBACK SEGMENT命令修改回滾段的存儲參數(包括OPTIMAL
語法
ALTER ROLLBACK SEGMENT rollback_segment
[STORAGE ([NEXT integer[K|M]]
[MINEXTENTS integer]
[MAXEXTENTS {integer|UNLIMITED}]
[OPTIMAL {integer[K|M]|NULL}]) ]
例
ALTER ROLLBACK SEGMENT rbs
回收回滾段的空間
如果指定了回滾段的OPTIMAL參數
語法
ALTER ROLLBACK SEGMENT rollback_segment SHRINK [TO integer [K|M]];
說明
如果不指明TO integer的數值
例
ALTER ROLLBACK SEGMENT rbs
使回滾段離線
為了達到以下兩個目的將要回滾段離線
語法
ALTER ROLLBACK SEGMENT rollback_segment OFFLINE;
例
ALTER ROLLBACK SEGMENT rbs
說明
如果有事務正在使用該回滾段
刪除回滾段
當回滾段不再需要或要重建以改變INITIAL
語法
DROP ROLLBACK SEGMENT rollback_segment;
例
DROP ROLLBACK SEGMENT rbs
查詢回滾段的信息
所用數據字典
可以查詢的信息
From:http://tw.wingwit.com/Article/program/Oracle/201311/16682.html