如何快速搭建物理standby实现Data Guard部署

来源:AI视频音频作者:新加坡程序员头衔:程序员
导读:本期聚焦于小伙伴创作的《如何快速搭建物理standby实现Data Guard部署》,敬请观看详情。很多Oracle数据库运维人员需要搭建高可用架构,Data Guard是常用的方案,其中物理standby部署是核心环节。不少新手不清楚快速搭建物理standby的具体步骤,容易在配置参数、数据同步等环节出错。本文将详细介绍物理standby搭建的完整流程,包括环境准备、主库配置、备库初始化、同步验证等关键操作,每一步都附带具体的配置示例和注意事项,帮助运维人员避开常见坑点,快速完成Data Guard物理standby部署,实现数据库主备高可用,保障业务数据的安全性和稳定性。

Data Guard是Oracle数据库提供的高可用性和灾难恢复解决方案,物理standby通过重做日志应用实现与主库的数据同步,是生产环境中最常用的部署方式。下面详细介绍快速搭建物理standby的完整流程。

如何快速搭建物理standby实现Data Guard部署

环境准备

搭建前需要确认主备库的软硬件环境满足要求:

  • 主备库Oracle数据库版本一致,建议都是企业版
  • 主备库操作系统类型相同,小版本差异不影响
  • 主库开启归档模式,并且开启强制日志功能
  • 主备库网络互通,防火墙开放数据库监听端口

主库配置步骤

1. 开启归档和强制日志

登录主库执行以下命令:

-- 查看当前归档状态
SELECT log_mode FROM v$database;

-- 如果未开启归档,先关闭数据库,启动到mount状态开启归档
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;

-- 开启强制日志,确保所有操作都记录重做日志
ALTER DATABASE FORCE LOGGING;

2. 配置主库参数

修改主库初始化参数,添加Data Guard相关配置:

-- 设置数据库唯一名称,主备库不能相同
ALTER SYSTEM SET db_unique_name='primary_db' SCOPE=SPFILE;

-- 设置日志归档目标,第一个是本地归档,第二个是备库归档
ALTER SYSTEM SET log_archive_dest_1='LOCATION=/u01/app/oracle/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=primary_db' SCOPE=SPFILE;
ALTER SYSTEM SET log_archive_dest_2='SERVICE=standby_db LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby_db' SCOPE=SPFILE;

-- 开启归档目标
ALTER SYSTEM SET log_archive_dest_state_1='ENABLE' SCOPE=SPFILE;
ALTER SYSTEM SET log_archive_dest_state_2='ENABLE' SCOPE=SPFILE;

-- 配置fal客户端和服务端
ALTER SYSTEM SET fal_client='primary_db' SCOPE=SPFILE;
ALTER SYSTEM SET fal_server='standby_db' SCOPE=SPFILE;

-- 重启数据库使参数生效
SHUTDOWN IMMEDIATE;
STARTUP;

3. 创建主库密码文件

保证主备库使用相同的密码文件,密码文件需要包含sys用户的密码:

-- 在主机系统执行,orapwd是Oracle提供的密码文件生成工具
orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=SysPassword123 entries=10 force=y

4. 配置网络监听和服务名

修改tnsnames.ora文件,添加主备库的服务名配置:

PRIMARY_DB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.10)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = primary_db)
    )
  )

STANDBY_DB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.11)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = standby_db)
    )
  )

5. 备份主库数据

使用RMAN对主库做全备,用于备库初始化:

rman target /
RMAN> BACKUP DATABASE PLUS ARCHIVELOG FORMAT '/u01/backup/full_%U.bak';
RMAN> BACKUP CURRENT CONTROLFILE FOR STANDBY FORMAT '/u01/backup/standby_ctl.bak';

备库配置步骤

1. 安装Oracle软件

在备库服务器安装相同版本的Oracle数据库软件,不需要创建数据库实例。

2. 复制主库文件到备库

将主库的密码文件、备份文件、参数文件复制到备库对应目录:

-- 复制密码文件
scp $ORACLE_HOME/dbs/orapw$ORACLE_SID standby:/$ORACLE_HOME/dbs/

-- 复制备份文件
scp /u01/backup/* standby:/u01/backup/

3. 创建备库参数文件

复制主库参数文件到备库,修改相关参数:

-- 备库启动到nomount状态
STARTUP NOMOUNT PFILE='/u01/app/oracle/product/19c/dbhome_1/dbs/initstandby.ora';

-- 修改备库参数
ALTER SYSTEM SET db_unique_name='standby_db' SCOPE=SPFILE;
ALTER SYSTEM SET log_archive_dest_1='LOCATION=/u01/app/oracle/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=standby_db' SCOPE=SPFILE;
ALTER SYSTEM SET log_archive_dest_2='SERVICE=primary_db LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=primary_db' SCOPE=SPFILE;
ALTER SYSTEM SET fal_client='standby_db' SCOPE=SPFILE;
ALTER SYSTEM SET fal_server='primary_db' SCOPE=SPFILE;
ALTER SYSTEM SET standby_file_management='AUTO' SCOPE=SPFILE;

-- 重启备库
SHUTDOWN IMMEDIATE;
STARTUP NOMOUNT PFILE='/u01/app/oracle/product/19c/dbhome_1/dbs/initstandby.ora';

4. 使用RMAN恢复备库

通过RMAN恢复备库数据和控制文件:

rman target sys/SysPassword123@primary_db auxiliary sys/SysPassword123@standby_db
RMAN> DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE NOFILENAMECHECK;

5. 启动备库应用日志

恢复完成后,启动备库到只读应用日志状态:

-- 启动备库到挂载状态
ALTER DATABASE MOUNT;

-- 开启实时应用日志
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

同步验证

通过以下方式验证主备同步是否正常:

  • 查看主备库归档日志序列是否一致:SELECT max(sequence#) FROM v$archived_log;
  • 在主库切换一次日志:ALTER SYSTEM SWITCH LOGFILE;,查看备库是否接收到新日志
  • 查看备库应用日志状态:SELECT process, status FROM v$managed_standby;,MRP进程状态为APPLYING_LOG说明正常

注意事项

  • 主备库的db_name必须相同,db_unique_name必须不同
  • 如果主备库数据文件路径不同,需要在备库参数设置db_file_name_convertlog_file_name_convert
  • 密码文件的密码必须和主库一致,否则主备无法通信
  • 同步过程中如果出现延迟,先检查网络带宽和归档日志是否正常传输

Data_Guard物理standbyOracle数据库主备同步修改时间:2026-06-06 23:10:36

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。