云祺Logo 云祺Logo

使用5种方法设置Oracle数据库复制

2026-07-24

本文概述了Oracle数据库复制技术,涵盖相关概念、架构、实施步骤以及运维最佳实践。您将了解复制与恢复点目标(RPO)和恢复时间目标(RTO)之间的关联;掌握核心复制方法,包括Data Guard、GoldenGate、物化视图及传统选项;同时学习复制的监控、告警与安全机制。

什么是 Oracle 数据库复制?

Oracle 在源数据库捕获数据变更,并将其应用于一个或多个目标数据库。它支持同步模式和异步模式:同步模式需等待提交确认,而异步模式则无需等待即发送变更。同步模式可实现近乎零数据丢失,但会增加延迟;异步模式降低了延迟,但在发生故障时可能存在极小的数据缺失风险。Oracle 根据所选方法,采用重做日志传输、日志挖掘或物化视图日志。一致性模型因模式而异:同步模式采用即时一致性,异步模式采用最终一致性。

复制 与恢复点目标(RPO)和恢复时间目标(RTO)密切相关。同步模式可实现接近零的 RPO;异步模式则需在 RPO 与网络距离之间取得平衡。您应根据业务需求和基础设施状况来选择复制模式。同时,您还需规划 RTO,即副本上线所需的时间。这些目标将指导您选择合适的复制方法并进行相应配置。

为何要复制 Oracle 数据库?

复制可满足运维核心需求:灾难恢复、高可用性、负载均衡以及业务连续性。同时,它还支持数据分析与数据库迁移。

灾难恢复与RPO/RTO:复制功能将数据副本存储在远程站点。发生故障时,您可切换至备用系统。同步复制可实现极小的数据丢失(RPO接近于零);异步复制适用于距离较远、对RPO要求较为宽松的站点。RTO通过角色切换所需时间来衡量,而执行故障转移测试则用于验证RTO目标是否达成。

高可用性:备用数据库可通过切换或故障转移接管主数据库。Data Guard 提供受管应用服务,实现快速切换。GoldenGate 可在某些场景下构建双活架构。您可减少计划内和计划外停机时间,满足服务等级协议(SLA),并提升服务可靠性。

负载均衡与报表:Active Data Guard 允许您将备用数据库打开以供读取。您可将报表任务分流至备用数据库,从而减轻主数据库的负载。物化视图可通过定期刷新支持本地报表需求。此举可提升终端用户及数据分析团队的性能体验。

业务连续性与维护:您可在主系统运行的同时,对备用系统应用补丁或升级。测试完成后,切换主备角色,从而将维护导致的停机时间降至最低。您还可通过复制到新环境的方式实现平台迁移。

数据分发:您将数据复制到远程办公地点或云区域。物化视图或GoldenGate可发送数据子集或经过筛选的数据。您可通过本地副本支持分布式应用程序。

测试与开发:您维护一个用于质量保证或开发的副本,并定期从生产环境刷新该副本。团队可在不影响主系统的情况下测试变更。

Oracle 中的数据库复制类型

Oracle 提供多种复制方法,每种方法适用于不同的使用场景,并在恢复点目标(RPO)、恢复时间目标(RTO)、复杂性和许可方面各有取舍。以下是对比汇总:

Method

RPO

RTO

Use Case

Complexity

Licensing

Status

Oracle Version









Data Guard

Data Guard

Fast failover/switchover

HA/DR for Oracle only

Moderate

Included in EE

Current

11g onwards

GoldenGate

Near-zero to configurable

Varies; depends on apply

Logical replication, heterogeneous, migrations, active-active

High

Separate license

Current

11g onwards

Materialized Views

Scheduled lag

Depends on refresh

Reporting, caches, minimal sync

Low

Included in EE

Current

11g onwards

Advanced Replication

Moderate; conflict risk

Slow for conflict resolution

Multi-master legacy

High

Included in EE

Legacy/Superseded

11g,12c

Streams

Near-zero to async

Fast

Deprecated logical replication

High

Included but deprecated

Deprecated

Deprecated in 12c, desupported 19c

如何复制 Oracle 数据库?

以下概述指南介绍了设置与操作步骤。请务必参考适用于您所用版本和环境的 Oracle 官方文档。

