日誌的塊大小

不一樣的天空w發表於2017-02-19

初始化引數LOG_BUFFER決定了Redo Log Buffer的大小,雖然LOG_BUFFER中的Redo Entries的大小是以bytes為單位但是LGWR仍然以Block為單位把Redo寫入磁碟Redo Block Size是Oracle原始碼中固定的,與作業系統相關

通常的作業系統都是以512bytes為單位,如Solaris、AIX、Windows NT/2000、Linux等。這個Log Size可以從Oracle的內部檢視中獲得:

sys@TQGZS> select max(lebsz) from x$kccle;
MAX(LEBSZ)
----------
       512

也可以從v$sysstat中的統計資訊中透過計算粗略得到,如Redo Size(Redo資訊的大小)、Redo Wastage(浪費的Redo的大小)、Redo Blocks Written(LGWR寫出的Redo Block的數量)等額外的資訊,每個Redo Block Header需要佔用16 Bytes,由此可以粗略地計算Redo Block Size如下:

sys@TQGZS> select name,value from v$sysstat                                
  2  where name in ('redo size','redo wastage','redo blocks written');
NAME                                            VALUE
---------------------------------------- ------------
redo size                                    13253016
redo wastage                                   225776
redo blocks written                             27416
sys@TQGZS> select ceil(16+(13253016+225776)/27416) rbsize from dual;
    RBSIZE
----------
       508

在Linux/UNIX下,Oracle還提供另外一個命令列工具可以用於檢查檔案的Block Size大小:

[oracle@tqgzs: ~/oradata/tqgzs]$dbfsize redo01.log
Database file: redo01.log
Database file type: file system
Database file size: 102400 512 byte blocks
[oracle@tqgzs: ~/oradata/tqgzs]$dbfsize system01.dbf
Database file: system01.dbf
Database file type: file system
Database file size: 89600 8192 byte blocks
[oracle@tqgzs: ~/oradata/tqgzs]$which dbfsize
~/product/10.2.0/db_1/bin/dbfsize

從以上的輸出中可以看到,日誌檔案的Block Size是512 Bytes,而資料檔案的Block Size為8192 Bytes。當然,也可以透過轉儲日誌檔案的方式來獲取日誌檔案塊大小,轉儲日誌檔案頭可以透過如下命名實現:

alter session set events 'immediate trace name redohdr level 10';

檢視跟蹤檔案可以得到類似如下資訊,輸出中的bsz就是指Redo Block Size為512Bytes:

LOG FILE #1:   
  (name #3) /u01/oracle/oradata/tqgzs/redo01.log
Thread 1 redo log links: forward: 2 backward: 0
siz: 0x19000 seq: 0x00000077 hws: 0x4 bsz: 512 nab: 0x2 flg: 0x1 dup: 1
Archive links: fwrd: 0 back: 0 Prev scn: 0x0000.005f5e8e
Low scn: 0x0000.005f5e90 12/13/2009 23:33:58
Next scn: 0x0000.005f5e92 12/13/2009 23:34:03

有時候當資料庫出現歸檔錯誤時,也會給出提示資訊,告知blocksize=512

ORA-19502: write error on file "/data1/oraarc/PTL017151.arc", blockno 169985 (blocksize=512)
  ORA-27072: skgfdisp: I/O error

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

相關文章