有關UNDO表空間的學習:

orchidllh發表於2005-04-11

UNDO表空間用於存放UNDO資料,當執行DML操作(insert、update、delete)的時候,oracle會將這些操作的舊資料寫入到UNDO段。

UNDO資料也稱為回滾資料,用於確保資料的一致性。作用包括:
1、回退事務
2、讀一致性
3、事務恢復
4、閃回查詢


9i開始,管理UNDO資料可以使用UNDO表空間,也可以使用回滾段。10g開始,oracle已經放棄使用回滾段。

用於undo管理的引數:
1、UNDO_MANAGEMENT
用於指定undo資料的管理方式。如果使用自動管理,必須設定為AUTO;如果手動管理,必須設定為MANUAL。
使用自動管理的時候,oracle會使用UNDO表空間管理UNDO資料;使用手動管理時,oracle會使用回滾段管理UNDO資料。
如果使用自動管理模式,必須建立UNDO表空間,並且配置UNDO_TABLESPACE引數,否則oracle會使用SYSTEM回滾段存放UNDO紀錄,並在警告日誌中紀錄提示。

2、UNDO_TABLESPACE
用於指定例程所要使用的UNDO表空間。設定的時候,必須保證該表空間存在,否則會導致例程啟動失敗。
使用RAC的時候,因為一個UNDO不能由多個例程同時使用,所以必須為每個例程配置一個獨立的UNDO表空間。

3、UNDO_RETENTION
用於控制UNDO資料的最大保留時間,其預設值為900秒。從9i開始,通過配置該初始化引數,可以指定UNDO資料的保留時間,從而確定閃回查詢可以檢視到的最早時間點。

建立UNDO表空間
1、使用CREATE DATABASE命令建立UNDO表空間
如果使用的是UNDO管理模式,但是沒有指定UNDO TABLESPACE,那麼建立資料庫的時候oracle會自動生成名稱為SYS_UNDOTBS的UNDO表空間。

2、使用CREATE UNDO TABLESPACE 命令建立UNDO表空間
建立資料庫以後,可以使用該命令建立UNDO表空間。

修改UNDO表空間
當事務用盡UNDO表空間後,增加資料檔案:
ALTER TABLESPACE ... ADD DATAFILE;

當UNDO表空間所在磁碟填滿時,移動資料檔案到其他磁碟:
ALTER TABLESPACE ...RENAME DATAFILE;

當在OPEN狀態下移動UNDO表空間時,可以使表空間離線/聯機:
ALTER TABLESPACE ... OFFLINE/ONLINE;

當資料庫處於歸檔模式時,備份UNDO表空間:
ALTER TABLESPACE ... BEGIN BACKUP/END BACKUP

切換UNDO表空間
啟動並開啟oracle資料庫後,同一時刻只能使用一個UNDO表空間。可以切換UNDO表空間:
ALTER SYSTEM SET undo_tablespace=undotbs02;

刪除UNDO表空間
當前使用的UNDO表空間不能被刪除,如果要刪除當前例項使用的UNDO,需要先切換,然後刪除:
DROP TABLESPACE undotbs01;

監控UNDO表空間的使用:
1、確定當前正在使用的undo表空間:
show parameter undo_tablespace
NAME                                 TYPE    VALUE                                
------------------------------------ --------------------------------   ------------------------------       
undo_tablespace                      string    UNDOTBS1       
                          
2、顯示資料庫的所有UNDO表空間:
SQL> select tablespace_name from dba_tablespaces where contents='UNDO';

TABLESPACE_NAME
------------------------------
UNDOTBS1

3、顯示UNDO表空間統計資訊:
SQL> select to_char(begin_time,'hh24:mi:ss') begin_time,to_char(end_time,'hh24:mi:ss') end_time,undoblks from v$undostat where rownum < 4;
BEGIN_TIME                                                                  END_TIME  UNDOBLKS
--------------------------------------------------------------------------- --------------------------------------------------------------------------- ----------
14:52:52                                                                    14:54:56  1
14:42:52                                                                    14:52:52 61
14:32:52                                                                    14:42:52 27

4、顯示UNDO段統計資訊:
使用自動管理模式時,oracle會在UNDO表空間上自動建立10個UNDO段。通過查詢動態效能檢視V$ROLLNAME,可以顯示所有聯機UNDO的名稱;通過查詢動態效能檢視V$ROLLSTAT可以顯示UNDO段的統計資訊。
SQL> select a.name,b.xacts,b.writes,b.extents from v$rollname a,v$rollstat b where a.usn = b.usn;

NAME                                XACTS     WRITES    EXTENTS
------------------------------ ---------- ---------- ----------
SYSTEM                                  0     176730          6
_SYSSMU1$                               0  524055286          6
_SYSSMU2$                               0  555250470          3
_SYSSMU3$                               0 1477369722          6
_SYSSMU4$                               0  281773370          5
_SYSSMU5$                               0  149888652          2
_SYSSMU6$                               0  101947936          2
_SYSSMU7$                               0  158121686          2
_SYSSMU8$                               0  203385052          3
_SYSSMU9$                               0   84385448          3
_SYSSMU10$                              0  426643090          4

xacts用於標示undo段所包含的活動事務個數,writes用於標示undo段上所寫入的位元組數,extents用於標示undo段的區個數。

5、顯示活動事務資訊:
SQL> select a.username,b.name,c.used_ublk from v$session a,v$rollname b,v$transaction c where a.saddr=c.ses_addr and b.usn = c.xidusn;

6、顯示UNDO區資訊:
SQL> select extent_id,bytes,status from dba_undo_extents where segment_name='_SYSSMU10$';

 EXTENT_ID      BYTES STATUS
---------- ---------- ---------
         0      65536 UNEXPIRED
         1      65536 UNEXPIRED
         2    1048576 EXPIRED
         3    1048576 UNEXPIRED
        

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

相關文章