oracle的undo資料就是事務中那些被更改,但是沒有被提交的資料。undo資料可以用來提供事務回滾,恢復事務或讀一致性等特性。
undo表空間就是用來儲存undo資料的。undo表空間的大小取決於以下三方面的因素:
1. oracle初始化引數undo_retention
2. 每秒產生的undo資料塊
3. oracle初始化引數db_block_size
unto表空間的大小可以通過1.*2.*3.來計算。其中因素1.和3.是可以通過show parameter 《引數名》來檢視。因素2.可以通過v$undostat來檢視:
sql> select undoblks/((end_time-begin_time)*86400) "peak undo block generation" from v$undostat where undoblks=(select max(undoblks) from v$undostat);
注意:要總體考慮到系統負載較重和較正常的情形,同時要考慮到表空間是否是自動擴充套件的。
當undo表空間增長較快時,要從以下角度考慮進行控制:
1. 如果undo表空間是自動擴充套件的,將自動擴充套件關閉。如果undo表空間自動擴充套件,即使有過期的undo段,它也不會重用,而是選擇增大資料檔案。
alter database datafile '' autoextend off;
2. 對資料檔案進行裁剪;
alter database datafile '' resize ;
3. 減少undo_retention引數值。
設定undo_retention引數值時,參考v$undostat裡maxquerylen(執行時間最長的事務的執行時間)。
select max(maxquerylen) from v$undostat;
4. 建立新的更小的undo表空間:
sql> create undo tablespace undo_tbs1 datafile 'undotbs1.dbf' size 100m;
sql> alter system set undo_tablespace=undo_tbs1;
sql> drop tablespace undo_rbs0 including contents.
如果在刪除以前undo表空間時出現ora-30013錯誤,則需要等待所有事務提交之後,才能刪除以前undo表空間
ORACLE的undo表空間操作
1.檢視undo表空間 select file id,file name,tablespace name,sum bytes 1024 1024 total mb,autoextensible from dba data files group by file name,file id,tables...
undo表空間的作用及ora 01555
undo表空間的作用及ora 01555 下面我們通過dml操作,由淺入深的解讀undo表空間的作用及ora 01555錯誤的產生 一 當我們發出dml語句,update t set col b where col a oracle內部是怎麼執行的呢 1 在shared pool內進行解析,生成執行...
專案中遇到的undo表空間不足的替換
1.查詢資料庫的undo表空間名 select name from v tablespace 2.檢查資料庫undo表空間占用空間情況以及資料檔案存放位置 select file name,bytes 1024 1024 from dba data files 3.檢視回滾段的使用情況,哪個使用者正...