由于先前这套测试环境的使用绑定方式是直接使用设备符号来映射的,这样存在一个问题,由于空间不足增加了硬盘,结果新增加的硬盘
由于先前这套测试环境的使用绑定方式是直接使用设备符号来映射的,这样存在一个问题,,由于空间不足增加了硬盘,结果新增加的硬盘占用了原来的ocr的/dev/sdb,这样就会导致整个数据库无法启动和使用。
看到网上有不少人推荐使用scsi_id来绑定,于是想把现有的转换过去,动手做做吧。没想到遇到的第1个难题就是vmware workstation无法识别scsi_id的问题,用vbox就没问题,还好网络上有找到解决方案,编辑虚拟机增加参数:
disk.EnableUUID = "TRUE"
这样就能让vmware workstation正确识别到scsi_id了。
首先看下现在的绑定规则情况如下:
/dev/sdb /dev/raw/raw1 ocr
/dev/sdc /dev/raw/raw2 voting
/dev/sdd /dev/raw/raw3 asmdisk1
/dev/sde /dev/raw/raw4 asmdisk2
接着开始配置新规则,在/etc/udev/rules.d目录下新建一个文件99-Oracle.rules,内容如下:
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="36000c297628f8969e1738bd9218aa814", RUN+="/bin/raw /dev/raw/raw1 %N",, OWNER="oracle", GROUP="oinstall", MODE="0640"
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="36000c290c598768a2edf15a267e4d52c", RUN+="/bin/raw /dev/raw/raw2 %N",, OWNER="oracle", GROUP="oinstall", MODE="0640"
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="36000c2996ec122dead7aee84b7295271", RUN+="/bin/raw /dev/raw/raw3 %N",NAME="asm-disk1", OWNER="oracle", GROUP="oinstall", MODE="0640"
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="36000c29a6c4e9283e031dfbf465b7ae8", RUN+="/bin/raw /dev/raw/raw4 %N",NAME="asm-disk2", OWNER="oracle", GROUP="oinstall", MODE="0640"
另外还有权限的问题,通过/etc/rc.d/rc.local来开机执行授权,增加如下内容:
chown oracle:oinstall /dev/raw/raw1
chown oracle:oinstall /dev/raw/raw2
chown oracle:oinstall /dev/raw/raw3
chown oracle:oinstall /dev/raw/raw4
chmod 640 /dev/raw/raw1
chmod 640 /dev/raw/raw2
chmod 640 /dev/raw/raw3
chmod 640 /dev/raw/raw4
同时将原来的绑定规则文件移除。
启动udev
/sbin/udevcontrol reload_rules
/sbin/start_udev
重启系统后验证下结果。
[root@R1 ~]# ll /dev/*-disk*
brw-r----- 1 oracle oinstall 8, 65 02-03 20:00 /dev/asm-disk1
brw-r----- 1 oracle oinstall 8, 81 02-03 20:00 /dev/asm-disk2
brw-r----- 1 oracle oinstall 8, 33 02-03 20:00 /dev/ocr-disk
brw-r----- 1 oracle oinstall 8, 49 02-03 20:00 /dev/voting-disk
[root@R1 ~]# ll /dev/raw/raw*
crw-r----- 1 oracle oinstall 162, 1 02-03 20:00 /dev/raw/raw1
crw-r----- 1 oracle oinstall 162, 2 02-03 20:00 /dev/raw/raw2
crw-r----- 1 oracle oinstall 162, 3 02-03 20:00 /dev/raw/raw3
crw-r----- 1 oracle oinstall 162, 4 02-03 20:00 /dev/raw/raw4
这样就能够正常使用db了,增加新的设备也不用担心出现问题了。
附,获取设备命令和参数:
scsi_id -g -v -s /block/sda
或者
for i in a ;
do
echo "sd$i" "`scsi_id -g -u -s /block/sd$i` ";
done
或者
for i in b c d e;
do
echo "KERNEL==\"sd*\", BUS==\"scsi\", PROGRAM==\"/sbin/scsi_id -g -u -s %p\", RESULT==\"`scsi_id -g -u -s /block/sd$i`\", NAME=\"asm-disk$i\", OWNER=\"oracle\", GROUP=\"oinstall\", MODE=\"0660\""
done
注意的是默认情况下生成的链接在/dev下面,如果你像我一样指定到不同地方需要而外的参数,参考上面的RUN部分。
-The End-