aix5.3系统安装oracle 10g使用裸设备--4k偏移量问题

今天朋友在aix 5.3系统上安装oracle 10g 建库是用裸设备时候,dbca建库到2%报错退出,观察alert日志发现是temp表空间空间不足导致。查看该表空间数据文件所在的裸设备容量为512M,建库时候给出的数据文件大小也是512M。也许是因为aix系统以1000进制计算,而oracle数据库计算容量是以1024进制导致差距,随即将oracle数据文件大小改为500M,则正常通过。

但是,在alert日志中不断爆出warning提示:WARNING: You are creating datafile /dev/temp01. 
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。通过查询资料以及朋友的帮助,终于找到了问题原因并得到解决方法。

AIX在创建vg时有3中vg类型可选,分别是 Original Volume Group,Big Volume Group和Scalable Volume Group 
对于普通的VG(Original Volume Group),不管你使用什么命令创建lv,都是普通的DS_LV类型的LV。 
对于Big VG,是唯一允许同时存在这两种LV类型的VG,如果我们指定-T O(注意,这里是大写的字母O),则创建DS_LVZ类型的LV,否则,创建普通类型的LV。如 
/usr/sbin/mklv -y LVname -T O -w n -s n -r n VGname NumPPs。 
对于Scalable-type VG类型的VG,不管你使用什么方式的命令创建lv,都是扩展的DS_LVZ类型的LV。 
由Oracle的警告日志可以看出,Oracle 使用raw设备时,建议设置不带4k的lv。

AIX将这4k偏移量称之为lvcb(logical volume control block),它将占用4k的前512个字节,它类似于Oracle数据文件头,保留有lv的创建时间,镜像拷贝信息,文件系统挂载点等。

从2个方面可以查看lv是否有4k偏移量 
1、主机层面 
没有4k偏移量:

引用

#lslv jfkdb_2G_044 
LOGICAL VOLUME: jfkdb_2G_044 VOLUME GROUP: jfk_dbvg_01 
LV IDENTIFIER: 00c3dff400004c00000001217a9d839e.84 PERMISSION: read/write 
VG STATE: active/complete LV STATE: closed/syncd 
TYPE: raw WRITE VERIFY: off 
MAX LPs: 1024 PP SIZE: 32 megabyte(s) 
COPIES: 1 SCHED POLICY: parallel 
LPs: 64 PPs: 64 
STALE PPs: 0 BB POLICY: relocatable 
INTER-POLICY: maximum RELOCATABLE: yes 
INTRA-POLICY: middle UPPER BOUND: 1024 
MOUNT POINT: N/A LABEL: None 
MIRROR WRITE CONSISTENCY: on/ACTIVE 
EACH LP COPY ON A SEPARATE PV ?: yes 
Serialize IO ?: NO 
DEVICESUBTYPE : DS_LVZ

有4k偏移量:

引用

[[email protected]_p560q /]# lslv jfkdb_2G_044 
LOGICAL VOLUME: jfkdb_2G_044 VOLUME GROUP: jfk_db_vg01 
LV IDENTIFIER: 00ce76de00004c00000001134ee6bc51.84 PERMISSION: read/write 
VG STATE: active/complete LV STATE: opened/syncd 
TYPE: raw WRITE VERIFY: off 
MAX LPs: 1024 PP SIZE: 32 megabyte(s) 
COPIES: 1 SCHED POLICY: parallel 
LPs: 64 PPs: 64 
STALE PPs: 0 BB POLICY: relocatable 
INTER-POLICY: maximum RELOCATABLE: yes 
INTRA-POLICY: middle UPPER BOUND: 16 
MOUNT POINT: N/A LABEL: None 
MIRROR WRITE CONSISTENCY: on/ACTIVE 
EACH LP COPY ON A SEPARATE PV ?: yes 
Serialize IO ?: NO

(2)Oracle层面: 
Oracle提供了一小工具dbfsize(在$ORACLE_HOME/bin下)用于观察lv是否有4k偏移量 
无4k偏移量:

引用

$ dbfsize /dev/rlvsysaux_1g

Database file: /dev/rlvsysaux_1g 
Database file type: raw device without 4K starting offset 
Database file size: 40960 8192 byte blocks

有4k偏移量:

引用

[[email protected]_p560q /dev]$ dbfsize /dev/rjfkdb_2G_054

Database file: /dev/rjfkdb_2G_054 
Database file type: raw device 
Database file size: 262016 8192 byte blocks

如果数据库使用block size为16k,创建跨pv带有4k偏移的lv,条带块大小为64k。这样将导致第4个block横跨2个pv(条带化操作,把lvcb也计算进条带块中)。这样会导致 
条带块的第4个Oracle block跨磁盘,撇开性能方面考虑,如果系统异常宕机,或者存储异常宕机,极易引起数据库块损坏,引起ora-01578错误。(metalink ID 261460.1)

引用

$ oerr ora 01578 
01578, 00000, "ORACLE data block corrupted (file # %s, block # %s)" 
// *Cause: The data block indicated was corrupted, mostly due to software 
// errors. 
// *Action: Try to restore the segment containing the block indicated. This 
// may involve dropping the segment and recreating it. If there 
// is a trace file, report the errors in it to your ORACLE 
// representative.

也就是说,使用Original Volume Group时候无法通过参数来取消4k offerset,唯一的办法就是将oracle数据库db_block_size设置为4k。(不推荐使用)

而使用big VG的时候,可以通过创建LV加入-T -O参数来实现创建DS_LVZ类型的LV,从而取消前面4K的偏移量。(但传说big vg有已知的bug,顾不推荐使用)。

