Oracle 10g RAC裸设备管理方式切换


由于先前这套测试环境的使用绑定方式是直接使用设备符号来映射的,这样存在一个问题,由于空间不足增加了硬盘,结果新增加的硬盘占用了原来的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", NAME="ocr-disk", 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", NAME="voting-disk", 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-

相关内容