RAC节点丢失且被强制改成单节点后,重新改造成RAC的步骤

来源:互联网 发布:淘宝进货技巧 编辑:程序博客网 时间:2024/05/17 21:39

 

2.2作业步骤

       以下步骤在计划时间内按照顺序执行,执行前需要确认业务已经停止,执行过程核对输出结果。

1、正常关闭数据库和ASM实例(预计10分钟)

[oracle@fjdb1~]$ export ORACLE_SID=orcl1

[oracle@fjdb1~]$ sqlplus / as sysdba

SQL>shutdown immediate;

SQL>exit

[oracle@fjdb1~]$ export ORACLE_SID=+ASM1

[oracle@fjdb1~]$ sqlplus / as sysdba

SQL>shutdown immediate;

SQL>exit

 

 

2、关闭CRS服务(预计5分钟)

[root@fjdb1~]# /oracle/crs/bin/crsctl stop crs

 

 

3、两节点网络配置(IP地址、/etc/hosts解析文件)恢复到构建单机前的状态(预计12分钟)

[root@fjdb1~]# cat /etc/hosts #恢复原host文件

[root@fjdb1~]# cd /etc/sysconfig/network-scripts/  #检查ifcfg-eth0  ifcfg-eth0:0 ifcfg-eth0:1文件并重启网卡

 

 

4、重命名原RAC相关目录及文件(预计5分钟)

mv/etc/rc.d/rc5.d/S96init.crs /etc/rc.d/rc5.d/S96init.crs.bak

mv/etc/rc.d/init.d/init.crs   /etc/rc.d/init.d/init.crs.bak

mv/etc/rc.d/rc4.d/K96init.crs /etc/rc.d/rc4.d/K96init.crs.bak

mv/etc/rc.d/rc6.d/K96init.crs /etc/rc.d/rc6.d/K96init.crs.bak

mv/etc/rc.d/rc1.d/K96init.crs /etc/rc.d/rc1.d/K96init.crs.bak

mv/etc/rc.d/rc0.d/K96init.crs /etc/rc.d/rc0.d/K96init.crs.bak

mv/etc/rc.d/rc2.d/K96init.crs /etc/rc.d/rc2.d/K96init.crs.bak

mv/etc/rc.d/rc3.d/S96init.crs  /etc/rc.d/rc3.d/S96init.crs.bak

mv/etc/oracle /etc/oracle.bak

mv/etc/oraInst.loc /etc/oraInst.loc.bak

mv/etc/oratab /etc/oratab.bak                                             

mv/etc/init.d/init.cssd  /etc/init.d/init.cssd.bak

mv/etc/init.d/init.crs  /etc/init.d/init.crs.bak

mv/etc/init.d/init.crsd /etc/init.d/init.crsd.bak

mv/etc/init.d/init.evmd /etc/init.d/init.evmd.bak                                             

mv/etc/rc2.d/K96init.crs /etc/rc2.d/K96init.crs.bak

mv/etc/rc2.d/S96init.crs /etc/rc2.d/S96init.crs.bak

mv/etc/rc3.d/K96init.crs /etc/rc3.d/K96init.crs.bak

mv/etc/rc3.d/S96init.crs /etc/rc3.d/S96init.crs.bak

mv/etc/rc5.d/K96init.crs /etc/rc5.d/K96init.crs.bak

mv/etc/rc5.d/S96init.crs /etc/rc5.d/S96init.crs.bak

mv/etc/inittab.crs       /etc/inittab.crs.bak

mv/usr/local/bin/coraenv /usr/local/bin/coraenv.bak

mv/usr/local/bin/dbhome /usr/local/bin/dbhome.bak

mv/usr/local/bin/oraenv /usr/local/bin/oraenv.bak

mv/tmp/.oracle           /tmp/.oracle.bak

# 以上直接运行

 

mv/etc/inittab /etc/inittab.bak

cp/etc/inittab.orig /etc/inittab

#以上交互式运行,并检查inittab文件为原始inittab文件

 

 

5、两节点Oracle安装目录备份及重建(预计3分钟)

[root@fjdb1oracle]# mv crs crs.bak

