在前一个BLOG里面说到了怎么计算数据文件的大小,ls –l /8192-1,其实这里的8192是不正确的,只是通用情况下是这样的,下面是MOS给的官方文档,关于每种平台下面的OS块的大小
为增城等地区用户提供了全套网页设计制作服务,及增城网站建设行业解决方案。主营业务为成都网站建设、成都网站设计、增城网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!欢迎大家加入ORACLE超级群:17115662 免费解决各种ORACLE问题,以后BLOG将迁移到http://www.htz.pw
How an Oracle block# is mapped to a file offset (in bytes or OS blocks) (文档 ID 761734.1)
修改时间:2011-2-15
类型:HOWTO
In this Document
Goal
Solution
Generic Platform Formula:
Alternate Platform Specific Formula (i.e. AIX and HP Tru64):
APPLIES TO:
Oracle Server - Enterprise Edition - Version: 10.2.0.1 to 11.1.0.8 - Release: 10.2 to 11.1
Oracle Server - Enterprise Edition - Version: 10.2.0.1 to 11.1.0.8 [Release: 10.2 to 11.1]
Information in this document applies to any platform.
GOAL
This document is about how an Oracle block number is mapped to a file offset (in bytes or OS blocks) for Generic OS platforms and includes an alternate formula for specific OS platforms like AIX and HP Tru64. These are the only 2 platforms where the Volume Manager reserves space for Metadata in the Oracle datafile.
For Oracle 10g and 10gR2 there are only two platforms with logical volume Metadata on raw devices: AIX and HP Tru64.
HP Tru64 is no longer supported on Oracle 11g, so AIX is the only one in 11g.
SOLUTION
Every Oracle file has an Operating System file header block ("BLOCK 0") created and maintained by Oracle, which is the size of a standard Oracle block. If multiple block sizes are being used then V$DATAFILE.BLOCK_SIZE should be queried for the file# in question.
"BLOCK 0" can be know as the "Oracle OS Header Block" or "Database Block# 0".
"BLOCK 1" is the Oracle Header Block that contains generic information for the File.
From the documentation: V$DATAFILE.BLOCK1_OFFSET is the "Offset from the beginning of the file to where the Oracle generic information begins.".
"BLOCK 1" offset = v$datafile.block1_offset
V$DATAFILE.BLOCK1_OFFSET do not make much sense for ASM. The value displayed is UB4MAXVAL (4-byte unsiged int max) for ASM when it cannot be computed.
Generic Platform Formula:
A general formula to locate the byte offset in any platform is:
block1_offset = v$datafile.block1_offset
oracle_block_size = v$datafile.block_size
offset = block1_offset + (oracle_block_number - 1) * oracle_block_size
Another way to calculate this offset is using the platform specific information:
Alternate Platform Specific Formula (i.e. AIX and HP Tru64):
Platform specific formula for a file offset to locate an Oracle block in a RAW Device:
offset = raw_device_block0_offset + (oracle_block_number * oracle_block_size)
AIX:
On AIX raw device, the logical volume metadata uses 4096 bytes. That would be the block0_offset on this platform. On HP Tru64 it is 65536 bytes.
raw_device_block0_offset = 4096
file_system_block0_offset = 0
Example:
Calculate the byte offset using the platform specific formula for block 30 in a RAW Device in AIX
oracle_block_size = 8192 (v$datafile.block_size)
oracle_block_number = 30
AIX raw_device_block0_offset = 4096
offset = 4096 + (30*8192) = 249856
Notes:
The above formulas are given in bytes.
file_system_block#_offset refers to any file systems like veritas, zfs, etc.
raw_device_block0_offset is the byte offset to locate the Oracle "BLOCK 0" in a raw device.
file_system_block0_offset is the byte offset to locate the Oracle "BLOCK 0" in a file system.
Formula To produce an offset in 4096 blocks in a RAW device in AIX:
offset
HP Tru64:
For HP Tru64 use:
raw_device_block0_offset = 65536
file_system_block0_offset = 0
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。