UNDO表空間用于存放UNDO數(shù)據(jù),當(dāng)執(zhí)行DML操作(insert,、update,、delete)的時候,oracle會將這些操作的舊數(shù)據(jù)寫入到UNDO段,。 UNDO數(shù)據(jù)也稱為回滾數(shù)據(jù),,用于確保數(shù)據(jù)的一致性。作用包括: ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ ☆ 一個undo_segment <<=============>> 多個undo_block ☆ ☆一個undo_segment <<==============>> 多個transaction ☆ ☆一個transaction <<==============>> 一個undo_block ☆ ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ undo管理的參數(shù): 1,、UNDO_MANAGEMENT 用于指定undo數(shù)據(jù)的管理方式。如果使用自動管理,,必須設(shè)置為AUTO,;如果手動管理,必須設(shè)置為MANUAL,。 使用自動管理的時候,,oracle會使用UNDO表空間管理UNDO數(shù)據(jù);使用手動管理時,,oracle會使用回滾段管理UNDO數(shù)據(jù),。 2、UNDO_TABLESPACE 用于指定例程所要使用的UNDO表空間,。設(shè)置的時候,,必須保證該表空間存在,否則會導(dǎo)致例程啟動失敗,。 使用RAC的時候,,因?yàn)橐粋€UNDO不能由多個例程同時使用,,所以必須為每個例程配置一個獨(dú)立的UNDO表空間。 3,、UNDO_RETENTION 用于控制UNDO數(shù)據(jù)的最大保留時間,其默認(rèn)值為900秒,。 即:一個transaction所屬的undo_block,,在undo_tablespace保留最長的時間是900秒。 (必須保存900秒后才能被覆蓋) SQL>Alter system set undo_retention=n; =================================================================== ★UNDO表空間和普通表空間的管理差不多★ 建立UNDO表空間 1,、使用CREATE DATABASE命令建立UNDO表空間 如果使用的是UNDO管理模式,,但是沒有指定UNDO TABLESPACE,那么建立數(shù)據(jù)庫的時候oracle會自動生成名稱為SYS_UNDOTBS的UNDO表空間,。 SQL>create database db01 . . . undo tablespace undo1 datafile '/u01/oradata/undo1db01.dbf' size 20M autoextend on; 2,、使用CREATE UNDO TABLESPACE 命令建立UNDO表空間 建立數(shù)據(jù)庫以后,可以使用該命令建立UNDO表空間,。 SQL>create undo tablespace undo1 datafile '/u01/oradata/undo1db01.dbf' size 20M; 修改UNDO表空間 當(dāng)事務(wù)用盡UNDO表空間后,,增加數(shù)據(jù)文件 SQL>Alter tablespace undotbs add datafile '/u01/oradata/undotbs.dbf' size 30M autoextend on; 切換UNDO表空間 啟動并打開oracle數(shù)據(jù)庫后,同一時刻只能使用一個UNDO表空間,??梢郧袚QUNDO表空間: SQL>ALTER SYSTEM SET undo_tablespace=undotbs02; 刪除UNDO表空間 當(dāng)前使用的UNDO表空間不能被刪除,如果要刪除當(dāng)前實(shí)例使用的UNDO,,需要先切換,,然后刪除: SQL>DROP TABLESPACE undotbs01; =========================================================================== 視圖: v$transaction 當(dāng)前活動的transaction used_ublk 一個transaction用了多少block v$undostat undo 表空間的歷史信息 end_time begin_time undoblks 結(jié)束時間 開始時間 這段時間所需要的undo_block ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ 計(jì)算undo表空間需要的大小 1.transaction一秒鐘所需要的最多塊數(shù) ①select max(undoblks/((end_time - begin_time)*24*3600)) from v$undostat 2.show parameter undo ②參數(shù)undo_retention 3.show parameter block ③參數(shù)db_block_size undo表空間需要的最小空間=①×②×③ |
|