[root@fjdb1oracle]# mv db db.bak

[root@fjdb1oracle]# mv oraInventory oraInventory.bak

[root@fjdb1oracle]# mkdir crs db oraInventory

[root@fjdb1oracle]# chown -R oracle:oinstall crs db oraInventory

 

6、重启两台服务器(预计10分钟)

[root@fjdb1~]# reboot

 

7、两节点间等效性及两节点时间差确认(预计3分钟)

ssh fjdb1date;

sshfjdb1-priv date;

ssh fjdb2date;

sshfjdb2-priv date;

如失败需要重新构建oracle用户节点间等效性,并调整两节点时间差

 

8、安装环境预检查(预计5分钟)

[oracle@fjdb1cluvfy]$ pwd

/soft/clusterware/cluvfy

[oracle@fjdb1cluvfy]$ ./runcluvfy.sh stage -pre crsinst -n fjdb1,fjdb2 -verbose

Performingpre-checks for cluster services setup

 

Checkingnode reachability...

 

Check:Node reachability from node "fjdb1"

  Destination Node                      Reachable?             

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

  fjdb1                                 yes                    

  fjdb2                                 yes                    

Result:Node reachability check passed from node "fjdb1".

 

......

 

 

Check:User existence for "nobody"

  Node Name    Status                   Comment                

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

  fjdb2        exists                   passed                 

  fjdb1        exists                   passed                 

Result:User existence check passed for "nobody".

 

Systemrequirement passed for 'crs'

 

Pre-checkfor cluster services setup was successful.

 

9、运行rootpre.sh脚本(预计2分钟)

[root@fjdb1rootpre]# pwd

/soft/clusterware/rootpre

[root@fjdb1rootpre]# ./rootpre.sh

No OraCMrunning

 

10、在节点一上清空ocr磁盘和表决磁盘(预计5分钟)

[root@fjdb1~]# dd if=/dev/zero of=/dev/raw/raw1 bs=1M count=100

[root@fjdb1~]# dd if=/dev/zero of=/dev/raw/raw2 bs=1M count=100

[root@fjdb1~]# dd if=/dev/zero of=/dev/raw/raw3 bs=1M count=100

[root@fjdb1~]# dd if=/dev/zero of=/dev/raw/raw4 bs=1M count=100

#切勿动到数据磁盘

 

11、安装CRS,安装结束后按顺序执行脚本(预计35分钟)

[root@fjdb1~]# /oracle/oraInventory/orainstRoot.sh

[root@fjdb2~]# /oracle/oraInventory/orainstRoot.sh

[root@fjdb1~]# /oracle/crs/root.sh

[root@fjdb2~]# /oracle/crs/root.sh

Expectingthe CRS daemons to be up within 600 seconds.

CSS isactive on these nodes.

        fjdb1

        fjdb2

CSS isactive on all nodes.

Waitingfor the Oracle CRSD and EVMD to start

OracleCRS stack installed and running under init(1M)

Runningvipca(silent) for configuring nodeapps

 

Creating VIP application resource on (2) nodes...

Creating GSD application resource on (2) nodes...

Creating ONS application resource on (2) nodes...

Starting VIP application resource on (2) nodes...

Starting GSD application resource on (2) nodes...

Starting ONS application resource on (2) nodes...

 

 

Done.

 

 

12、安装Oracle数据库软件(预计30分钟)

# 选择“Install Software Only”

 

 

13、升级CRS软件版本(预计30分钟)

# 使用升级包升级CRS版本到10.2.0.4

# 提示执行root102.sh脚本时,先停crs再执行root102.sh脚本

 

 

14、升级DB软件版本(预计30分钟)

# 使用升级包升级DB版本到10.2.0.4

 

 

15、恢复监听和TNS文件(预计5分钟)

$ cp/oracle/db.bak/network/admin/listener.ora /oracle/db/network/admin/listener.ora

$ cp /oracle/db.bak/network/admin/tnsnames.ora/oracle/db/network/admin/tnsnames.ora

 

 

16、注册数据库和实例(预计5分钟)

[oracle@fjdb1orcl]$ srvctl add database -d orcl -o /oracle/db

