实验环境:

centos6.4

oracle 11.2.0.4

--

使用的是udev方式映射的raw,然后做的是asm

---

本来想把sdb,sdc这个块磁盘替换掉。

sdb => 1g:sdb1,sdb2,sdb3. 2g:sdb5,sdb6,sdb7

sdc => 2g:sdc1,sdc2,sdc3,sdc5,sdc6

做成了2个磁盘组

OCR sdb1,sdb2,sdb3  raw1,raw2,raw3,raw4

DATA sdb5,sdb6,sdb7 sdc1 raw5 ,raw6,raw7,raw8

FRA  sdc2,sdc3,sdc5,sdc6 raw9 ,raw10,raw11,raw12

asm磁盘组的磁盘不建议用扩展分区,

--------

想把这2块盘换掉

退出虚拟机,又加了2块磁盘

sdd :1g:sdd1,sdd2,sdd3. 2g:sdd5,sdd6,sdd7

sde :2g:sde1,sde2,sde3,sde5,sde6

然后在/etc/udev/rules.d/60-raw.rules 添加下面内容

ACTION=="add", KERNEL=="sdd1", RUN+="/bin/raw /dev/raw/raw12 %N"

ACTION=="add", KERNEL=="sdd2", RUN+="/bin/raw /dev/raw/raw13 %N"

ACTION=="add", KERNEL=="sdd3", RUN+="/bin/raw /dev/raw/raw14 %N"

ACTION=="add", KERNEL=="sdd5", RUN+="/bin/raw /dev/raw/raw15 %N"

ACTION=="add", KERNEL=="sdd6", RUN+="/bin/raw /dev/raw/raw16 %N"

ACTION=="add", KERNEL=="sdd7", RUN+="/bin/raw /dev/raw/raw17 %N"

ACTION=="add", KERNEL=="sde1", RUN+="/bin/raw /dev/raw/raw18 %N"

ACTION=="add", KERNEL=="sde2", RUN+="/bin/raw /dev/raw/raw19 %N"

ACTION=="add", KERNEL=="sde3", RUN+="/bin/raw /dev/raw/raw20 %N"

ACTION=="add", KERNEL=="sde5", RUN+="/bin/raw /dev/raw/raw21 %N"

ACTION=="add", KERNEL=="sde6", RUN+="/bin/raw /dev/raw/raw22 %N"

KERNEL=="raw[1-9]",OWNER="grid",GROUP="asmadmin" MODE="660"

KERNEL=="raw1[0-9]",OWNER="grid",GROUP="asmadmin" MODE="660"

KERNEL=="raw2[0-2]",OWNER="grid",GROUP="asmadmin" MODE="660"

---

然后进如asm实例

su - grid

sqlplus / as sysasm

select name,path from v$asm_disk;

name              path

------- ----------

OCR_0000 /dev/raw/raw1 

OCR_0001 /dev/raw/raw2 

OCR_0002 /dev/raw/raw3 


DATA_0000 /dev/raw/raw4 

DATA_0001 /dev/raw/raw5 

DATA_0002 /dev/raw/raw6 

DATA_0003 /dev/raw/raw7 


FRA_0000 /dev/raw/raw8 

FRA_0001 /dev/raw/raw9 

FRA_0002 /dev/raw/raw10 

FRA_0003 /dev/raw/raw11 


发现到了新添加的磁盘

然后进行替换

-

OCR

alter diskgroup ocr add disk '/dev/raw/raw12','/dev/raw/raw13','/dev/raw/raw14';

alter diskgroup ocr drop disk 'OCR_0000','OCR_0001','OCR_0002';

-

DATA

alter diskgroup data add disk '/dev/raw/raw15','/dev/raw/raw16','/dev/raw/raw17','/dev/raw/raw18';

alter diskgroup data drop disk 'DATA_0000','DATA_0001','DATA_0002','DATA_0003';

--

FRA

alter diskgroup fra add disk '/dev/raw/raw19','/dev/raw/raw20','/dev/raw/raw21','/dev/raw/raw22';

