UNDO表空間的管理是Oracle DBA最重要的日常工作之一,UNDO表空間用來暫時存儲DML操作的數據,其主要作用有:
1、事務回滾
2、實例恢復
3、讀一致性
4、閃回
下面是對UNDO表空間的一些操作
1、查看某個實例都有哪些表空間:select tablespace_name, contents from dba_tablespaces where contents = 'UNDO';
我們也可以用show parameter undo_tablespace名稱查看,此命令只能查看當前默認UNDO表空間:
當然,我們也可以查看錶空間及其對應的數據文件:select substr(file_name,1,60) UNDO_FILES from dba_data_files where tablespace_name = 'UNDOTBS1' order by 1;
查看UNDO表空間的大小、可用空間:
select * from (select
a.tablespace_name,
sum(a.bytes)/(1024*1024) total_space_MB,
round(b.free,2) Free_space_MB,
round(b.free/(sum(a.bytes)/(1024*1024))* 100,2) percent_free
from dba_data_files a,
(select tablespace_name,sum(bytes)/(1024*1024) free from dba_free_space
group by tablespace_name) b
where a.tablespace_name = b.tablespace_name(+)
group by a.tablespace_name,b.free)
where tablespace_name = 'UNDOTBS1';
2、創建UNDO表空間:
create undo tablespace undotbs3 datafile '/data1/oradata/undotbs03_1.dbf' size 100M autoextend on next 20M maxsize 500M;
上面命令中,指定UNDO表空間名稱、對應數據文件、初始大小、自動擴展、每次擴展大小、最大擴展到多大
給UNDO表空間增加數據文件:
ALTER TABLESPACE UNDOTBS3 ADD DATAFILE ''/data1/oradata/undotbs03_2.dbf' SIZE 1024M AUTOEXTEND ON NEXT 100M MAXSIZE 2048M;
3、切換默認UNDO表空間:
alter system set undo_tablespace = UNDOTBS3;
4、刪除不用的UNDO表空間:
首先查找都有哪些UNDO表空間及其名字;
然後查找默認UNDO表空間;
之後查找要刪除的UNDO表空間的數據文件;
刪除不用的UNDO表空間:drop tablespace UNDOTBS2;
這還不算完,在數據庫中刪除表空間後,其數據文件還在物理磁盤上存在,需要刪除:
5、我們可以通過dba_undo_extents查看UNDO表空間的狀態:
其中STATUS的狀態有三個:UNEXPIRED、EXPIRED、ACTIVE
ACTIVE說明此時有大量的DML操作在寫UNDO,UNEXPIRED狀態是由ACTIVE狀態的數據轉換過來的,至於UNEXPIRED狀態何時轉換成EXPIRED,這個由當前系統的undo retention決定。
我們也可以通過v$UNDOSTAT來查看詳細的UNDO信息:
SELECT TO_CHAR(BEGIN_TIME, 'MM/DD/YYYY HH24:MI:SS') BEGIN_TIME,TO_CHAR(END_TIME, 'MM/DD/YYYY HH24:MI:SS') ND_TIME,
UNDOTSN, UNDOBLKS, TXNCOUNT, MAXCONCURRENCY AS "MAXCON" FROM v$UNDOSTAT WHERE rownum <= 100;
上面各列中:
BEGIN_TIME表示每條記錄UNDO事務開始的時間
END_TIMEE表示每條記錄UNDO事務結束的時間
上面每條記錄的間隔是10分鐘
UNDOTSN 在這段時間undo事務的數量
UNDOBLKS在這段時間佔用的undo塊的數量
TXNCOUNT事務的總數量
MAXCON這些UNDO事務過程中的最大數據庫連接數
6、更改UNDO RETENTION
alter system set UNDO_RETENTION = 1800;
7、涉及到UNDO表空間的系統表:
V$UNDOSTAT
V$ROLLSTAT
V$TRANSACTION
DBA_UNDO_EXTENTS
WRH$_UNDOSTAT
WRH$_ROLLSTAT
更多精彩Oracle內容 請關注我: