如何估算Oracle数据库所需的UNDO表空间的大小
要確定Oracle需要的UNDO 表空間的大小,需要以下三條信息:?
UR??????以秒為單位的UNDO_RETENTION
UPS????每秒生成的還原數(shù)據(jù)塊的數(shù)量
DBS?????db_block_size
UndoSpace = [UR * (UPS * DBS)] + (DBS * 24)
UNDO_RETENTION是一個參數(shù),此參數(shù)控制為提供讀一致性而保留的還原數(shù)據(jù)量,以秒為單位定義,可以在初始化文件中設(shè)置,或使用 ALTER SYSTEM 命令來動態(tài)修改。
SQL>ALTER SYSTEM SET UNDO_RETENTION=900;
SQL> show parameter undo_retention
NAME?????????????????????????????????TYPE????????VALUE
------------------------------------ ----------- ------------------------------
undo_retention???????????????????????integer?????900
如果值為900,則可以使還原數(shù)據(jù)保留 15 分鐘,當(dāng)然需要足夠的存儲空間才行。
那么如何計算每秒生成的還原數(shù)據(jù)塊的數(shù)量呢,可以通過v$undostat視圖的begin_time、end_time和undoblks三個字段的值查詢出來,計算的SQL語句如下:
SQL> SELECT (UR * (UPS * DBS)) + (DBS * 24) AS "Bytes"
??2??FROM???????(SELECT value AS UR
??3?????????????FROM v$parameter
??4?????????????WHERE name = 'undo_retention'),
??5?????(SELECT (SUM(undoblks)/SUM(((end_time -begin_time)*86400))) AS UPS
??6?????FROM v$undostat),
??7?????(SELECT value AS DBS
??8?????FROM v$parameter
??9?????WHERE name = 'db_block_size');
?????Bytes
----------
445814.844
為了獲得滿足業(yè)務(wù)需要的結(jié)果,一般應(yīng)該在一天中數(shù)據(jù)庫負(fù)載最繁重的時候進行計算。
總結(jié)
以上是生活随笔為你收集整理的如何估算Oracle数据库所需的UNDO表空间的大小的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: goldengate for oracl
- 下一篇: DBMS_SPACE包的使用