今天给公司搭建一个压力测试环境,就想弄一个基于ASM的单实例的数据库。想来想去,还是用udev来试试,以前都是用asmlib,今天也不着急,就当练手了吧,出于保密,我的截图全是我自己虚拟机后来做的。
我的测试环境如下:OEL5.5 64位,我打算装oracle 11.2g
一:添加硬盘分区
[root@xuexi1 ~]# cd /dev/
[root@xuexi1 dev]# ls sd*
sda sda1 sda2 sdb sdc
[root@xuexi1 dev]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): n
Command action
e extended
p primary partition (1-4)
1
Invalid partition number for type `1'
Command action
e extended
p primary partition (1-4)
[root@xuexi1 dev]#
二 验证下
[root@xuexi1 dev]#
[root@xuexi1 dev]#
[root@xuexi1 dev]# ls sd*
sda sda1 sda2 sdb sdb1 sdc sdc1
[root@xuexi1 dev]#
[root@xuexi1 dev]# /sbin/scsi_id -g -u -s /block/sdb/sdc1
三:取得SCSI_ID
[root@xuexi1 dev]# ls sd*
sda sda1 sda2 sdb sdb1 sdc sdc1
[root@xuexi1 dev]#
[root@xuexi1 dev]#
[root@xuexi1 dev]# /sbin/scsi_id -g -u -s /block/sdb/sdb1
36000c293bebaf4282d83d7ed3b9be7ec
[root@xuexi1 dev]#
[root@xuexi1 dev]# /sbin/scsi_id -g -u -s /block/sdc/sdc1
36000c29d0b8595eb4215cbe7bbdc8cc4
注意:如果你用的是虚拟机 VMware 的话,运行上面的命令式没有结果的,要修改配置文件
[root@xuexi1 dev]# ls sd*
sda sda1 sda2 sdb sdb1 sdc sdc1
[root@xuexi1 dev]#
[root@xuexi1 dev]#
[root@xuexi1 dev]# /sbin/scsi_id -g -u -s /block/sdb/sdb1
36000c293bebaf4282d83d7ed3b9be7ec
[root@xuexi1 dev]#
[root@xuexi1 dev]# /sbin/scsi_id -g -u -s /block/sdc/sdc1
36000c29d0b8595eb4215cbe7bbdc8cc4
修改上面截图的相应文件,用文本打开,添加
disk.EnableUUID = "TRUE" |
这样的话,scsi_id才能用结果。如果以后你对这个虚拟机有改动硬件的话,那么这个参数就会没了,要重新填上。
对了,我这次是用OEL5(liunx5的),在liunx6里面是不一样的。
四:配置UDEVRules 文件
[root@xuexi1 dev]# touch /etc/udev/rules.d/99-oracle-asmdevices.rules
[root@xuexi1 dev]# vi /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="sd?1",BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u /dev/$name", RESULT=="36000c293bebaf4282d83d7ed3b9be7ec",NAME="asm-disk1", OWNER="oracle", GROUP="dba",MODE="0660"
KERNEL=="sd?1",BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u /dev/$name", RESULT=="36000c29d0b8595eb4215cbe7bbdc8cc4",NAME="asm-disk2", OWNER="oracle", GROUP="dba",MODE="0660"
如果是oracle 11g的话,用户可就是grid了。然后是加载刚才的变动,用
/sbin/partprobe
[root@xuexi1 dev]# /sbin/partprobe /dev/sdb1
[root@xuexi1 dev]#
[root@xuexi1 dev]# /sbin/partprobe /dev/sdc1
[root@xuexi1 dev]#
[root@xuexi1 dev]# start_udev
Starting udev: [ OK ]
[root@xuexi1 dev]#
[root@xuexi1 dev]#
[root@xuexi1 dev]# cd /dev
[root@xuexi1 dev]#
[root@xuexi1 dev]# ls -al asm-disk*
brw-rw---- 1 oracle dba 8, 17 May 20 10:08 asm-disk1
brw-rw---- 1 oracle dba 8, 33 May 20 10:08 asm-disk2
这样的话,在ASM的配置中,ASM_DISKSTRING参数指向'/dev/asm-disk*'就可以了。
本文参考文档:http://www.oracle-base.com/articles/linux/udev-scsi-rules-configuration-in-oracle-linux-5-and-6.php