管理撤消資料表空間
一、撤消資料表空間:用來儲存操作的過程以及被操作的資料,並允許使用者撤消對資料庫所執行的操作。
撤消的目的和作用:
1. 事務的復原
2. 事務的恢複
3. 讀一致性
4. 閃回查詢
撤消資料表空間的參數:
通過SHOW PARAMETER UNDO_命令來查詢撤消有關的參數
1.UNDO_MANAGEMENT 參數
指定資料表空間的管理方式,分為:AUTO(自動管理方式),MANUAL(手動管理方式)
該參數不是動態參數,所以必須通過
ALTER SYSETM SET UNDO_MANAGEMENT=MANUAL SCOPT=SPFILE
重新啟動資料庫後生效
2.UNDO_TABLESPACE參數
指定撤消資料表空間的名稱,使用AUTO時,必須建立一個撤消資料表空間。
只能有一個撤消資料表空間是活動的,
ALTER SYSTEM SET UNDO_TABLESPACE=WOODYUNDOTBS SCOPE=SPFILE
如果指定一個不存在的資料表空間的時候,啟動資料庫的時候將失敗,此時需要將資料庫啟動到MOUNT狀態,然後修改UNDO_TABLESPACE=UNDOTBS SCOPE=SPFILE然後重新啟動即可。
3.UNDO_RETENTION參數
指定已經提交的事務的撤消資料被覆蓋之前保留多長時間。其目的:支援長查詢和閃回查詢。
撤消資料分類:
未提交的撤消資料:仍在支援一個活動的事務,且在使用ROLLBACK語句或執行事務恢複時要使用的撤消資料,不能不覆蓋。
已提交未到期的撤消資料:不需要支援活動的事務,但需要被用來滿足撤消保留時間的撤消資料,能被覆蓋。
到期撤消資料:不需要支援活動的事務,已超過撤消保留時間的撤消資料,能被覆蓋。
查看撤消資料表空間的使用方式。
SELECT BYTES/1024/1024 BYTE,MAXBYTES/1024/1024 MAX FROM
DBA_DATA_FILES WHERE TABLESPACE_NAME=’UNDOTBS’
可以通過V$undostat來查詢最近產生的撤消資料的ORACLE塊數,V$undostat每10分鐘產生一條記錄,最多包含144條記錄。
SELECT TO_CHAR(END_TIME,'HH24:mi:ss') etime,
to_char(begin_time,'hh24:mi:ss') btime,
(end_time-begin_time)*24*60*60 ttime,
undoblks
from v$undostat
二、查詢和監控撤消的有關資訊
視圖 |
作用 |
V$undostat |
包含所有撤消資料表空間的統計資訊, 可用於監控和調整撤消資料表空間的。DBA可以利用該視圖來估算撤消資料表空間的大小, ORACLE利用其完成對撤消資料表空間的自動管理 |
V$rollstat |
包含撤消資料表空間各個撤消段的資訊 |
V$transcation |
包含各個事務所使用的撤消段資訊 |
Dba_undo_extents |
包含撤消資料表空間的每個區所對應的事務的提交時間 |
1. 撤消資料表空間以及資料檔案的資訊
select a.tablespace_name tbs,
a.file_name,a.blocks,a.bytes/1024/1024 bt
,a.maxbytes/1024/1024 max,
a.autoextensible
from dba_data_files a,dba_tablespaces b
where a.tablespace_name=b.tablespace_name
2.撤消段的統計資訊
select a.name,b.xacts,b.writes,b.extents
from v$rollname a ,v$rollstat b
where a.usn=b.usn
實際中可能有如下錯誤:
ORA-30036
表明資料表空間設定過小.