共计 2618 个字符,预计需要花费 7 分钟才能阅读完成。
本篇内容介绍了“DataGuard 切换的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让丸趣 TV 小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
环境:
db version:11.2.0.3
主库:两节点的 RAC
备库:两节点的 RAC
是异地灾备,网络质量不太好。
步骤:
1. 检查日志应用情况
standby database(备库检查):
SQL select thread#,SEQUENCE#,FIRST_TIME,next_time,applied from gv$archived_log order by sequence#; (确定日志都已经应用 )
2. 检查日志传输错误
SQL SELECT STATUS, GAP_STATUS FROM V$ARCHIVE_DEST_STATUS WHERE DEST_ID = 2; STATUS GAP_STATUS
——— ————————
VALID NO GAP
3. 评估切换时间 –rac 环境下备库只有一个实例可以为 open 状态。
set linesize 200
SQL column name format a22
SQL column value format a16
SQL column unit format a28
SQL column time_computed format a25
SQL select * from v$dataguard_stats;
NAME VALUE UNIT TIME_COMPUTED DATUM_TIME
———————- —————- —————————- ————————- ——————————
transport lag +00 01:47:32 day(2) to second(0) interval 10/29/2014 10:48:15 10/29/2014 10:47:58
apply lag +00 01:47:32 day(2) to second(0) interval 10/29/2014 10:48:15 10/29/2014 10:47:58
apply finish time day(2) to second(3) interval 10/29/2014 10:48:15
estimated startup time 20 second 10/29/2014 10:48:15
4. 由于主备库都是 rac,此环境下主库和备库都只有一个实例存活
srvctl stop instance -d EM -i EM2 – 先停止主库
srvctl stop instance -d EM_SH -i EMP2 – 停止备库
NOTE: 如果主库两个实例都存活会报错如下:
SQL alter database commit to switchover to physical standby with session shutdown;
alter database commit to switchover to physical standby with session shutdown
*
ERROR at line 1:
ORA-01105: mount is incompatible with mounts by other instances
5. 登录主库操作
SQL SELECT SWITCHOVER_STATUS FROM V$DATABASE; — 确保状态为 SESSION_ACTIVE 或者 TO STANDBY(由于是异地可能在 shut 一个实例后,redo 应用会有延迟,如果网络质量不太好,可等一等 )
alter database commit to switchover to physical standby with session shutdown; – 执行切换 (最好把应用停掉 ) – 执行完此操作后,数据库会自动 shut
STARTUP MOUNT; — 启动原来主库到 mount
6. 登录备库操作
SELECT SWITCHOVER_STATUS FROM V$DATABASE; — 确保状态会 SESSION_ACTIVE 或者 TO PRIMARY.
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN; – 执行角色切换
ALTER DATABASE OPEN;– 打开新主库
srvctl start instance -d databasename -i instance_name – 启动另外的节点
7. 登录新的备库
ALTER DATABASE OPEN; – 启动库
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT; – - 启动实时应用
srvctl start instance -d databasename -i instance_name; – 启动其他实例
8. 进行事务,发现并没有同步过来
archive log list 发现 scn 都没有
经过核查是因为主库并没有日志传输
alter system set log_archive_dest_state_2= enable sid= * – 在新的主库执行,启动日志传输服务
有可能查询数据的状态为:
SQL SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
——————–
FAILED DESTINATION
查看备库的 scn 没有变化,可重启下备库。
9. 检查是否同步
SELECT MAX(SEQUENCE#),THREAD# FROM V$ARCHIVED_LOG
WHERE RESETLOGS_CHANGE# = (SELECT MAX(RESETLOGS_CHANGE#) FROM V$ARCHIVED_LOG) GROUP BY THREAD#;
“DataGuard 切换的方法是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注丸趣 TV 网站,丸趣 TV 小编将为大家输出更多高质量的实用文章!