参考文档:
1、创建oracle数据文件时需要注意的地方(OS Header Block)
http://www.aixchina.net/Question/20406
2、oracle 创建数据文件offset
http://blog.itpub.net/500314/viewspace-1097991/
问题.WARNING: You are creating/reusing datafile /dev/rcv_sysaux_800m.
WARNING: Oracle recommends creating new datafiles on devices with zero offset. The command "/usr/sbin/mklv -y LVname -T O -w n -s n -r n VGname NumPPs" can be used. Please contact Oracle customer support for more details.
WARNING: You are creating/reusing datafile /dev/rcv_sysaux_800m.
WARNING: Oracle recommends creating new datafiles on devices with zero offset. The command "/usr/sbin/mklv -y LVname -T O -w n -s n -r n VGname NumPPs" can be used. Please contact Oracle customer support for more details.
一.说明
数据库创建时,裸设备未使用-T O参数,一般情况下,AIX 的逻辑卷前 4k 用于存储 control block (LVCB),在 Oracle 9iR2 之前,Oracle 软件自动跳过这 4k 而不用。这带来了一个潜在的问题,当 Oracle 的 db_block_size 大于 4k 的时候,一个 Block 可能跨在两个 PV/LUN/磁盘上。这样当系统崩溃的时候,很有可能造成大量的 IO 不完整,一个 PV 上 IO 写入,另一边可能未完成,启动 Oracle 的时候将会看到 ORA-1578 错误,这几乎是致命的。
创建裸设备时,如果使用 -T O参数的情况下,AIX的逻辑卷前 4K可以被Oracle使用,即zero offset,Oracle从0开始读写LV,这也是Oracle推荐使用的方法。
我们首先来看一下AIX的vg的3种类型:
original vg 普通卷组
big vg 大卷组
scalable vg 动态的或者可扩展的卷组
-- 建议创建新卷组时使用scalable vg
如何快速区分这三组卷组呢?
通过其参数MAX PVS,上述3个类型的卷组对应的限制是:32、128、1024;除此之外,还可以通过readvgda命令来读取pv的元数据判断。
三种卷组创建LV的异同点:
0. Origninal VG无论是否使用“-T O”参数,创建出来的lv都是DS_LV(有偏移的);
1. Scalable VG无论是否使用“-T O”参数,创建出来的lv都是DS_LVZ(没有偏移的);
2. Big VG使用“-T O”参数创建出来的lv是DS_LVZ类型,否则是DS_LV类型。
通过查看lv的属性DEVICESUBTYPE:DS_LVZ也就是没有偏移的lv,除此之外Oracle也提供了一个工具来检查LV是有offset,该工具只能检查被用于数据文件的lv,注意要用root用户执行。
/usr/sbin/mklv -y'lv_control_01' -T O -t'raw' datavg 1
db1:/#/oracle/app/oracle/product/10.2/db1/bin/dbfsize /dev/lv_control_01
Database file: /dev/lv_control_01
Database file type: raw device without 4K starting offset
Database file size: 334 16384 byte blocks
这个是没有offset的. (建议使用的格式)
接着来看下有offset的结果: (不建议使用的格式)
/usr/sbin/mklv -y'lvtest' -t'raw' rootvg 1
chown oracle:oinstall /dev/rlvtest
chmod 700 /dev/rlvtest
db1:/oracle$ /oracle/app/oracle/product/10.2/db1/bin/dbfsize /dev/lvtest
Database file: /dev/lvtest
Database file type: raw device
Database file size: 1280 8192 byte blocks
而且使用有offset的lv创建表空间的时候在后台日志也会做相应的记录并提出建议:
create tablespace gtlions datafile '/dev/rlvtest' size 10m
WARNING: You are creating datafile /dev/rlvtest.
WARNING: Oracle recommends creating new datafiles on devices with zero offset. The command "/usr/sbin/mklv -y LVname -T O -w n -s n -r n VGname NumPPs" can be used. Please contact Oracle customer support for more details.
WARNING: You are creating/reusing datafile /dev/rlvtest.
WARNING: Oracle recommends creating new datafiles on devices with zero offset. The command "/usr/sbin/mklv -y LVname -T O -w n -s n -r n VGname NumPPs" can be used. Please contact Oracle customer support for more details.
Completed: create tablespace gtlions datafile '/dev/rlvtest' size 10m.