依沿用上节配置的dg1和dg2的data guard环境
switchover一般用于主机要维护或升级,此时备机就要切换过来。成为主机,对外提供服务,日后要是主机恢复正常。
可以恢复为原来的主备库配置,不同于failover(它是主机恢复不了。一旦角色切换,以后不可能还原回来了)
下为switchover操作流程:
1,select switchover_status from v$database;---在dg1上运行,要是值为to standby,可以switchover
要不是,值为sessions active,说明还要其它用户的活动会话,一般都是oracle oem agent会话,可以
emctl stop agent,要是还有其它会话(非系统会话),请alter system kill session 'sid,serial#'
alter system set aq_tm_processes=0
alter system set jop_queue_processes=0
2,alter database commit to switchover to physical standby;--在dg1上运行,这就把主库切换为备库了哟,在运行这一步之前你要在备库
运行select switchover_status from v$database,会显示sessions active,运行完这步就不会有了
3,shutdown immediate;---在dg1上
startup mount;--in dg1
alter database mount standby database; --in dg1 ,这其实就和在前一节配置dg一样的,在启备库操作一个样,现在dg1成备库了吗,呵呵
alter database recover managed standby database disconnect;--enable 备库日志接受和应用
4,select switchover_status from v$database;--在dg2上,现在其值为to primary
5,alter database commit to switchover to primary;--在dg2上,这就把备库切换为主机了
6,shutdown immediate;---在dg2
startup pfile='/export/oracle/oradata/dg2pfile.ora';--in dg2
7,alter system set log_archive_dest_2='SERVICE=dg1';--in dg2
---这个相当重要,不配置这个,主库归档日志不能传送到备库,也起不到data guard的数据同步作用。
8,conn scott/system ---在dg2上运行,也就是新主库上,作以下就是测试新主库的数据变更是否会同步到新的备库上
create table newly_switchover(a int);
insert into newly_switchover values(1);
conn /as sysdba
alter system switch logfile;--可以多次运行切换日志,让他快点归档
9,select name,to_char(first_time,'yyyy-mm-dd hh24:mi:ss'), archived,applied from v$archived_log;---在dg1上运行,查看从dg2上传送过来的归档日志同步和应用情况,要是你看全为yes,接着
alter database recover managed standby database cancel;
alter database open read only;
conn scott/system
select * from newly_switchover;--要有数据过来。就ok了
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9240380/viewspace-589040/ ,如需转载,请注明出处,否则将追究法律责任。