先决条件与规划

在进行任何复制设置之前:请验证网络连通性,确保带宽充足,并保障链路安全;确认所选复制方式符合Oracle版本及许可要求;通过RMAN准备备份;分配具备适当权限的专用用户;规划备用数据库或传输目录目的地的存储空间;明确恢复点目标(RPO)和恢复时间目标(RTO);先在预发布环境中进行测试;编写详细的运行手册,涵盖设置、监控及故障切换操作。

1. Data Guard 配置

Data Guard 提供高可用性(HA)和灾难恢复(DR)的托管备用数据库方案。您可使用 Broker 工具或手动方式进行配置。Active Data Guard 还支持只读访问功能。

主数据库准备

启用归档日志模式(ARCHIVELOG mode)和强制记录日志(FORCE LOGGING)。创建备用重做日志(standby redo logs),其组数比主重做日志组数多一组。在主库和备库上设置 DB_UNIQUE_NAME。配置 LOG_ARCHIVE_DEST_n 参数:主库将重做日志发送至备库目标地址。设置 FAL_SERVER 和 FAL_CLIENT 以解决日志传输间隙问题。确保主库与备库的初始化参数保持一致。

使用 RMAN 的 DUPLICATE TARGET DATABASE FOR STANDBY 命令从主库复制,或在备库主机上执行备份与还原操作。调整备库初始化参数文件中的初始化参数:DB_NAME 须与主库一致,DB_UNIQUE_NAME 则需不同。配置控制文件自动备份。确保 tnsnames.ora 和 listener.ora 文件中的网络配置项正确无误。

代理(DGMGRL)简化了管理。您可创建一个Data Guard配置,添加主库和备库,并设置保护模式(MAXAVAIL、MAXPERFORMANCE 或 MAXPROTECTION)。代理负责执行验证、角色切换以及状态监控。手动配置则需使用SQL与RMAN命令:您需编辑初始化参数,并通过 ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT 启动托管恢复。对于大多数部署场景,推荐使用代理。

同步模式(SYNC 或 FASTSYNC)会等待备用数据库的确认,从而实现近乎零数据丢失。异步模式(ASYNC)则无需等待,直接发送重做日志,可容忍网络延迟,但存在数据丢失风险。应根据恢复点目标(RPO)需求配置保护模式。可通过视图 V$ARCHIVE_DEST_STATUS 和 V$DATAGUARD_STATS 监控传输延迟。

处于待机状态时,MRP(托管恢复进程)应用重做日志。使用 Active Data Guard 时,您可将待机数据库以只读方式打开:ALTER DATABASE OPEN READ ONLY。查询可在待机数据库上执行,且不影响重做日志应用。可通过 V$ARCHIVE_DEST_STATUS 视图中的 APPLIED_TIME 列监控应用延迟。

测试切换:计划内的切换,主库变备用库。使用 DGMGRL 命令 SWITCHOVER TO standby。测试故障转移:非计划性操作,主库不可达。使用 DGMGRL 命令 FAILOVER TO standby。角色变更后,将原主库重新配置为新的备用库。记录操作流程并定期测试。

常见问题及故障排除

网络中断会导致重做日志缺口。请使用 FAL_SERVICE 参数获取缺失的日志。解决方法为执行 `ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL` 命令取消恢复,然后重新启动恢复进程。备用重做日志不足会导致日志应用缓慢。归档日志保留策略必须考虑备用数据库的日志消耗量。主备数据库版本不匹配会阻止日志应用;请确保补丁级别一致。请执行故障切换测试以验证配置有效性。

2. GoldenGate 配置

GoldenGate 提供逻辑复制功能,可在异构系统之间运行。其工作机制涉及抽取进程(Extract)、事务日志文件(trail files)、投递进程(Pump,可选)以及复制进程(Replicat)。

安装 GoldenGate

配置抽取和轨迹文件

目标配置

DDL 处理

启动和监控进程

通过 GGSCI 启动 Manager、Extract、Pump 和 Replicat 进程。使用 `INFO ALL` 命令检查状态和延迟。检查报告文件以排查错误。监控延迟指标和吞吐量。使用心跳表检测进程停滞。

