如何計算自動管理的UNDO資料表空間大小
AUTO UNDO
AUM(自動 undo 管理,Automatic Undo Management)幾乎不需要配置。您基本上只需要定義將前映像保持可用的時間量。這是通過參數 UNDO_RETENTION 控制的,以秒為單位定義。因此,值 900 表示 15 分鐘。
一定要意識到,如果 undo 資料表空間中存在空間壓力時,我們不保證前鏡像一定會保留這麼長時間。
因此,以下公式可用於計算最佳 undo 資料表空間大小:
從 Oracle 10g 開始,您可以選擇使用 GUARANTEE 選項,以確保在定義的 undo_retention 時間之前,undo 資訊不會被覆蓋。
UNDO資料表空間大小由三部分組成:
(UR)UNDO_RETENTION 單位秒
(UPS)每秒產生的undo 資料區塊的個數
(DBS)資料庫資料檔案塊的大小DB_BLOCK_SIZE
計算公式
UndoSpace=UR*(UPS*DBS)
其中UNDO_RETENTION 和 DB_BLOCK_SIZE兩部分的資訊可以在執行個體配置參數資訊中擷取。
而第三部分UPS的資訊需要從動態效能試圖V$UNDOSTAT中擷取
下面是擷取(UPS)每秒產生的undo 資料區塊的個數.
SQL> SELECT undoblks/((end_time-begin_time)*86400) "Peak Undo Block Generation"
FROM v$undostat WHERE undoblks=(SELECT MAX(undoblks) FROM v$undostat);
其中列END_TIME and BEGIN_TIME 是日期類型,需要轉換成秒(24 hours * 60 minutes * 60 seconds).
下面的SQL是計算UNDO資料表空間大小
SQL> SELECT (UR * (UPS * DBS)) AS "Bytes"
FROM (SELECT value AS UR FROM v$parameter WHERE name = 'undo_retention'),
(SELECT undoblks/((end_time-begin_time)*86400) AS UPS
FROM v$undostat
WHERE undoblks = (SELECT MAX(undoblks) FROM v$undostat)),
(SELECT block_size AS DBS
FROM dba_tablespaces
WHERE tablespace_name = (SELECT UPPER(value) FROM v$parameter WHERE name = 'undo_tablespace'));
10g 和10g 更高的版本,可以使用下面的查詢:
SQL>SELECT (UR * (UPS * DBS)) AS "Bytes"
FROM (select max(tuned_undoretention) AS UR from v$undostat),
(SELECT undoblks/((end_time-begin_time)*86400) AS UPS
FROM v$undostat
WHERE undoblks = (SELECT MAX(undoblks) FROM v$undostat)),
(SELECT block_size AS DBS
FROM dba_tablespaces
WHERE tablespace_name = (SELECT UPPER(value) FROM v$parameter WHERE name = 'undo_tablespace'));
--------------------------------------------------------------------------------
RMAN備份與恢複之undo資料表空間丟失
關於Oracle 釋放過度使用的undo資料表空間
Oracle undo的一些理解
Oracle undo 鏡像資料探究
Oracle 復原(ROLLBACK)和撤銷(undo)
Linux-6-64下安裝Oracle 12C筆記
在CentOS 6.4下安裝Oracle 11gR2(x64)
Oracle 11gR2 在VMWare虛擬機器中安裝步驟
Debian 下 安裝 Oracle 11g XE R2
--------------------------------------------------------------------------------