1. 首页 > Oracle教程 > 正文

Oracle教程FG208-DataGuard切换

本文档详细介绍Oracle DataGuard切换的操作步骤和最佳实践,风哥教程参考Oracle官方文档High Availability部分。更多视频教程www.fgedu.net.cn

Part01-基础概念与理论知识

1.1 切换概述

DataGuard切换(Switchover)是一种计划内的角色转换操作,将主数据库转换为备用数据库,将备用数据库转换为主数据库。学习交流加群风哥微信: itpux-com

切换的特点:

  • 计划内操作,无数据丢失
  • 主备数据库角色互换
  • 可以回滚操作
  • 用于维护、升级等场景

1.2 切换工作原理

切换的工作原理如下:

  1. 主数据库将所有重做日志传输到备用数据库
  2. 备用数据库应用所有接收到的重做日志
  3. 主数据库转换为备用角色
  4. 备用数据库转换为主角色
  5. 新的主数据库开始接受客户端连接

1.3 切换与故障转移的区别

特性 切换(Switchover) 故障转移(Failover)
触发方式 计划内操作 主数据库故障时
数据丢失 可能有(取决于保护模式)
可回滚性 可以 不可以
操作复杂度

Part02-生产环境规划与建议

2.1 切换前准备

切换前的准备工作:

  • 检查主备数据库状态,确保同步正常
  • 备份主数据库,以防万一
  • 通知相关人员,安排维护窗口
  • 测试应用程序连接新主数据库的能力
  • 准备回滚计划

2.2 切换时间窗口

切换的时间窗口考虑:

  • 选择业务低峰期进行切换
  • 预留足够的时间进行切换和验证
  • 提前通知用户,减少业务影响
  • 准备应急方案,应对可能的问题

2.3 回滚计划

回滚计划:

  • 记录切换前的状态
  • 准备回滚脚本
  • 确定回滚条件
  • 测试回滚流程

Part03-生产环境项目实施方案

切换的实施步骤:

  1. 检查主备数据库状态
  2. 验证备用数据库已应用所有重做日志
  3. 执行切换操作
  4. 验证新主数据库状态
  5. 配置客户端连接
  6. 监控系统状态

Part04-生产案例与实战讲解

4.1 使用DataGuard Broker执行切换

# 启动DGMGRL命令行工具
dgmgrl sys/password@PRIMARY

# 输出日志
DGMGRL for Linux: Release 19.0.0.0.0 – Production on Fri Apr 1 10:00:00 2026
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Welcome to DGMGRL, type “help” for information.
Connected to “fgedudb”
Connected as SYSDBA.

# 检查配置状态
SHOW CONFIGURATION;

# 输出日志
Configuration – fgedudb_dg
Protection Mode: MaxAvailability
Members:
fgedudb – Primary database
fgedudb_stby – Physical standby database

Fast-Start Failover: DISABLED

Configuration Status:
SUCCESS (status updated 32 seconds ago)

# 执行切换操作
SWITCHOVER TO ‘fgedudb_stby’;

# 输出日志
Performing switchover NOW, please wait…
Operation requires a connection to database “fgedudb_stby”
Connecting …
Connected to “fgedudb_stby”
Connected as SYSDBA.
New primary database “fgedudb_stby” is opening…
Operation requires start up of instance “fgedudb” on database “fgedudb”
Starting instance “fgedudb”…
ORACLE instance started.
Database mounted.
Database opened.
Switchover succeeded, new primary is “fgedudb_stby”

4.2 使用SQL命令执行切换

# 在主数据库上执行
sqlplus / as sysdba

# 验证主数据库是否可以切换
SELECT SWITCHOVER_STATUS FROM v$database;

# 输出日志
SWITCHOVER_STATUS
——————–
TO STANDBY

# 执行切换到备用角色
ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;

# 输出日志
Database altered.

# 关闭并重启原主数据库到mount状态
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;

# 在备用数据库上执行
sqlplus / as sysdba

# 验证备用数据库是否可以切换
SELECT SWITCHOVER_STATUS FROM v$database;

# 输出日志
SWITCHOVER_STATUS
——————–
TO PRIMARY

# 执行切换到主角色
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;

# 输出日志
Database altered.

# 打开新主数据库
ALTER DATABASE OPEN;

# 输出日志
Database altered.

4.3 验证切换结果

# 检查新主数据库状态
sqlplus / as sysdba
SELECT DATABASE_ROLE, OPEN_MODE FROM v$database;

# 输出日志
DATABASE_ROLE OPEN_MODE
—————- ——————–
PRIMARY READ WRITE

# 检查新备用数据库状态
sqlplus sys/password@fgedudb
SELECT DATABASE_ROLE, OPEN_MODE FROM v$database;

# 输出日志
DATABASE_ROLE OPEN_MODE
—————- ——————–
PHYSICAL STANDBY MOUNTED

# 启动备用数据库的恢复进程
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

# 输出日志
Database altered.

4.4 配置客户端连接

# 更新tnsnames.ora文件,使客户端连接到新主数据库
cat > $ORACLE_HOME/network/admin/tnsnames.ora << EOF FGEDUDB = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = fgedu-standby.net.cn)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = fgedudb) ) ) EOF
# 测试连接
sqlplus sys/password@fgedudb

# 输出日志
SQL*Plus: Release 19.0.0.0.0 – Production on Fri Apr 1 11:00:00 2026
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle. All rights reserved.

Connected to:
Oracle Database 19c Enterprise Edition Release 19.3.0.0.0 – Production
Version 19.3.0.0.0

SQL> SELECT DATABASE_ROLE FROM v$database;

DATABASE_ROLE
—————-
PRIMARY

Part05-风哥经验总结与分享

5.1 切换最佳实践

  • 使用DataGuard Broker执行切换,简化操作流程
  • 在切换前确保主备数据库同步正常
  • 选择业务低峰期进行切换
  • 提前通知相关人员,减少业务影响
  • 切换后验证系统状态,确保一切正常

5.2 常见问题与解决方案

  • 切换失败:检查主备数据库状态,确保同步正常
  • 客户端连接失败:检查TNS配置,确保连接到新主数据库
  • 备用数据库无法启动:检查数据库状态和参数配置
  • 切换后性能问题:检查新主数据库的参数配置和资源使用情况

5.3 性能优化建议

  • 在切换前优化主备数据库的性能,减少切换时间
  • 使用并行重做应用,提高备用数据库的应用速度
  • 配置适当的网络参数,确保重做日志传输速度
  • 定期测试切换操作,熟悉流程,减少切换时间

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息