[oracle@fjdb1orcl]$ srvctl add instance -d orcl -i orcl1 -n fjdb1

[oracle@fjdb1orcl]$ srvctl add instance -d orcl -i orcl2 -n fjdb2

[oracle@fjdb1orcl]$ /oracle/crs/bin/crs_stat -t

Name           Type           Target    State    Host       

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

ora....SM1.asmapplication    ONLINE    ONLINE   fjdb1      

ora....B1.lsnrapplication      ONLINE   ONLINE    fjdb1      

ora.fjdb1.gsd  application   ONLINE    ONLINE    fjdb1      

ora.fjdb1.ons  application   ONLINE    ONLINE    fjdb1      

ora.fjdb1.vip  application   ONLINE    ONLINE    fjdb1      

ora....SM2.asmapplication    ONLINE    ONLINE   fjdb2      

ora....B2.lsnrapplication      ONLINE   ONLINE    fjdb2      

ora.fjdb2.gsd  application   ONLINE    ONLINE    fjdb2      

ora.fjdb2.ons  application   ONLINE    ONLINE    fjdb2      

ora.fjdb2.vip  application   ONLINE    ONLINE    fjdb2      

ora.orcl.db   application    OFFLINE   OFFLINE              

ora....l1.inst application       OFFLINE   OFFLINE              

ora....l2.inst application       OFFLINE  OFFLINE     

 

17、修改实例到ASM的注册关系(预计5分钟)

[oracle@fjdb1orcl]$ srvctl modify instance -d orcl -i orcl1 -s +ASM1

[oracle@fjdb1orcl]$ srvctl modify instance -d orcl -i orcl2 -s +ASM2

 

18、创建两节点实例对应的pfile指针指向本次故障之前的spfile的路径,即ASM实例下的spfile(预计5分钟)

[oracle@fjdb1~]$ vi /oracle/db/dbs/initorcl1.ora

SPFILE='+DATA/ORCL/PARAMETERFILE/spfileorcl.ora'

[oracle@fjdb2~]$ vi /oracle/db/dbs/initorcl2.ora

SPFILE='+DATA/ORCL/PARAMETERFILE/spfileorcl.ora'

如无spfile,可先用pfile启动。

 

19、启动数据库服务(预计5分钟)

[oracle@fjdb1dbs]$ srvctl start database -d orcl

[oracle@fjdb1dbs]$ /oracle/crs/bin/crs_stat -t

Name           Type           Target    State    Host       

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

ora....SM1.asmapplication    ONLINE    ONLINE   fjdb1      

ora....B1.lsnrapplication      ONLINE   ONLINE    fjdb1      

ora.fjdb1.gsd  application   ONLINE    ONLINE    fjdb1      

ora.fjdb1.ons  application   ONLINE    ONLINE    fjdb1      

ora.fjdb1.vip  application   ONLINE    ONLINE    fjdb1      

ora....SM2.asmapplication    ONLINE    ONLINE   fjdb2      

ora....B2.lsnrapplication      ONLINE   ONLINE    fjdb2      

ora.fjdb2.gsd  application   ONLINE    ONLINE    fjdb2      

ora.fjdb2.ons  application   ONLINE    ONLINE    fjdb2      

ora.fjdb2.vip  application   ONLINE    ONLINE    fjdb2      

ora.orcl.db    application    ONLINE   ONLINE    fjdb1      

ora....l1.instapplication      ONLINE   ONLINE    fjdb1      

ora....l2.instapplication      ONLINE   ONLINE    fjdb2

 

20、补充参数配置(预留5分钟)

确认 /etc/sysctl.conf 里信号量kernel.sem = 250 32000 100 128,然后修改processes值

SQL>alter system set processes=2000 scope=spfile;

SQL>shutdown immediate;

SQL>startup

 

       以上顺利完成后,检查应用,确认都正常后,则此次作业结束。否则进入回退步骤章节。

 

 

当在预计时间内未完成上述作业时,启用回退方案B,将数据库回退到作业前的状态,确保业务正常运行。

1、停止Oracle数据库,如数据库已经停止,略过此步骤(预计5分钟)

[oracle@fjdb1~]$ srvctl stop database -d orcl

 

 

