如何確定或調整undo表空間的大小

2021-07-05 04:49:15 字數 1179 閱讀 8345

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.檢視回滾段的使用情況,哪個使用者正...