ADG主备库切换 - Failover

本文详细介绍了如何检查备库状态、检测存档间隙、停止实时恢复、强制应用日志、切换备库为主库,以及重启数据库的过程。同时探讨了主库故障后的恢复选项,包括RMAN备份、闪回和数据库重建。

0 确定备库状态

select database_role, open_mode, switchover_status, protection_mode from v$database;
READ ONLY WITH APPLY - 物理备用数据库以实时查询模式打开
NOT ALLOWED - 在主数据库上,此状态表示没有有效且已启用的备用数据库。
	在备用数据库上,此状态表示尚未从主数据库接收到切换请求。
TO PRIMARY - 数据库已准备好切换到主角色。

1 查看是否存在Gap

select thread#, low_sequence#, high_sequence# from v$archive_gap;

显示有关备用数据库上的存档间隙的信息。此视图可用于找出阻止当前恢复的当前存档缺口

2 停止备库实时恢复

alter database recover managed standby database cancel;
@stbstatus

3 强制应用备库的所有日志

alter database recover managed standby database finish force;
select database_role, open_mode, switchover_status, protection_mode from v$database;

4 备库 -> 主库

alter database commit to switchover to primary with session shutdown; -- 如果失败就执行下面的语句
alter database active physical standby database; -- Active

5 启动数据库

alter database open;

6 说明:经过Failover,我们认为Primary站点其实已经不能作为HA架构成员了。重新让Primary加入进去的方法有三个:

① 利用RMAN备份将Primary恢复到failover之前,重新进行日志弥补、角色切换;
② 利用Flashback Database策略,将数据库恢复到failover之前的时间点;
③ 删除Primary数据库,重新利用新Primary搭建standby。

### 配置 ADG 切换 ADG(Active Data Guard)切换Oracle Data Guard 架构中的一项关键功能,用于在发生故障时将数据库提升为新的。以下是配置和执行切换的详细步骤: #### 1. 使用 DGMGRL 工具进行切换 DGMGRL 是 Oracle 提供的一个命令行工具,专门用于管理 Data Guard 配置。通过该工具可以轻松实现切换。 示例操作如下: ```bash DGMGRL> CONNECT SYS/password@primary_db AS SYSDBA; DGMGRL> SWITCHOVER TO standby_db; ``` 此命令将 `primary_db` 切换 `standby_db`,并将其提升为[^3]。 #### 2. 使用 SQL*Plus 命令进行手动切换 如果未使用 DGMGRL,也可以通过 SQL*Plus 执行切换操作。以下是一个典型的切换流程: - **步骤 1:检查的状态** ```sql SELECT DATABASE_ROLE, OPEN_MODE FROM V$DATABASE; ``` 确保处于 `PRIMARY` 角色且为 `READ WRITE` 模式,而处于 `PHYSICAL STANDBY` 角色且为 `READ ONLY` 模式。 - **步骤 2:在上停止日志传输** ```sql ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=DEFER; ``` - **步骤 3:在上应用所有未完成的日志** ```sql ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT; ``` - **步骤 4:将提升为** ```sql ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN; ``` - **步骤 5:重新启动原作为** 如果原仍然可用,则需要将其转换为以继续参与 Data Guard 配置: ```sql ALTER DATABASE CONVERT TO PHYSICAL STANDBY; ``` #### 3. 自动故障切换配置 为了实现自动故障切换,需启用 Fast-Start Failover(FSFO)。FSFO 允许在不可用时自动将数据库提升为,而无需人工干预。 - **启用 FSFO 的基本步骤:** ```bash DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MAXIMUM AVAILABILITY; DGMGRL> ENABLE FAST_START FAILOVER; DGMGRL> START OBSERVER; ``` 这些命令将启用快速启动故障切换,并由观察器监控状态,一旦检测到不可用,将自动触发切换操作[^2]。 --- ### 故障解决 #### 1. 日志传输中断 **问题描述:** 无法接收来自的归档日志。 - **解决方案:** - 检查网络连接是否正常。 - 确认的 `LOG_ARCHIVE_DEST_n` 参数是否正确配置。 -上查询 `V$ARCHIVED_LOG` 视图,查看是否有缺失的日志文件。 - 如果发现日志缺失,可以通过 RMAN 手动恢复并同步日志: ```bash RMAN> RECOVER DATABASE NOREDO; ``` #### 2. 数据库角色切换失败 **问题描述:** 在执行切换时提示角色转换失败。 - **解决方案:** - 检查当前数据库角色是否匹配预期目标。 - 确保在切换前关闭所有活动会话。 - 如果切换失败,尝试重新执行切换命令或重启数据库实例。 #### 3. 同步延迟过大 **问题描述:** 之间的数据同步存在较大延迟。 - **解决方案:** - 增加 `MRP` 进程的数量以加速日志应用: ```sql ALTER DATABASE RECOVER MANAGED STANDBY DATABASE PARALLEL 4; ``` - 调整 `LOG_ARCHIVE_CONFIG` 和 `FAL_SERVER` 参数,优化日志传输效率。 #### 4. 自动故障切换未触发 **问题描述:** 即使不可用,系统仍未触发自动故障切换- **解决方案:** - 确认 FSFO 已正确启用。 - 检查观察器是否正在运行。 - 查看 `DGMGRL` 中的配置是否包含正确的故障切换目标。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值