oracle的undo資料就是事務中那些被更改,但是沒有被提交的資料。undo資料可以用來提供事務回滾,恢復事務或讀一致性等特性。undo表空間就是用來儲存undo資料的。
undo表空間的大小取決於以下三方面的因素:
1. oracle初始化引數undo_retention
undo_retention值表示乙個undo資料塊最久能在undo表空間中停留的時間,單位是秒,預設值為900。undo表空間資源是迴圈使用的,在undo_retention時間內,undo資料塊的內容是不會被釋放掉,即不會被新的undo資料覆蓋。所以設定停留時間越久,undo表空間就越大。
2. 每秒產生的undo資料塊
工作量很大,業務量大,事務很多時,每秒鐘所產生undo資料塊的個數越多,需要的undo表空間越大。
select begin_time, end_time, undoblksfrom v$undostat;
begin_time end_teme undoblks
28-sep-o8 13:43:02 28-sep-o8 13:44:18 19
28-sep-o8 13:33:02 28-sep-o8 13:43:18 1474
28-sep-o8 13:23:02 28-sep-o8 13:33:18 1347
28-sep-o8 13:13:02 28-sep-o8 13:23:18 16 28
此語句記錄了undo資料塊的歷史使用情況,每隔10分鐘刷一次。此結果表示記錄前40分鐘分別用到undo資料塊19個、1474個、1347個、1628個;
select addr,used_ublk from v$transaction;
addr used_ublk
5932f4a0 863
此語句可以檢視當前事務所需要資料塊的個數,此結果表示,當前使用者只有乙個事務正在執行,此事務需要863個undo資料塊。
事務越多,操作影響資料越多,需要的undo資料塊也越多。
3. oracle初始化引數db_block_size
如何計算所需undo表空間的大小:
1. 計算業務高峰期每秒產生undo資料塊的個數:
sql> select max(undoblks / ((end_time - begin_time)*24*3600)) from v$undostat;
2. 得到undo資料塊在undo表空間中可以保留的最長時間
show parameter undo_retention
3.得到資料塊大小
show parameter db_block;
將以上三者的資料相乘就是所需undo表空間的大小數。
當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表空間
發現undo表空間不夠的時候,增加undo表空間的大小,執行語句如下:
alter tablespace undotbs add datafile '/u01/oradata/undotbs2.dbf' size 700m autoextend on;
ora-01555查詢失敗,其他事務產生的undo資料覆蓋了undo表空間中查詢需要的old資料塊。
刪除undo tablespace實驗:
sql> create undo tablespace undotbs2
datafile '/opt/oradata/oradata/orcl/undotbs02.dbf' size 100m
autoextend off;
tablespace created.
sql> show parameter undo
nametype value
undo_management string auto
undo_retention integer 10800
undo_suppress_errorsboolean false
undo_tablespace string undotbs1
sql> alter system set undo_tablespace=undotbs2 scope=both;
system altered.
sql> show parameter undo
nametype value
undo_management string auto
undo_retention integer 10800
undo_suppress_errors boolean false
undo_tablespace string undotbs2
sql> select segment_name ,tablespace_name ,segment_id from dba_rollback_segs;
segment_name tablespace_name segment_id
system system0
_syssmu1$ undotbs11
_syssmu2$ undotbs12
_syssmu3$ undotbs13
_syssmu4$ undotbs14
_syssmu5$ undotbs15
_syssmu6$ undotbs16
_syssmu7$ undotbs17
_syssmu8$ undotbs18
_syssmu9$ undotbs19
_syssmu10$ undotbs110
segment_name tablespace_name segment_id
_syssmu11$ undotbs211
_syssmu12$ undotbs212
_syssmu13$ undotbs213
_syssmu14$ undotbs214
_syssmu15$ undotbs215
_syssmu16$ undotbs216
_syssmu17$ undotbs217
_syssmu18$ undotbs218
_syssmu19$ undotbs219
_syssmu20$ undotbs220
21 rows selected.
sql> select usn,status,xacts from v$rollstat;
usn status xacts
0 online 0
10 pending offline 1
11 online 0
12 online 0
13 online 0
14 online 0
15 online 0
16 online 0
17 online 0
18 online 0
19 online 1
usn status xacts
20 online 0
12 rows selected.
發現原undotbs1的回滾段處於pending offline狀態,並有乙個事物存在,需要等到事務完成後,才能drop undotbs1
sql> select usn,status,xacts from v$rollstat;
usn status xacts
0 online 0
10 pending offline 0
11 online 0
12 online 0
13 online 0
14 online 0
15 online 0
16 online 0
17 online 0
18 online 0
19 online 1
usn status xacts
20 online 0
12 rows selected.
sql> select usn,status,xacts from v$rollstat;
usn status xacts
0 online 0
11 online 0
12 online 0
13 online 0
14 online 0
15 online 0
16 online 0
17 online 0
18 online 0
19 online 1
20 online 0
11 rows selected.
sql> drop tablespace undotbs1 including contents and datafiles;
tablespace dropped.
UNDO和REDO表空間區別
弄懂幾個概念 redo是重做日誌檔案,是oracle資料庫的日誌檔案.oracle的重做日誌有兩種 重做日誌以及歸檔重做日誌。重做日誌 主要用於由於資料庫主機掉電等原因導致例項失敗,此時oracle採用 重做日誌在資料庫啟動時將資料庫恢復到歸檔重做日誌 主要用於介質失敗,比如 磁碟受損。此時需要使用...
關於大小調的知識
大小調對應是說每個大調都有自己的乙個對應小調,就像乙個老公有乙個老婆一樣,比如c大調和a小調,這兩個調叫關係大小調,也叫平行調,調號相同,把大調向下推乙個小三度就是它的關係小調,具體所有24個調對應如下 前面是大調,後面是小調 c a d b e c f d g e a f b g 降b g 降a ...
關於唯美溫馨的空間說說
篇一 很火的唯美空間說說 很火的唯美空間說說 一 你所浪費的今天,是昨天死去的人奢望的明天 你所厭惡的現在,是未來的你回不去的曾經。哈佛大學圖書館管訓 二 所謂心事,不過是不如己意,那就是我,執著於自己描畫的理想,一有落差,即生煩惱。三 做不到是你自己的事,午夜夢回,你愛怎麼回味就怎麼回味,但人前人...