oracle数据库库中两个表之间同步数据的方法:1、Job+DBLink;2、物化视图 (Materialized View);3、DataGuard;4、高级复制 (Advanced Replication);5、Streams;6、GoldenGate等。Job+DBLink比较原始的一种方法,同时也是实现 2 个数据库连接的简单方式,可实现同步和定时刷新。
1、Job+DBLink
Oracle 中实现数据同步的技术很 多,Job + DBLink 的方式是比较原始的一种,同时也是实现 2 个数据库连接的简单方式,可实现同步和定时刷新。当两个库做非实时数据同步时,DBLink 是个不错 的选择,例如:在库 A 中有 t_user 表,在库 B 中有 t_history_user 表,业务要求将每天产生在库 A 中的数据都同步到库 B 中的 t_history_user 表中。此时可以通过 DBLink 在以 job 调度相关过程实现。
2、物化视图 (Materialized View)
Materialized View (物化视图) 是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照.。物化视图可以用来同步数据,一般采用主键同步或者是 ROWID 同步。通过使用物化视图 + Job 的方式可以实现双向的表同步。物化视图有增量刷新和完全刷新两种模式,都是非实时的数据同步。
3、DataGuard
DataGuard 是 Oracle 数据库自带的数据同步功能,基本原理是将日志文件从原数据库传输到目标数据库,然后在目标数据库上应用这些日志文件,从而使目标数据库与源数据库保持同步。
DataGuard 数据同步技术的优势主要在于它是 Oracle 数据自身内置的功能,与每个 Oracle 新版本都完全兼容,且不需要另外付费;其配置管理也较为简单,不需要 熟悉其他第三方的软件产品,便于 DBA 的运维管理。当然,DataGuard 也存在一些不足,比如它对于网络传输的带宽要求较高,并且备库是以只读方式打 开,也不支持异构环境,需要相同的操作系统版本和数据库版本。DataGuard 技术是 Oracle 推荐的用于高可用灾难恢复环境的数据同步技术。
4、高级复制 (Advanced Replication)
Oracle 高级复制,也称为对称复制,名列前茅次是在 Oracle7.1.6 中出现的,主要是为了应对在分布式数据库系统的多个数据库中复制和维护数据库对象的需求。我们可以利用高级复制实现内外网数据的同步,保证每个节点的数据保持一致。
Oracle 高级复制虽然功能强大,但是配置管理较复杂,且对源数据库性能影响较大,从 Oracle10g 后已经逐步被 Streams 所替代,而 Streams 后来又渐渐被 GoldenGate 所取代。
5、Streams
Streams 是从版本 Oracle 9i 才开始具有的数据同步功能,是为提高数据库的高可用性和数据的分发和共享功能而设计的,Streams 利用高级队列技术,通过用 LogMiner 挖掘 日志文件生成变更的逻辑记录,然后将这些变更应用到目标数据库上,从而实现数据库之间或一个数据库内部的数据同步。
Streams 支持一 对多,多对一和双向同步,可用于数据分发和共享 (和 OGG 类似),这是 DataGuard 所不具备的。同时 Streams 也是 Oracle 内置功能,不需 要额外付费,同时其配置方式也比较灵活。但是 Streams 跟高级复制一样也存在配置维护复杂,而且对源数据库压力较大,对网络带宽要求也较高,还不能保 证数据的零丢失。
在 Oracle 收购了 GoldenGate 之后,由于其可以跨平台,跨数据库。且性能更优于 Streams,Streams 也被边缘化了,面临高级复制的命运,只提供支持,不再开发。
6、GoldenGate
GoldenGate 于 2009 年被 Oracle 收购之后,GoldenGate 软件被集成到到 Oracle“融合(Fusion)” 中间件中,与 Oracle 数据库更紧密地 集成。GoldenGate 可以用于多种不同的操作系统平台(Unix、Linux、Windows)和多种不同数据库系统(如 Oracle、SQL Server、MySQL、DB2 等)之间的数据同步,是极优异的数据集成产品。
GoldenGate 是 Oracle 在数据迁移和数据同步方面要重点发展的产品,功能强大,可以跨平台,跨数据库。应用场景很多:可以做数据库同步;容灾备份;实现读写分离,实时数据库仓库供给,负载均衡等等。
相 比 DataGuard 传输整个日志文件相比,GoldenGate 传输的数据量大大降低;同时,目标数据库是出于 Open 状态,所占系统资源较少,对网络 带宽要求更低;与 Streams 相比,GoldenGate 也支持一对多,多对一,双向复制等,不说支持异构平台,GoldenGate 的性能较之 Streams 更为卓越,抗压性强,不管数据量多少,GoldenGate 都是远高于 Streams 方式的。
GoldenGate 重要性日益增强,是 Oracle 战略上高层次的产品,这点上 DataGuard 也无法与之相较。但尽管如此,GoldenGate 但也不会取代 DataGuard,二者定位不同。事实上,ataGuard 已经很成熟,但也在不断发展,二者都有广阔的发展空间。
7、CDC
Oracle CDC(变更数据捕获)是一种有效识别和捕获已添加到、更新或从 Oracle 表中删除的数据并使变更数据可供目标应用程序使用的技术。当应用程序执行事务并保存时,可以捕获对 Oracle 表的相应插入、更新或删除。相反,如果事务没有保存,则不会捕获此更改数据。
8、logical standby
在Oracle数据库中,Logical Standby是Oracle Data Guard的一种模式,它可以通过将Redo日志传输到Standby数据库来实现数据保护和故障恢复。与Physical Standby不同,使用Logical Standby可以实现更高灵活度的数据管理和更完整的数据恢复能力。
具体来说,Logical Standby模式允许应用在Standby数据库上创建其他的表、索引、触发器以及其他的数据库对象,这些对象在主库上并不存在。此外,在Logical Standby模式下,也允许在Standby数据库上修改已存在的表结构、触发器等,并将这些更改反馈回到主库,实现了Primary与Logical Standby数据库的双向同步。
在Logical Standby模式下,Redo日志会被解析成SQL语句,然后在Standby数据库上重新执行。这意味着Logical Standby数据库可以有不同于主库的物理结构,并且对于某些不需要保护的数据,可以选择不在Logical Standby中进行同步。此外,Logical Standby还支持应用程序查询,即可以在Standby数据库上进行查询操作。
9、Database Change Notification
Database Change Notification(DCN)是Oracle数据库提供的一种异步通知机制,可以在指定的查询条件或对象有所变化时向客户端发送通知。该机制可以让应用程序实时感知数据库中数据变化,从而及时做出响应。
延伸阅读1:Database Change Notification三步骤
- 注册:指定数据库要监听的查询。
- 通知:一旦数据库中的数据发生变化,数据库将自动发出通知。
- 响应:执行程序中定义事件处理操作。