alter diskgroup fra drop disk 'FRA_0000','FRA_0001','FRA_0002','FRA_0003';

--

select group_number,operation,power,state from v$asm_operation;

等这里面没有信息,说明数据全部移动完。

-----

然后关闭虚拟机。

把sdb和sdc这2块对应的盘从虚拟机中删除

还在rac2节点加了一块非共享盘

开机

发现磁盘的对应关系发生了改变。

rac1

sdd  成了sdb

sde  成了sdc


rac2

sdd  成了sdc

sde  成了sdd

盘符全乱了。

自己重新映射了一下。发现还是有问题。

-

然后决定不用盘符映射。用scsi_id方式映射,这样共享盘是不能分区的。

在没做其他操作下,

把2块共享盘的分区全部删除。这样就在共享盘上的ocr,vote disk,data,fra的信息全部丢失。

--

然后在/etc/udev/rules.d/60-raw.rules做如下改动

ACTION=="add", KERNEL=="sd*", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$name",

RESULT=="360022a11000e085d0de717f500000003", RUN+="/bin/raw /dev/raw/raw1 %N"

ACTION=="add", KERNEL=="sd*", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$name",

RESULT=="360022a11000e085d0de7372c0000002e", RUN+="/bin/raw /dev/raw/raw2 %N"

ACTION=="adc", KERNEL=="sd*", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$name",

RESULT=="360022a11000e085d0de7372c0000018e", RUN+="/bin/raw /dev/raw/raw2 %N"

KERNEL=="raw[1-3]", OWNER="grid", GROUP="oinstall", MODE="660"


-- 

RESULT=="360022a11000e085d0de717f500000003" 

这个值的获得 root#/sbin/scsi_id -g -u -d /dev/sdd 

linux版本不同,命令的路径不同。

---

映射后,最好重启下。

===

这样,系统重启后,发现crs宕掉,也无法启动。

asm实例无法启动,磁盘组也不存在。

===============

先重建crs

2节点都做

root#./crsctl stop crs

pwd

/oracle/app/11.2.0/grid/crs/install

root#./rootcrs.pl -deconfig -force

--

然后

2节点都做

pwd

/oracle/app/11.2.0/grid

./root.sh

重建成功

===============

那就做ocr和vote disk恢复吧。数据库还有一份备份。

pwd 

/oracle/app/11.2.0/grid/bin

rac1

root#./crsctl stop has

rac2

root#./crsctl stop has


ocr的备份在rac2上

rac2

root#./crsctl start crs -excl -nocrs  启动到独占模式

grid$sqlplus / as sysasm

进入到asm实例成功

创建磁盘组

create diskgroup OCR external redundancy disk '/dev/raw/raw1'

ATTRIBUTE 'compatible.asm'='11.2.0.0.0';

===============================================

ATTRIBUTE 'compatible.asm'='11.2.0.0.0';

这句比较关键,如果不带,恢复OCR无法成功。

/ocrconfig –restore backup00.ocr

无法完成

PROT-35: The configured OCR locations are not accessible.

==============================================

然后恢复OCR

root#./ocrconfig -restore /oracle/app/11.2.0/grid/cdata/rac-cluster/backup.ocr

成功

恢复vote disk

root#./crsctl replace votedisk +OCR

sqlplus / as sysasm

create spfile from memory;

-------

rac2

root#./crsctl stop has

--

rac1 

root#./crsctl start crs


rac2 

root#./crsctl start crs

=====

然后

rac1 

用+ASM1登录时出错

sqlplus / as sysasm


ps -ef|grep asm

            asm2

--

export ORACLE_SID=+ASM2

sqlplus / as sysasm

进入成功

exit

--

vi /etc/oratab

+ASM2 -->+ASM1

--

oraenv

+ASM1

sqlplus / as sysasm

实例进入成功

ps -ef |grep asm

----

然后重新创建DATA和FRA磁盘组

sqlplus / as sysasm

create diskgroup data add disk '/dev/raw/raw2';

create diskgroup fra add disk '/dev/raw/raw3';

===============