而Scalable-type VG类型的VG,无论如何创建LV都是不带4K偏移量的,且支持的pp更多,支持单个文件容量最大。(强烈推荐使用)

时间: 2024-10-06 20:02:52

aix5.3系统安装oracle 10g使用裸设备--4k偏移量问题的相关文章

Oracle 11g 使用裸设备

1  查看SID $ echo $ORACLE_SID orcl $ echo $ORACLE_HOME /u01/app/oracle/product/11g $ echo $ORACLE_BASE /u01/app/oracle $ mkdir -p /u01/oradata/orcl $ mkdir -p /u01/app/oracle/admin/orcl/adump $ mkdir -p /u01/app/oracle/diag/rdbms/orcl/orcl/cdump $ mkdi

RHEL6 64位系统安装ORACLE 10g 64bit 数据库

记得去年4月份的时候,为公司部署测试环境和UAT环境时,在红帽RHEL6 64位系统安装ORACLE 10g 64位数据库时遇到了许多小问题,当时匆匆忙忙也没记录一下这些问题,前几天在虚拟机安装ORACLE 64位 10g时,又有一些常见问题又遇到了,顺便整理一下这篇文章.也许在RHEL6 64版本上安装64位Oracle 10g 的问题是最多的,估计很多人都被这个虐过无数次(很多人都是Oracle虐我无数遍,我待Oracle如初恋).从网上搜索关于这方面的内容就可见一斑.好,废话少说,正式进入

oracle使用裸设备存储数据

正常情况下 往表中写数据 首先经过库,库再告诉给操作系统,操作系统再找磁盘,经过了3步! 表---->库---->操作系统---->磁盘 裸设备没有文件系统,在系统层根本管不了磁盘了,这就是裸设备. 裸设备直接给库用,以后我存数据.提数据,库和磁盘直接交互,不通过系统层,少了一层巡址,可以提高速度. 我们ext3默认块4K,数据库中默认块8块,存数据的话肯定是往磁盘中存,如果系统层肯定按4K存,需要转换一下,相对来说比较麻烦. 裸设备的好处,跳过操作系统层直接找磁盘,系统层已经不认磁盘了

linux添加裸设备

1.什么裸设备?字符设备?块设备? 裸设备:也叫裸分区(原始分区),是一种没有经过格式化,不被Unix/Linux通过文件系统来读取的特殊字符设备.裸设备,也叫裸分区(原始分区),是一种没有经过格式化,不被Unix通过文件系统来读取的特殊字符设备.它由应用程序负责对它进行读写操作.不经过文件系统的缓冲.裸设备可以绑定一个分区,也可以绑定一个磁盘. 字符设备:对字符设备的读写不需要通过OS的buffer.它不可被文件系统mount. 块设备:对块设备的读写需要通过OS的buffer,它可以被mou

裸设备和Oracle问答20例

裸设备和Oracle问答20例 导读 裸设备,也叫裸分区(原始分区),是一种没有经过格式化,不被Unix通过文件系统来读取的特殊字符设备.裸设备可以绑定一个分区,也可以绑定一个磁盘.本文收集裸设备和Oracle问答20例. 1.什么叫做裸设备? 裸设备,也叫裸分区(原始分区),是一种没有经过格式化,不被Unix通过文件系统来读取的特殊字符设备.它由应用程序负责对它进行读写操作.不经过文件系统的缓冲. 2.如何辨别裸设备? 在Unix的/dev 目录下,有许多文件,其中有两个大类:字符设备文件和块

Oracle DB 12c新特性:raw device 裸设备不再受支持

Oracle DB 12c新特性:raw device 不再受支持. 参考自: Announcement of De-Support of using RAW devices in Oracle Database Version 12.1 (Doc ID 578455.1) 细节: De-Support of Raw 本文的目录是通知在oracle database 12.1版本中对raw device不再支持. 这意味着,若是使用oracle database 12.1版本,将不能把数据文件,

AIX给oracle添加裸设备数据文件

平台:AIX 5.3 单机 存在一个空闲磁盘hdisk1 总体思路:物理卷PV->卷组VG->逻辑卷LV(类型:raw)->添加表空间 1.查看所有可用卷组 # lsvg -o rootvg 2.创建ORACLE的卷组datavg # smitty lvm Volume Groups Add a Volume Group Add an Original Volume Group [Entry Fields] VOLUME GROUP name                       

AIX中创建的裸设备即AIX中的逻辑卷 for Oracle

AIX中创建的裸设备即AIX中的逻辑卷 创建方法如下: 语法:mklv -t raw -y [lvname] [vgname] [LPs] 例如在创建Oracle所需的裸设备: mklv -t raw -y lv_sysaux datavg 3 mklv -t raw -y lv_systems aux datavg 3 mklv -t raw -y lv_ctl1 datavg 1 mklv -t raw -y lv_ctl2 datavg 1 mklv -t raw -y lv_redo1

Oracle裸设备

裸设备,也叫裸分区(原始分区),是一种没有经过格式化,不被Unix通过文件系统来读取的特殊字符设备.本文收集裸设备和Oracle问答20例. 1.什么叫做裸设备? 裸设备,也叫裸分区(原始分区),是一种没有经过格式化,不被Unix通过文件系统来读取的特殊字符设备.它由应用程序负责对它进行读写操作.不经过文件系统的缓冲. 2.如何辨别裸设备? 在Unix的/dev 目录下,有许多文件,其中有两个大类:字符设备文件和块设备文件. 字符设备特殊文件进行I/O操作不经过操作系统的缓冲区,而块设备特殊文件