如何搭建Oracle 10g Physical DataGuard?

来源:站长联盟作者:宋琮安头衔:草根站长
导读:本期聚焦于小伙伴创作的《如何搭建Oracle 10g Physical DataGuard?》,敬请观看详情。Oracle 10g Physical DataGuard是数据库常用的容灾方案,能够实现主备数据库实时同步,在主库故障时快速切换保障业务连续性。很多运维人员需要掌握其完整搭建流程,本文将从环境准备、参数配置、日志同步验证等步骤逐一讲解,覆盖主备库初始化、归档模式开启、监听配置、数据文件传输等核心操作,同时说明搭建过程中的常见问题和排查方法,帮助读者顺利完成Oracle 10g Physical DataGuard的部署,满足企业数据库高可用需求。

Oracle 10g Physical DataGuard通过重做日志传输和应用实现主备库数据一致,是数据库高可用架构的核心组件,搭建过程需要严格遵循步骤避免配置错误。

如何搭建Oracle 10g Physical DataGuard?

环境准备

搭建前需要准备两台服务器,分别作为主库(Primary)和备库(Standby),要求操作系统版本一致,Oracle 10g软件安装路径相同,且主备库数据库版本完全一致。需要提前规划好以下信息:

  • 主库实例名:orcl_pri,备库实例名:orcl_stb
  • 主备库数据文件、日志文件路径保持一致
  • 确保主备库网络互通,端口1521可正常访问

主库配置步骤

1. 开启强制归档和归档模式

Physical DataGuard依赖归档日志传输,首先需要确认主库开启归档和强制归档,执行以下SQL:

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

-- 开启强制归档
ALTER DATABASE FORCE LOGGING;

-- 如果不是归档模式,执行以下命令开启
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;

2. 创建备库控制文件

主库需要生成用于备库的控制文件,执行以下命令:

ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/u01/app/oracle/standby_ctl.ctl';

3. 配置主库参数

修改主库spfile参数,添加DataGuard相关配置:

-- 设置主库唯一标识
ALTER SYSTEM SET db_unique_name='orcl_pri' SCOPE=SPFILE;

-- 配置归档日志目标,本地和备库
ALTER SYSTEM SET log_archive_dest_1='LOCATION=/u01/app/oracle/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl_pri' SCOPE=SPFILE;
ALTER SYSTEM SET log_archive_dest_2='SERVICE=orcl_stb LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl_stb' SCOPE=SPFILE;

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

-- 配置备库文件转换路径(如果路径不一致需要设置)
ALTER SYSTEM SET db_file_name_convert='/u01/app/oracle/oradata/orcl_stb/','/u01/app/oracle/oradata/orcl_pri/' SCOPE=SPFILE;
ALTER SYSTEM SET log_file_name_convert='/u01/app/oracle/oradata/orcl_stb/','/u01/app/oracle/oradata/orcl_pri/' SCOPE=SPFILE;

-- 设置FAL服务器和客户端
ALTER SYSTEM SET fal_server='orcl_stb' SCOPE=SPFILE;
ALTER SYSTEM SET fal_client='orcl_pri' SCOPE=SPFILE;

修改完成后重启主库使参数生效:

SHUTDOWN IMMEDIATE;
STARTUP;

4. 配置主库监听和TNS

修改主库listener.ora,添加静态注册:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl_pri)
      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
      (SID_NAME = orcl_pri)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 主库IP)(PORT = 1521))
    )
  )

修改tnsnames.ora,添加主备库TNS配置:

orcl_pri =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 主库IP)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl_pri)
    )
  )

orcl_stb =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 备库IP)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl_stb)
    )
  )

重启监听:

lsnrctl stop
lsnrctl start

备库配置步骤

1. 复制主库文件到备库

将主库的以下文件复制到备库对应路径:

  • 数据文件、日志文件
  • 刚才生成的备库控制文件,复制到备库控制文件路径,重命名为原控制文件名
  • 主库的密码文件,复制到备库$ORACLE_HOME/dbs目录,重命名为orapworcl_stb
  • 主库的pfile或者spfile,复制到备库对应目录

2. 修改备库参数

如果使用主库pfile启动备库,需要修改以下参数:

-- 设置备库唯一标识
db_unique_name='orcl_stb'

-- 调整归档目标配置
log_archive_dest_1='LOCATION=/u01/app/oracle/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl_stb'
log_archive_dest_2='SERVICE=orcl_pri LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl_pri'

-- 调整文件转换路径
db_file_name_convert='/u01/app/oracle/oradata/orcl_pri/','/u01/app/oracle/oradata/orcl_stb/'
log_file_name_convert='/u01/app/oracle/oradata/orcl_pri/','/u01/app/oracle/oradata/orcl_stb/'

-- 调整FAL配置
fal_server='orcl_pri'
fal_client='orcl_stb'

3. 启动备库到挂载状态

执行以下命令启动备库:

STARTUP MOUNT;

4. 配置备库监听和TNS

备库listener.ora配置和主库类似,将GLOBAL_DBNAME改为orcl_stb,SID_NAME改为orcl_stb,HOST改为备库IP。tnsnames.ora和主库保持一致即可,之后重启备库监听。

开启日志应用

备库启动到挂载状态后,开启实时日志应用:

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

同步验证

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

1. 查看归档日志传输状态

在主库执行:

SELECT dest_id, status, error FROM v$archive_dest WHERE dest_id <= 2;

如果status为VALID,说明归档传输正常。

2. 查看备库应用状态

在备库执行:

SELECT sequence#, applied FROM v$archived_log ORDER BY sequence# DESC FETCH FIRST 10 ROWS ONLY;

如果applied列显示YES,说明日志已经正常应用。

3. 主库创建测试表验证

主库执行:

CREATE TABLE test_dg (id NUMBER, name VARCHAR2(20));
INSERT INTO test_dg VALUES (1, 'test');
COMMIT;

切换备库到只读状态查看数据:

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
ALTER DATABASE OPEN READ ONLY;
SELECT * FROM test_dg;

如果能查到插入的数据,说明主备同步正常。之后可以重新开启日志应用:

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

常见问题排查

  • 归档传输失败:检查主备库网络是否互通,TNS配置是否正确,监听是否正常启动
  • 备库无法挂载:检查控制文件是否为备库控制文件,参数文件配置是否正确
  • 日志应用延迟:检查备库服务器性能,归档日志路径空间是否充足

Oracle_10gPhysical_DataGuard数据库容灾主备同步归档日志修改时间:2026-06-06 23:02:54

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