转载标注:
原文链接:
参考至:http://yangtingkun.itpub.net/post/468/412324
如有错误,欢迎指正
邮箱:czmcj@163.com
物理STANDBY的SWITCHOVER切换会把当前的一个物理STANDBY切换为PRIMARY数据库,而PRIMARY数据库且变成物理STNADBY数据库。一般SWITCHOVER切换都是计划中的切换,特点是在切换后,不会丢失任何的数据,而且这个过程是可逆的,整个DATA GUARD环境不会被破坏,原来DATA GUARD环境中的所有物理和逻辑STANDBY都可以继续工作。在进行DATA GUARD的物理STANDBY切换前需要注意:确认主库和从库间网络连接通畅;确认没有活动的会话连接在数据库中;PRIMARY数据库处于打开的状态,STANDBY数据库处于MOUNT状态;确保STANDBY数据库处于ARCHIVELOG模式;如果设置了REDO应用的延迟,那么将这个设置去掉;确保配置了主库和从库的初始化参数,使得切换完成后,DATA GUARD机制可以顺利的运行。登陆PRIMARY数据库:[oracle@yangtk2 ~]$ sqlplus "/ as sysdba"SQL*Plus: Release 11.1.0.6.0 - Production on Thu Nov 8 02:20:13 2007Copyright (c) 1982, 2007, Oracle. All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> SET PAGES 100 LINES 120SQL> SET SQLP 'PRI_SQL> 'PRI_SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;SWITCHOVER_STATUS--------------------SESSIONS ACTIVEPRI_SQL> SELECT COUNT(*) FROM V$SESSION WHERE USERNAME IS NOT NULL;COUNT(*)----------1虽然当前数据库的状态是SESSIONS ACTIVE而不是TO STANDBY,但是查询V$SESSION会话,确认除了当前会话外,其他都是系统会话,那么就可以在主库进行SWITCHOVER切换了:PRI_SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;Database altered.PRI_SQL> SHUTDOWN IMMEDIATEORA-01507: database not mountedORACLE instance shut down.PRI_SQL> STARTUP MOUNTORACLE instance started.Total System Global Area 267825152 bytesFixed Size 1299316 bytesVariable Size 159386764 bytesDatabase Buffers 104857600 bytesRedo Buffers 2281472 bytesDatabase mounted.重启数据库,启动到MOUNT状态,注意,9i及以前版本需要START NOMOUNT,然后ALTER DATABASE MOUNT STANDBY DATABASE。下面登陆STANDBY数据库:[oracle@yangtk ~]$ sqlplus "/ as sysdba"SQL*Plus: Release 11.1.0.6.0 - Production on Sat Oct 20 12:16:01 2007Copyright (c) 1982, 2007, Oracle. All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> SET PAGES 100 LINES 120SQL> SET SQLP 'STB_SQL> 'STB_SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;SWITCHOVER_STATUS--------------------TO PRIMARY下面就可以将STANDBY数据库切换到PRIMARY数据库:STB_SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;Database altered.STB_SQL> ALTER DATABASE OPEN;Database altered.STANDBY数据库已经切换为PRIMARY数据库,下面只需要启动将STANDBY开始接收并恢复主库的日志就可以了。回到切换前的主库现在的从库:PRI_SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;Database altered.SWITCHOVER切换完成,最后检查一下归档是否可以正常传递到STANDBY数据库即可。