UNDO表空間監控說明

2021-09-05 21:27:13 字數 1410 閱讀 1388

在oracle 10g版本中可以使用v$undostat檢視用於監控例項中當前事務使用undo表空間的情況。檢視中的每行列出了每隔十分鐘從例項中收集到的統計資訊。每行都表示了在過去7*24小時裡每隔十分鐘undo表空間的使用情況,事務量和查詢長度等資訊的統計快照。 undo表空間的使用情況會因事務量變化而變化,一般我們在計算時同時參考undo表空間的平均使用情況和峰值使用情況。 以下sql語句用於計算過去7*24小時中undo表空間的平均使用量:

select ur undo_retention,

dbs db_block_size,

((ur * (ups * dbs)) + (dbs * 24)) / 1024 / 1024 as "m_bytes"

from (select value as ur from v$parameter where name = 'undo_retention'),

(select (sum(undoblks) / sum(((end_time - begin_time) * 86400))) ups

from v$undostat),

(select value as dbs from v$parameter where name = 'db_block_size')

以下sql語句則按峰值情況計算undo表空間所需空間:

select ur undo_retention,

dbs db_block_size,

((ur * (ups * dbs)) + (dbs * 24)) / 1024 / 1024 as "m_bytes"

from (select value as ur from v$parameter where name = 'undo_retention'),

(select (undoblks / ((end_time - begin_time) * 86400)) ups

from v$undostat

where undoblks in (select max(undoblks) from v$undostat)),

(select value as dbs from v$parameter where name = 'db_block_size')

需要注意因rac情況下一般存在2個undo表空間,視乎實際情況分別在2個例項中執行以上查詢。 一般來說為了盡可能維護日常業務的正常執行,我們建議按照峰值情況估算和分配undo表空間的大小,雖然這樣存在儲存空間上的浪費,但是可以避免undo表空間不足所帶來的問題。 同時我們也可以使用dba_undo_extents檢視實時監控undo表空間的使用情況:

select sum(bytes / 1024 / 1024), status, tablespace_name

from dba_undo_extents

group by status, tablespace_name;

重建Undo表空間

檢視各表空間名稱 select name from v tablespace 檢視某個表空間資訊 select file name,bytes 1024 1024 from dba data files where tablespace name like undotbs1 檢視回滾段的使用情況,哪...

undo表空間損壞

操作如下 sqlplus as sysdba 繼續執行命令 alter database open 例項終止。強制斷開連線 recover database recover datafile 1 recover datafile 2 系統提示 介質恢復成功 以為恢復成功就,直接,startup fo...

undo表空間縮小

最近執行乙個資料量比較大的儲存過程,造成undo表空間達到16g左右,但是直接採用resize的方式又無法縮小其大 小,因此經網上搜尋,採用了undo表空間重建的方式來縮小去空間大小,具體步驟如下 1 建立備用undo表空間 create undo tablespace newundotbs dat...