##########################
www.ludatou.com 大头
转载请指明处,否则追责法律责任
##########################
在AIX5.3中,系统支持三种类型的VG,分别是Original VG、Big VG、Scalable VG(AIX5.3的新特性)。
mkvg命令默认将创建Origninal VG:最大支持32 physical volumes and 255 logical volumes
mkvg –B命令将创建Big VG:最大支持128 physical volumes and 512 logical volumes
mkvg –S命令将创建Scalable VG:最大支持1024 physical volumes, 256 logical volumes and 32k physical partitions
应用程序直接访问LVCB是比较危险的,因此在建立数据文件使用的裸设备时,不能从逻辑卷开始位置,而是应该有一个偏移量(offset),偏移量的大小应大于LVCB的大小,一般用一个AIX逻辑块的大小做偏移量,即4096字节。Oracle数据库会自动跳过前 4k不用,这样保证了lvcb不会被覆盖,但这带来了另一个潜在的问题,当 Oracle的db_block_size大于4k的时候,一个Block可能跨在两个PV/LUN/磁盘上(如果做了条带化,那么将总有数据块跨在两个条带上–其实也还是将跨在不同的 PV/LUN/磁盘上。这样当系统崩溃的时候,很有可能造成大量的IO不完整,一个PV上IO写入,另一边可能未完成,启动Oracle的时候将会看到ORA-1578 错误,这几乎是致命的。
原有的带有偏移量的lv类型就叫做DS_LV。未解决上述问题,AIX引进了一种新的LV类,也就是“Z”类型LV,这种类型的LV通过lslv -L lv_name可以看到它的类型为:DS_LVZ。
零偏移量LV的创建:
1.在Origninal VG中,不论是否使用“-T O”参数,创建出来的lv都是DS_LV类型。
2.在Scalable VG中,不论是否使用“-T O”参数,创建出来的lv都是DS_LVZ类型。
3.在Big VG中,使用“-T O”参数,创建出来的lv都是DS_LVZ类型,而不使用则是DS_LV类型。
由此可见,为了解决alert日志中报告的问题,使用scalable VG或是big VG创建DS_LVZ类型的LV(zero offset)即可解决。
检查lv是不是0偏移的裸设备命令:
1、用oracle账户执行:dbfsize /dev/rlv_test
2、lslv -L lvName
案例:
hz@bank:[/home/oracle]#lslv -L lvdata002 LOGICAL VOLUME: lvdata002 VOLUME GROUP: datavg02 LV IDENTIFIER: 00cffde300004c000000012157f880d8.81 PERMISSION: read/write VG STATE: active/complete LV STATE: opened/syncd TYPE: raw WRITE VERIFY: off MAX LPs: 512 PP SIZE: 256 megabyte(s) COPIES: 2 SCHED POLICY: parallel LPs: 16 PPs: 32 STALE PPs: 0 BB POLICY: relocatable INTER-POLICY: minimum RELOCATABLE: no INTRA-POLICY: middle UPPER BOUND: 16 MOUNT POINT: N/A LABEL: None MIRROR WRITE CONSISTENCY: off EACH LP COPY ON A SEPARATE PV ?: no Serialize IO ?: NO DEVICESUBTYPE : DS_LVZ
确认VG的类型,用命令 lsvg 看 MAX PVs 的值—-Normal: 32, Big:128, Scalable:1024 (不一定准确,准确的查询用下面的方法)
lqueryvg -At -g VGID(如00cffde300004c000000012157f8acd7)
10.111.4.1上查看到datavg03的 VG Type:1,0对应的是普通,1对应的是big,2对应的是scale
创建数据库使用的裸设备
mklv -y 'lvxscmxindx004' -T O -w 'n' -s 'n' -r 'n' -t raw datavg 20