ocr损坏后,会发现diskgroup,asmlib中仅仅找不到ocr asm disk,
其他的数据盘data,flashback,arch都是ok的,最好不要做任何处理
仅仅重建恢复ocr diskgroup即可
不要动数据盘data,flashback,arch
ocr重建恢复好后,asmca挂上data,flashback,arch到相应的diskgroup即可
ocr如果无法恢复,大不了重新创建即可
ASMCMD看已经看不到表决盘
[grid@rac1 ~]$ asmcmd
ASMCMD> ls
BAK/
DB/
登录asm实例()
[grid@rac1 ~]$ sqlplus / as sysasm
登录asm实例()
[grid@rac1 ~]$ sqlplus / as sysasm
查看磁盘组状态(data容量已变0)
SQL> select group_number,name,state,total_mb,free_mb from v$asm_diskgroup;
GROUP_NUMBER NAME STATE TOTAL_MB FREE_MB
------------ ------------------------------ ----------- ---------- ----------
1 BAK MOUNTED 10239 10144
2 DATA MOUNTED 0 0
3 DB MOUNTED 20479 16110
1.强制关闭crs(by all)
[root@rac1 ~]# /u01/app/11.2.0/grid/bin/crsctl stop crs -f
[root@rac2 ~]# /u01/app/11.2.0/grid/bin/crsctl stop crs -f
2.exclusive模式启动crs 以-excl -nocrs 方式启动集群,这将启动ASM实例 但不启动CRS 启动到独占模式且不启动ora.crsd(节点1)
[root@rac1 ~]# /u01/app/11.2.0/grid/bin/crsctl start crs -excl -nocrs
3.使用root用户清空所有节点cluster配置信息
恢复过程其实就是使用root.sh重建ocr的过程,重建之后可能需要重新注册相关资源如listener or database 实例等!在清空之前呢我们需要先使用rootcrs.pl脚本脚本清空所有节点cluster配置信息。
(11G中存在rootcrs.pl脚本,该脚本默认存在于$GRID_HOME/crs/install)。
节点1执行:
/u01/app/11.2.0/grid/crs/install/rootcrs.pl -deconfig -force
节点2执行:因为我的RAC是双节点的,那么在清除最后一个使用lastnode参数:
/u01/app/11.2.0/grid/crs/install/rootcrs.pl -deconfig -force -lastnode
4.挂载一个新的磁盘用于替换原来的表决盘(如果不更换表决盘,此步骤可直接跳过)
crsconfig_params配置文件可以用于查看之前设置表决盘信息和修改表决盘操作。
4.修改crsconfig_params配置文件,此配置文件里记录了等下重建rac所需要的一些配置信息,因为我们要将表决盘从3块换成1一块,所以需要更改为正确的信息。(by all)
vim /u01/app/11.2.0/grid/crs/install/crsconfig_params
将
ASM_DISKS=/dev/raw/raw1,/dev/raw/raw2,/dev/raw/raw5
ASM_REDUNDANCY=NORMAL
改为
ASM_REDUNDANCY=External
ASM_DISKS=/dev/raw/raw6
5.使用root用户重建ocr和olr(by all)
使用root.sh脚本完成重建,其实这就是在安装RAC中执行的脚本,默认位置为:$GRID_HOME/
/u01/app/11.2.0/grid/root.sh
6.使用grid用户将监听程序配置添加到 Oracle Clusterware。(by all)
srvctl add listener -l listener
7.使用oracle用户将数据库配置添加到 Oracle Clusterware。(by all)
srvctl add database -d oracledbrac -o /u01/app/oracle/product/11.2.0/db -c RAC
8.使用oracle将数据库实例配置添加到 Oracle Clusterware。(可以在一台服务器上执行)
srvctl add instance -d oracledbrac -i orcl1 -n rac1
srvctl add instance -d oracledbrac -i orcl2 -n rac2
9.使用root用户重启crs(在一台执行就可以)
[root@rac1 ~]# /u01/app/11.2.0/grid/bin/crsctl start cluster -all
这里报CRS-4000错误,经检查两个节点的ASM数据盘没有mount
方法1:使用asmca在GUI下装载磁盘
方法2:使用asmcmd在命令下装载磁盘
装载磁盘以后,手动启动两个节点的数据库实例。
sqlplus / as sysdba
SQL> startup;
ORACLE instance started.
Total System Global Area 830930944 bytes
Fixed Size 2257800 bytes
Variable Size 599788664 bytes
Database Buffers 226492416 bytes
Redo Buffers 2392064 bytes
Database mounted.
Database opened.
启动两个实例以后,尝试使用工具连接scan-ip数据库看是否成功。已经可以成功连接,至此集群恢复成功。
10.检查集群状态,所有状态均已正常。
此时将服务器重启后再此验证全部正常,至此RAC在OCR无备份情况下恢复过程全部完成。
[grid@rac1 ~]$ olsnodes -n
rac1 1
rac2 2
[grid@rac1 ~]$ ps -ef|grep lsnr|grep -v 'grep'|grep -v 'ocfs'|awk '{print$9}'
LISTENER_SCAN1
LISTENER
[grid@rac1 ~]$ srvctl status asm -a
[grid@rac1 ~]$ lsnrctl status
[grid@rac1 ~]$ srvctl config database -d oracledbrac
[grid@rac1 ~]$ asmcmd lsdsk --statistics -G DATA
[grid@rac1 ~]$ crsctl check crs
[grid@rac1 ~]$ crs_stat -t -v