2、停用两节点CRS服务和资源,如CRS服务未启动,略过此步骤(预计5分钟)

[root@fjdb1~]# /oracle/crs/bin/crsctl stop crs

 

 

3、恢复原有网络配置(IP地址、/etc/hosts解析文件)到作业前状态(预计5分钟)

# 恢复IP地址配置,暂不启用虚拟网卡

# 恢复/etc/hosts解析文件

 

 

4、重命名此次操作新生成的文件,注意后缀为newbak(预计5分钟)

mv/etc/rc.d/rc5.d/S96init.crs /etc/rc.d/rc5.d/S96init.crs.newbak

mv/etc/rc.d/init.d/init.crs   /etc/rc.d/init.d/init.crs.newbak

mv/etc/rc.d/rc4.d/K96init.crs /etc/rc.d/rc4.d/K96init.crs.newbak

mv/etc/rc.d/rc6.d/K96init.crs /etc/rc.d/rc6.d/K96init.crs.newbak

mv/etc/rc.d/rc1.d/K96init.crs /etc/rc.d/rc1.d/K96init.crs.newbak

mv/etc/rc.d/rc0.d/K96init.crs /etc/rc.d/rc0.d/K96init.crs.newbak

mv/etc/rc.d/rc2.d/K96init.crs /etc/rc.d/rc2.d/K96init.crs.newbak

mv/etc/rc.d/rc3.d/S96init.crs /etc/rc.d/rc3.d/S96init.crs.newbak

 

mv/etc/oracle /etc/oracle.newbak

mv /etc/oraInst.loc/etc/oraInst.loc.newbak

mv/etc/oratab /etc/oratab.newbak

                                           

mv/etc/init.d/init.cssd /etc/init.d/init.cssd.newbak

mv/etc/init.d/init.crs  /etc/init.d/init.crs.newbak 

mv/etc/init.d/init.crsd  /etc/init.d/init.crsd.newbak

mv/etc/init.d/init.evmd /etc/init.d/init.evmd.newbak

                                            

mv/etc/rc2.d/K96init.crs /etc/rc2.d/K96init.crs.newbak

mv/etc/rc2.d/S96init.crs /etc/rc2.d/S96init.crs.newbak

mv/etc/rc3.d/K96init.crs /etc/rc3.d/K96init.crs.newbak

mv/etc/rc3.d/S96init.crs /etc/rc3.d/S96init.crs.newbak

mv/etc/rc5.d/K96init.crs /etc/rc5.d/K96init.crs.newbak

mv/etc/rc5.d/S96init.crs /etc/rc5.d/S96init.crs.newbak

mv/etc/inittab.crs       /etc/inittab.crs.newbak    

 

mv/usr/local/bin/coraenv /usr/local/bin/coraenv.newbak

mv/usr/local/bin/dbhome /usr/local/bin/dbhome.newbak

mv/usr/local/bin/oraenv /usr/local/bin/oraenv.newbak

 

mv/tmp/.oracle         /tmp/.oracle.newbak 

mv/etc/inittab /etc/inittab.newbak

 

 

5、恢复作业前备份的文件,注意后缀为bak(预计5分钟)

mv/etc/rc.d/rc5.d/S96init.crs.bak /etc/rc.d/rc5.d/S96init.crs

mv/etc/rc.d/init.d/init.crs.bak  /etc/rc.d/init.d/init.crs 

mv/etc/rc.d/rc4.d/K96init.crs.bak /etc/rc.d/rc4.d/K96init.crs

mv/etc/rc.d/rc6.d/K96init.crs.bak /etc/rc.d/rc6.d/K96init.crs

mv/etc/rc.d/rc1.d/K96init.crs.bak /etc/rc.d/rc1.d/K96init.crs

mv/etc/rc.d/rc0.d/K96init.crs.bak /etc/rc.d/rc0.d/K96init.crs

mv/etc/rc.d/rc2.d/K96init.crs.bak /etc/rc.d/rc2.d/K96init.crs

mv/etc/rc.d/rc3.d/S96init.crs.bak /etc/rc.d/rc3.d/S96init.crs

 

