物理STANDBY的SWITCHOVER切换会把当前的一个物理STANDBY切换为PRIMARY数据库,而PRIMARY数据库且变成物理STNADBY数据库。
这篇描述RAC环境数据库SWITCHOVER切换到一个单实例数据库。
DATA GUARD物理STANDBY的 SWITCHOVER切换:http://yangtingkun.itpub.net/post/468/412324
在进行DATA GUARD的物理STANDBY切换前需要注意:
确认主库和从库间网络连接通畅;
确认没有活动的会话连接在数据库中;
PRIMARY数据库处于打开的状态,STANDBY数据库处于MOUNT状态;
确保STANDBY数据库处于ARCHIVELOG模式;
如果设置了REDO应用的延迟,那么将这个设置去掉;
确保配置了主库和从库的初始化参数,使得切换完成后,DATA GUARD机制可以顺利的运行。
而对于RAC环境的切换,还需要注意一点,RAC环境的DATA GUARD切换只能启动一个数据库实例,其他的实例需要关闭:
SQL> CONN SYS/TEST@TESTRAC2 AS SYSDBA
已连接。
SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;
INSTANCE_NAME
----------------
testrac2
SQL> SHUTDOWN IMMEDIATE
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> CONN SYS/TEST@TESTRAC1 AS SYSDBA
已连接。
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
--------------------
SESSIONS ACTIVE
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;
数据库已更改。
SQL> SHUTDOWN IMMEDIATE
ORA-01507: 未装载数据库
ORACLE 例程已经关闭。
SQL> STARTUP MOUNT
ORACLE 例程已经启动。
Total System Global Area 2147483648 bytes
Fixed Size 2031480 bytes
Variable Size 956301448 bytes
Database Buffers 1174405120 bytes
Redo Buffers 14745600 bytes
数据库装载完毕。
下面连接到STANDBY数据库,并切换到为PRIMARY数据库:
SQL> CONN SYS/TEST@TESTRAC_STANDBY AS SYSDBA
已连接。
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
--------------------
TO PRIMARY
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
数据库已更改。
SQL> ALTER DATABASE OPEN;
数据库已更改。
SQL> CONN SYS/TEST@TESTRAC1 AS SYSDBA
已连接到空闲例程。
SQL> STARTUP MOUNT
ORACLE 例程已经启动。
Total System Global Area 2147483648 bytes
Fixed Size 2031480 bytes
Variable Size 956301448 bytes
Database Buffers 1174405120 bytes
Redo Buffers 14745600 bytes
数据库装载完毕。
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
数据库已更改。
至此,RAC环境的SWITCHOVER切换完成。下面检查一下日志是否已经从目前的主库传播到从库就可以了。
下面简单描述一下,将主库切换为RAC环境的过程:
SQL> CONN SYS/TEST@TESTRAC_STANDBY AS SYSDBA
已连接。
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
--------------------
SESSIONS ACTIVE
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;
数据库已更改。
SQL> SHUTDOWN IMMEDIATE
ORA-01507: 未装载数据库
ORACLE 例程已经关闭。
SQL> STARTUP MOUNT
ORACLE 例程已经启动。
Total System Global Area 2147483648 bytes
Fixed Size 2031480 bytes
Variable Size 520093832 bytes
Database Buffers 1610612736 bytes
Redo Buffers 14745600 bytes
数据库装载完毕。
SQL> CONN SYS/TEST@TESTRAC1 AS SYSDBA
已连接。
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
--------------------
SESSIONS ACTIVE
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
数据库已更改。
SQL> ALTER DATABASE OPEN;
数据库已更改。
SQL> CONN SYS/TEST@TESTRAC2 AS SYSDBA
已连接到空闲例程。
SQL> STARTUP
ORACLE 例程已经启动。
Total System Global Area 2147483648 bytes
Fixed Size 2031480 bytes
Variable Size 520093832 bytes
Database Buffers 1610612736 bytes
Redo Buffers 14745600 bytes
数据库装载完毕。
数据库已经打开。
SQL> CONN SYS/TEST@TESTRAC_STANDBY AS SYSDBA
已连接。
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
数据库已更改。
这个操作只是上面的一个反向操作,就不详细描述了。
RAC环境的切换似乎和普通环境的切换相差不大,但是这次切换花费了将近3天的时间。
只要原因是碰到了下面的几个bug:
SWITCHOVER RAC数据库出现ORA-1093:http://yangtingkun.itpub.net/post/468/417767
SWITCHOVER RAC数据库出现ORA-600(kcctrdf_2)错误:http://yangtingkun.itpub.net/post/468/418311
ORA-19864错误:http://yangtingkun.itpub.net/post/468/418784
三个bug中的后两个,在metalink上都找不到解决方法,只能通过自己的摸索来解决。看来越复杂的机制相应的问题就越多,而且相关的参考信息也越少。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4227/viewspace-69521/ ,如需转载,请注明出处,否则将追究法律责任。