ADG swicthover操作(主备切换)

本文详细介绍了Oracle Active Data Guard (ADG) 的主备切换过程,包括准备阶段、主库操作、备库操作,以及如何进行主备角色转换。通过检查ADG状态、停掉相关作业和业务、执行切换命令等步骤,确保了切换的顺利进行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ADG switch over(主备切换)

1:准备工作

1.1检查ADG状态是否正常

Standby

Sql>select process,status fromv$managed_standby;

 

Note:RFSidleMRP0APPLYING_LOG

 

Primary

Sql>SELECT RECOVERY_MODE FROMV$ARCHIVE_DEST_STATUS WHERE DEST_ID=2;

 

Note:RECOVERY_MODEMANAGED REAL TIME APPLY 

 

1.2 检查是否有gap

Sql>select * from v$archive_gap

Note:如果存在gap,可以从主库复制传输缺失的归档文件到备库,并注册

 

1.3停掉jobprimary

主库停止运行的JOB,并设置参数:

Sql>Alter system set job_queue_processing=0 scope=both;

Sql>Alter system set AQ_TM_PROCESSES=0 scope=both;

Note:切换完成在开启

 

1.4

### 配置 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、付费专栏及课程。

余额充值