Oracle dataguard切换实施步骤
主备库的切换主要在两种情况下切换,Switchover和Failover,这两种切换都需要手工执行完成,不建议自动执行。
主库端 192.168.411.20
备库端 192.168.411.221
一是Switchover(计划中的切换,不会丢失数据)
二是Failover(当主库出现故障的时候需要主备库切换角色)
特别注意:
1、备份:无论哪种切换都要先全备一次,以备不测
2、部分命令执行时间长短不一,最好让它自己执行完,注意观察主备日志是否有异常
1、【Switchover】
主库
col OPEN_MODE for a30
col PROTECTION_MODE for a30
col PROTECTION_LEVEL for a30
col SWITCHOVER_STATUS for a30
SQL> select OPEN_MODE,PROTECTION_MODE,PROTECTION_LEVEL,SWITCHOVER_STATUS ,database_role from v$database;
READ WRITE MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE TO STANDBY PRIMARY
看还有没其他session,
SELECT COUNT(*) FROM V$SESSION WHERE USERNAME IS NOT NULL;
1
在切换前,杀掉所有的数据库连接 观察SWITCHOVER_STATUS,如果是 TO STANDBY,则可以直接切换。如果SESSIONS ACTIVE ,则用
如果是to standby表可以正常切换.
直接执行alter database commit to switchover to physical standby;
否则执行 alter database commit to switchover to physical standby with session shutdown;
shutdown immediate;
startup nomount;
alter database mount standby database;
alter database recover managed standby database disconnect from session;
备库端
select switchover_status from v$database;
如果是to_primary表可以正常切换.
执行 alter database commit to switchover to primary;
否则执行 alter database commit to switchover to primary with session shutdown;
shutdown immediate;
startup;
2、【Failover】
(1)判断主数据库确实出现严重的硬件故障或其他原因导致主数据库无法启动。
(2)在物理备用数据库上检查是否有archive redo log gaps
SQL>SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;
(3)消除archive redo log gaps
从主数据库上或其他备份的地方把没有传到物理备用数据库的archive redo log传到物理备用数据库上,并注册到物理备用数据库的controlfile中。
SQL> ALTER DATABASE REGISTER PHYSICAL LOGFILE 'archive redo log文件名称';
重复2,3步骤直到V$ARCHIVE_GAP视图无记录存在。
(4)在物理备用数据库上发起failover操作
SQL > ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE;
(5)把物理备用数据库转化成主用角色
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
(6)把新的主用数据库重新启动
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;
(7)对新的主用数据库做全备份.