第一部分 主备数据库切换
1.1 检查D G 同步情况 检查DG同步进程状态:SQL> select process, status,sequence#,block#,blocks, delay_mins from v$managed_standby;检查DG日志同步延时情况:SQL> select thread#,max(sequence#) from gv$archived_log group by thread#;SQL> select thread#,max(sequence#) from gv$archived_log where applied='YES' group by thread#;
1.2 关闭主备库 2 节点
SQL> shutdown immediate;
1.3 源端生产库主切从
SQL> select name,database_role,switchover_status from v$database;SQL> alter database commit to switchover to physical standby with session shutdown;
1.4 目标D G 库从切主
SQL> select name,database_role,switchover_status from v$database;SQL> alter database commit to switchover to primary;SQL> alter database open;如果是switchover_status 列时"NOT ALLOWED"表示归档还没有应用完成,可以等待一段时间;如果日志全部应用了再查看角色转换状态;如果角色转换状态是TO PRIMARY,那么表示可以进行角色转换。执行从转主的命令,命令执行成功后,数据库的状态会变为mount。
1.5 目标端启动2节点
Shell> su – oracleShell> sqlplus / as sysdbaSQL> startup
1.6 新主新备重新同步
在节点1上开启MRPSQL> startupSQL> alter database recover managed standby database using current logfile disconnect from session;在节点2直接启动SQL> startup
1.7 检查D G 同步情况
检查DG同步进程状态:SQL> select process, status,sequence#,block#,blocks, delay_mins from v$managed_standby;检查DG日志同步延时情况:SQL> select thread#,max(sequence#) from gv$archived_log group by thread#;SQL> select thread#,max(sequence#) from gv$archived_log where applied='YES' group by thread#;
第二部分 RAC集群IP修改
第2部分
2.1 修改R AC 两节点/ etc/ hosts
1节点:Vi /etc/hosts192.168.17.101 racdb1192.168.17.13 racdb1-vip10.253.253.101 racdb1-priv192.168.17.102 racdb2192.168.17.14 racdb2-vip10.253.253.102 racdb2-priv192.168.17.15 orcl-scan2节点:Vi /etc/hosts192.168.17.101 racdb1192.168.17.13 racdb1-vip10.253.253.101 racdb1-priv192.168.17.102 racdb2192.168.17.14 racdb2-vip10.253.253.102 racdb2-priv192.168.17.15 orcl-scan
2.2 先停SCAN监听,再停SCAN VIP
[grid@racdb2 ~]$/u01/app/12.2/grid/bin/srvctl stop scan_listener[grid@racdb2 ~]$/u01/app/12.2/grid/bin/srvctl stop scan[grid@racdb2 ~]$/u01/app/12.2/grid/bin/srvctl status scan
2.3 先停本地监听,再停本地VIP
[grid@racdb2 ~]$ srvctl stop listener[grid@racdb2 ~]$ srvctl stop vip -n racdb1[grid@racdb2 ~]$ srvctl stop vip -n racdb2
2.4 修改R AC 两节点 PUBLIC IP
[root@racdb1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0IPADDR=192.168.17.101GATEWAY=192.168.17.254[root@racdb1 ~]# ifdown eth0[root@racdb1 ~]# ifup eth0[root@racdb1 ~]# ip a [root@racdb2 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0IPADDR=192.168.17.102GATEWAY=192.168.17.254[root@racdb2 ~]# ifdown eth0[root@racdb2 ~]# ifup eth0[root@racdb2 ~]# ip a
2.5 修改R AC 集群 PUBLIC 注册信息
[root@racdb1 ~]# /u01/app/12.2/grid/bin/oifcfg delif -global eth0[root@racdb1 ~]# /u01/app/12.2/grid/bin/oifcfg setif -global eth0/192.168.17.0:public
2.6 修改R AC 两节点V IP
[root@racdb1 ~]# /u01/app/12.2/grid/bin/srvctl modify nodeapps -n racdb1 -A 192.168.17.13/255.255.255.0/eth0[root@racdb1 ~]# /u01/app/12.2/grid/bin/srvctl modify nodeapps -n racdb2 -A 192.168.17.14/255.255.255.0/eth0 [root@racdb1 ~]# /u01/app/12.2/grid/bin/srvctl config vip -n racdb1VIP exists: /racdb1-vip/192.168.17.13/192.168.0.0/255.255.255.0/eth0, hosting node racdb1[root@racdb1 ~]# /u01/app/12.2/grid/bin/srvctl config vip -n racdb2VIP exists: /racdb2-vip/192.168.17.14/192.168.0.0/255.255.255.0/eth0, hosting node racdb2
2.7 修改R AC 集群 SCAN VIP
[root@racdb1 ~]# /u01/app/12.2/grid/bin/srvctl modify scan -n 192.168.17.15
2.8 先启本地VIP,再启本地监听
[root@racdb1 ~]# /u01/app/12.2/grid/bin/srvctl start vip -n racdb1[root@racdb1 ~]# /u01/app/12.2/grid/bin/srvctl start vip -n racdb2[root@racdb1 ~]# /u01/app/12.2/grid/bin/srvctl start listener
2.9 先启SCAN VIP,再启SCAN监听
[root@racdb1 ~]#/u01/app/12.2/grid/bin/srvctl start scan[root@racdb1 ~]#/u01/app/12.2/grid/bin/srvctl start scan_listener
第三部分 迁移失败回退方案
第3部分
3.1 关闭目标端数据库或主机
SQL> shutdown immediate或者Shell> shutdown -h now
3.2 启动老生产数据库和监听
Shell> sqlplus / as sysdbaSQL> alter database activate standby database;注:由于老生产库环境处于备库角色,因此在极端情况下,可以直接强制打开,恢复业务。