安全

使用操作系统级别的权限保护轨迹文件。使用加密的网络连接或安全套接字进行传输。使用 GoldenGate 凭据存储来管理密码。考虑集成 Oracle Key Vault。

查询 INFO EXTRACTINFO REPLICAT 命令以获取延迟和状态信息;解析报告文件以查找错误;设置延迟阈值,超出时发出告警;监控检查点表的延迟情况;使用脚本或监控工具收集各项指标。

滚动升级

前提条件

创建物化视图

目标上执行:CREATE MATERIALIZED VIEW mv_name REFRESH FAST ON DEMAND AS SELECT ... FROM schema.table@dblink;。若可接受,则可使用 ON COMMIT 实现源端提交时立即刷新。

监控与问题

请查看 DBA_MVIEW_REFRESH_TIMES 以获取历史记录。处理因网络问题或数据类型不匹配导致的刷新错误。确保对源链接具有相应权限。通过选择合适的刷新频率来管理过期数据。

关键步骤

限制条件

不支持多租户等新的 Oracle 功能。配置复杂,冲突处理困难。厂商支持有限。已被 GoldenGate 取代。

3. 物化视图设置

物化视图按固定时间间隔复制数据,适用于报表生成或缓存场景。

在源端,在表上创建物化视图日志:CREATE MATERIALIZED VIEW LOG ON schema.table WITH ROWID。这将启用快速刷新。

监控与告警

高级使用场景

双向复制需要冲突检测与解决。请使用全球化支持功能处理字符集。对于异构目标,请相应配置映射。

源准备

启用补充日志记录:ALTER DATABASE ADD SUPPLEMENTAL LOG DATAADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS,或在相关表上执行 ADD TRANDATA。此举可确保重做日志中包含必要的变更数据。创建具备所需权限的 GoldenGate 用户。

在源服务器和目标服务器上安装GoldenGate二进制文件。所用版本需与Oracle数据库版本相匹配。配置Manager进程及其端口设置。

创建抽取组:定义源数据库和表。指定轨迹文件位置。为提高效率,请对 Oracle 使用集成抽取(Integrated Extract)。在目标模式中配置检查点表以跟踪进度。可选:设置数据泵抽取(Data Pump Extract)将轨迹推送到目标端。

创建复制组:定义目标数据库和表。配置凭据存储或别名以实现安全认证。使用参数文件将源模式和表映射到目标模式和表。在参数文件中处理转换或过滤操作。

GoldenGate 可在适当配置下复制 DDL,但需谨慎规划。可使用 DDL INCLUDEMAPPING 或基于脚本的方法。请验证目标模式是否支持新增的结构。

监控与告警

查询 V$ARCHIVE_DEST_STATUS 和 V$DATAGUARD_STATS 视图以获取传输延迟和应用延迟。使用 DGMGRL SHOW CONFIGURATION 命令查看整体状态。当延迟超过阈值时触发告警。监控备用数据库上的 SRL(Standby Redo Log)使用情况及磁盘空间。在告警日志中监控网络错误。通过脚本或监控工具实现通知自动化。

角色转换

应用服务与实时数据保护(Active Data Guard)

重新设置运输方式

代理配置 vs 手动配置

待机创建

4. 高级复制配置(旧版)

高级复制使用复制组和复制任务,支持多主复制,但属于旧版技术。新项目应使用GoldenGate。

通过 DBMS_REPCAT 定义复制组。添加主站点。定义被复制的对象。配置冲突解决方法。调度传播作业。通过 DBA_REPCAT 或 Oracle 提供的视图进行监控。

刷新选项

日志存在时使用快速刷新;否则使用完全刷新。通过Oracle调度器安排刷新:DBMS_SCHEDULER.CREATE_JOB。监控DBA_MVIEWS中的LAST_REFRESH_DATE。

常见问题及故障排除

缺少补充日志会导致数据丢失。重做日志被覆盖时会产生捕获缺口;需规划归档日志保留策略。若 DDL 变更无法匹配,可能导致执行失败。网络问题会中断 trail 传输。请检查 Manager 日志以排查错误。监控 trail 所在磁盘空间。测试故障转移场景。

