計算歸檔日誌所需要的磁碟空間

keeptrying發表於2014-03-05

如果Oracle資料庫執行在archivelog模式,當發生日誌切換時,online redo log files將被歸檔。確保磁碟對archive files有足夠的空間是非常重要的,否則,ARCHn 程式不能write就會造成crash

首先,需要確定系統發生log switch的次數,可以使用下面的查詢指令碼進行檢視,注意要將替換為redo log files的實際值(MB)

使用該查詢可以獲得online redo log files的大小:

SQL> select distinct(to_char((bytes/1024/1024),'9990.999')) size_mb from v$log;

SIZE_MB

---------

   10.000

   50.000

注意:

在極少數情況下,會出現一個以上的值,就像上面我的查詢。這是因為有不同sizeredo log,為redo log設定不同size不能獲得益處,我這裡只是測試環境。

指令碼:

column ord     noprint

column date_   heading 'Date'         format A15

column no      heading '#Arch files'  format 9999999

column no_size heading 'Size Mb'      format 9999999

compute avg of no      on report

compute avg of no_size on report

break on report

select MAX(first_time) ord, to_char(first_time,'DD-MON-YYYY') date_,           count(recid) no, count(recid) * no_size  

from v$log_history  

group by to_char(first_time,'DD-MON-YYYY')  

order by ord

/

clear breaks

clear computes

clear columns

注意:

Oracle8開始,增加了檢視v$archived_log,該檢視記錄被歸檔的日誌檔案,這裡也可以使用v$archived_log檢視替代v$log_history

該指令碼的輸出內容顯示系統上每天log switch的檔案數量和大小。如果某天沒有發生log switch,則沒有相應的記錄。

首先需要確定的是每天的log switch數量是否穩定,是否每天差別很大。如果是穩定的,則計算平均數就是每天所需要的磁碟空間。如果變換很大,例如例項每週做一次批量upload,則這必須被考慮進來。

可以分析log switches的數量和相應的磁碟空間大小,是否隨時間增加,這將決定是否要預留更多磁碟空間來滿足將來archive files的增加。

示例一:

資料庫每三天做一次冷備份,備份不包含archive files,但是要保留上一次備份後的archive files。資料庫活動幾乎穩定,redo log files的大小為5MB

指令碼輸出內容如下:

Date            #Arch files  Size Mb

--------------- ----------- --------

...

10-11-2013              5       25

11-11-2013              4       20

12-11-2013              7       35

14-11-2013              3       15

15-11-2013              5       25

16-11-2013              2       10

17-11-2013              6       30

18-11-2013              5       25

...

                ----------- --------

                             5       25

由於log switch數量是穩定的,因此可以用平均數計算:

25MB * 3 days = 75MB

20%           = 15MB

              ------

                90MB

額外附加的20%是允許一個安全限度。

因為我們也要保留上次備份後的archive files,所以:

90MB * 2 = 180MB

示例二:

每週日冷備份資料庫,包括archive logs。每週一有一個批量作業執行大量upload。週二到週五資料庫正常活動,週六幾乎沒有活動。redo log files的大小為1MB

指令碼輸出內容如下:

Date            #Arch files  Size Mb

--------------- ----------- --------

...

13-12-2013             15       15

15-12-2013             12       12     

16-12-2013            275      275

17-12-2013             13       13

18-12-2013             12       12

19-12-2013             11       11

20-12-2013             14       14

21-12-2013              1        1

22-12-2013             11       11

...

                ----------- --------

                            43       43

由於在一週之內archived files數量是不穩定的,所以這次就不能使用平均數計算。沒有一個準確的公式可以計算,但是我們可以把一週的值全部加起來,再加上20%,就可以大致計算出結果。

sum = 338MB

20% = 68MB

------

406MB

整理自My Oracle Support,原文連結:

https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=55615076017035&id=122555.1&_afrWindowMode=0&_adf.ctrl-state=jockzwedd_4

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25744374/viewspace-1101527/,如需轉載,請註明出處,否則將追究法律責任。

相關文章