如何估算Oracle資料庫所需的UNDO資料表空間的大小

來源:互聯網
上載者:User

要確定Oracle需要的UNDO 資料表空間的大小,需要以下三條資訊: 

UR      以秒為單位的UNDO_RETENTION
UPS    每秒產生的還原資料區塊的數量
DBS     db_block_size

UndoSpace = [UR * (UPS * DBS)] + (DBS * 24)

UNDO_RETENTION是一個參數,此參數控製為提供讀一致性而保留的還原資料量,以秒為單位定義,可以在初始設定檔案中設定,或使用 ALTER SYSTEM 命令來動態修改。

SQL>ALTER SYSTEM SET UNDO_RETENTION=900;

SQL> show parameter undo_retention

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_retention                       integer     900

如果值為900,則可以使還原資料保留 15 分鐘,當然需要足夠的儲存空間才行。

那麼如何計算每秒產生的還原資料區塊的數量呢,可以通過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

為了獲得滿足業務需要的結果,一般應該在一天中資料庫負載最繁重的時候進行計算。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.