Oracle Data Guard 手动切换
Oracle Data Guard 手动切换指南
一、环境说明
| 角色 | 数据库名 | DB_UNIQUE_NAME | 当前状态 |
|---|---|---|---|
| 主库 | testdb |
testdb |
PRIMARY |
| 备库 | testst |
testst |
PHYSICAL STANDBY |
二、手动切换(Manual Switchover)
1️⃣ 在客户端上持续查询
在客户端(或任何连接应用)执行:
sqlplus sys/oracle@test_prim as sysdbaselect name, open_mode, db_unique_name, database_role from v$database;
期望输出:
| NAME | OPEN_MODE | DB_UNIQUE_NAME | DATABASE_ROLE |
|---|---|---|---|
| TESTDB | READ WRITE | testdb | PRIMARY |
2️⃣ 检查归档是否有间隙
在主库执行:
select STATUS, GAP_STATUS from V$ARCHIVE_DEST_STATUS where DEST_ID = 2;
在备库执行:
select NAME, VALUE, DATUM_TIME from V$DATAGUARD_STATS;
确认无日志间隙(Gap)。
3️⃣ 检查主库可切换状态
在 主库 执行:
select SWITCHOVER_STATUS from V$DATABASE;
可能结果:
TO STANDBY✅ → 可以切换SESSIONS ACTIVE→ 有活动会话,可强制切换NOT ALLOWED❌ → 无法切换(需检查传输/同步状态)
4️⃣ 将主库切换为备库
alter database commit to switchover to physical standby with session shutdown;
shutdown immediate;
startup mount;
此时主库已变为 PHYSICAL STANDBY。
5️⃣ 将备库切换为主库
在 备库 上执行:
select SWITCHOVER_STATUS from V$DATABASE;
结果应为 TO PRIMARY。
执行切换命令:
alter database commit to switchover to primary with session shutdown;
alter database open;
客户端的查询将恢复正常,显示新的主库:
select name, open_mode, db_unique_name, database_role from v$database;
6️⃣ 在新备库上启动 MRP 进程
原主库现在是新的备库,在上面执行:
alter database recover managed standby database disconnect;
7️⃣ 恢复原角色(可选)
若要切回原主备结构,重新执行上述步骤(交换执行)。
三、常用检查命令汇总
| 目的 | 命令 |
|---|---|
| 查看数据库角色 | select database_role from v$database; |
| 查看切换状态 | select switchover_status from v$database; |
| 检查日志 gap | select * from v$archive_gap; |
| 查看 Data Guard 状态 | select * from v$dataguard_status; |
| 查看 MRP 进程 | select process, status, sequence# from v$managed_standby; |
💡 提示:
- 确保两端归档无缺失;
- 网络连通正常;
- MRP(Managed Recovery Process)处于运行状态;
- 切换前建议备份控制文件和参数文件。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/948704.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!