对于 GoldenGate 升级,请协调 Extract 和 Replicat 的停止与启动。采用分阶段升级方式以避免停机。验证新 Oracle 补丁的兼容性。

5. Streams(已弃用)

Oracle Streams 提供逻辑复制功能。该功能在 12c 版本中已被弃用,并于 19c 版本中正式停止支持。请勿将其用于新部署。如需类似功能,请使用 GoldenGate。

使用 Vinchin 安全备份 Oracle 数据库

即使已部署复制机制,备份依然必不可少。复制可保障可用性,但无法应对所有故障场景,因此您仍需定期执行一致性的备份操作。Vinchin 备份与恢复是一款专业的企业级数据库备份解决方案,支持主流数据库——Oracle、MySQL、SQL Server、MariaDB、PostgreSQL 和 PostgresPro

它提供多种功能;主要亮点包括云备份和磁带归档、支持归档日志的完整备份与增量备份(适用于Oracle)、支持数据压缩与去重的定时备份、支持时间点恢复的新服务器还原,以及勒索软件防护等其他功能。针对Oracle数据库,它还增加了Oracle压缩、块更改跟踪支持、跳过可访问文件以及跳过离线文件等功能,以优化备份作业。

Vinchin 网页控制台操作简单、直观。备份 Oracle 数据库只需四个明确步骤:

1. 选择要备份的数据库

选择要备份的数据库

2. 选择备份存储位置

选择备份存储位置

3. 定义备份策略

定义备份策略

4. 提交工作

提交任务

界面通过清晰的标签和提示引导您操作。您可以在控制台中监控任务进度、查看日志以及调整计划,无需执行复杂的命令。

凭借全球客户群和高产品评分,Vinchin 提供为期15天的全功能免费试用——点击按钮下载安装程序,轻松部署。

Oracle 数据库复制常见问题解答

问题1:如何监控 Data Guard 的应用延迟?
使用 SQL 语句:SELECT DEST_ID, DEST_NAME, STATUS, RECEIVED_TIME, APPLIED_TIME FROM V$ARCHIVE_DEST_STATUS WHERE STATUS NOT IN ('DEFERRED','INACTIVE');并查看 V$DATAGUARD_STATS 视图获取延迟指标。

问题2:重做传输失败时如何解决数据缺口?
执行 ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;然后通过 FAL_SERVER 获取缺失的日志;重新启动恢复进程:ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT

Q3:如何测试 GoldenGate 故障转移?
在源端停止 Extract 进程;将目标端提升为新的源端;调整 Extract 参数以从新源端捕获数据;重启相关进程;故障修复后,将原始源端重新配置为目标端。

Q4:复制对主数据库性能有何影响?
同步(SYNC)模式会增加提交延迟;异步(ASYNC)模式增加的延迟极小。GoldenGate 捕获过程会增加重做日志(redo)生成量和 CPU 使用率。请监控 AWR 报告和系统指标,并据此合理配置资源。

Q5:如何在 Data Guard 和 GoldenGate 之间做出选择?
在 Oracle 内部实现核心高可用性(HA)和灾难恢复(DR)时,请使用 Data Guard;在需要逻辑复制、异构目标数据库、数据过滤、零停机迁移以及多主节点场景时,请使用 GoldenGate。

结论

Oracle 复制技术可提升系统可用性、弹性和可扩展性。Data Guard 和 GoldenGate 能够满足大多数企业需求;物化视图适用于报表场景,而传统复制方案则仅在有限范围内继续使用。要实现高效运维,需明确恢复点目标(RPO)和恢复时间目标(RTO),开展充分测试,并实施主动监控。同时,应通过加密和凭据管理确保复制过程的安全性。

始终将复制与可靠的备份配对使用。Vinchin 为 Oracle 提供强大的备份解决方案。立即试用其免费版本,以保障您的环境安全。

云祺备份软件,云祺容灾备份系统,虚拟机备份,数据库备份,文件备份,实时备份,勒索软件,美国,图书馆

您可能感兴趣的新闻 换一批

现在下载,可享15天免费试用

立即下载

请添加好友为您提供支持
jia7jia_7

微信售后服务二维码

请拨打电话
为您提供支持

400-9955-698