mv/etc/oracle.bak /etc/oracle

mv/etc/oraInst.loc.bak /etc/oraInst.loc

mv/etc/oratab.bak /etc/oratab

 

mv/usr/local/bin/coraenv.bak /usr/local/bin/coraenv

mv/usr/local/bin/dbhome.bak  /usr/local/bin/dbhome

mv/usr/local/bin/oraenv.bak  /usr/local/bin/oraenv

                                             

mv/etc/init.d/init.cssd.bak /etc/init.d/init.cssd

mv/etc/init.d/init.crs.bak /etc/init.d/init.crs

mv/etc/init.d/init.crsd.bak /etc/init.d/init.crsd

                                              

mv/etc/rc2.d/K96init.crs.bak /etc/rc2.d/K96init.crs

mv/etc/rc2.d/S96init.crs.bak /etc/rc2.d/S96init.crs

mv/etc/rc3.d/K96init.crs.bak /etc/rc3.d/K96init.crs

mv/etc/rc3.d/S96init.crs.bak /etc/rc3.d/S96init.crs

mv/etc/rc5.d/K96init.crs.bak /etc/rc5.d/K96init.crs

mv/etc/rc5.d/S96init.crs.bak /etc/rc5.d/S96init.crs

                                             

mv/etc/inittab.crs.bak  /etc/inittab.crs

mv/tmp/.oracle.bak /tmp/.oracle

# 以上直接运行

 

cp/etc/inittab /etc/inittab.orig

mv/etc/inittab.bak /etc/inittab

# 着重核对/etc/inittab内容,确认与作业前的文件内容一致

 

 

6、在两节点备份并恢复crs和db目录(预计2分钟)

[root@fjdb1oracle]# mv crs crs.newbak

[root@fjdb1oracle]# mv db db.newbak

[root@fjdb1oracle]# mv crs.bak crs

[root@fjdb1oracle]# mv db.bak db

 

 

7、启动ASM及Oracle实例(预计5~10分钟)

[oracle@fjdb1~]$ export ORACLE_SID=ASM1

[oracle@fjdb1~]$ sqlplus / as sysdba

SQL> startup;

SQL>exit

[oracle@fjdb1~]$ export ORACLE_SID=+orcl1

[oracle@fjdb1~]$ sqlplus / as sysdba

SQL> startuppfile='/oracle/db/dbs/initORCL.ora';

SQL>exit

 

 

8、补充参数配置(预计10分钟)

1、修改pfile的processes参数值到2000,并重启数据库

2、配置虚拟网卡,使eth0:0对应地址192.168.40.11,eth0:1对应地址192.168.40.13

 

 

9、确认正常后,删除newbak文件(预计3分钟)

rm/etc/rc.d/rc5.d/S96init.crs.newbak

rm/etc/rc.d/init.d/init.crs.newbak

rm/etc/rc.d/rc4.d/K96init.crs.newbak

rm/etc/rc.d/rc6.d/K96init.crs.newbak

rm/etc/rc.d/rc1.d/K96init.crs.newbak

rm/etc/rc.d/rc0.d/K96init.crs.newbak

rm/etc/rc.d/rc2.d/K96init.crs.newbak

rm/etc/rc.d/rc3.d/S96init.crs.newbak

rm/etc/oracle.newbak

rm/etc/oraInst.loc.newbak

rm/etc/oratab.newbak

rm/etc/init.d/init.cssd.newbak

rm/etc/init.d/init.crs.newbak

rm/etc/init.d/init.crsd.newbak

rm/etc/rc2.d/K96init.crs.newbak

rm/etc/rc2.d/S96init.crs.newbak

rm/etc/rc3.d/K96init.crs.newbak

rm/etc/rc3.d/S96init.crs.newbak

rm/etc/rc5.d/K96init.crs.newbak

rm/etc/rc5.d/S96init.crs.newbak

rm/etc/inittab.crs.newbak

rm/usr/local/bin/coraenv.newbak

rm/usr/local/bin/dbhome.newbak

rm/tmp/.oracle.newbak

rm/usr/local/bin/oraenv.newbak

rm/etc/inittab.newbak

 

0 0