Log Block Size

这是ixora上internals文章的译文,其中可能有不妥之处:

尽管重做项的大小(用字节)是可测量的,但是lgwr以块为单位向日志文件写重做。在oracle源代码中重做日志块的大小是固定的,并且与操作系统有关。Oracle文档中,使用术语“operating system block size”指日志块大小。通常,对于操作系统的raw i/o,它是最小的i/o单位。但是在一些操作系统中,他可能是文件系统i/o的最小单位。

日志块大小是参数log_checkpoint_interval, _log_io_size and max_dump_file_size设置值的单位。因此,它是一个重要的常数。用下面的查询可以找到log block size

select
  max(l.lebsz)  log_block_size
from
  sys.x_$kccle  l
where
  l.inst_id = userenv('Instance')
/

log block size还可以从StatsPack reports的系统统计(system statistics)推导出来。每个log block有一个16字节的头,数据区的大小大约是产生的重做字节数(redo size加上剩余的重做空间(redo wastage)除以写入的日志块数 (redo blocks written) 即为以下公式:

16 + (redo size + redo wastage) / redo blocks written

该公式通常略小于log block size几个字节,因为他没有考虑已经产生但还没有写入的重做,而且redo size statistic有一点不准确。


请使用浏览器的分享功能分享到微信等