【问题标题】:Oracle database (online) replicationOracle 数据库(在线)复制
【发布时间】:2020-08-21 11:29:40
【问题描述】:

我是一名 Java 人,我可以使用 Oracle 数据库,我知道 PLSQL、SQL。但我不擅长管理数据库服务器。我认为这是一个完全不同的领域。

我的问题与数据库复制有关。我用谷歌搜索了它,找到了数百万个答案,但我仍然感到困惑。

我可以在我的专业运营商中多次看到开发人员创建完整(复杂)的应用程序以保持源数据库架构与目标数据库架构的同步。开发同步应用程序需要时间并且很难维护它们,尤其是在修改任何数据结构的情况下,例如在表中。

我也可以看到使用 JPA、JDBC、Spring、myBatis 和 PLSQL 构建的应用程序。通常在夜间同步数据库,由 Cron、Quartz、Spring 等调度。在同步过程中,源数据库通常只能用于查询数据,不能用于插入,并且数据库约束和触发器被禁用。

这些类型的自定义应用程序总是让我害怕。我不认为没有通用、简单和官方的方法可以在不开发新应用程序的情况下保持两个数据库同步。

现在,我有一个类似的任务,老实说,我想编写与此任务相关的零行代码。我相信有推荐的和现有的解决方案,涵盖数据库供应商提供的这个主题。

如果你能把我推向正确的方向那就太好了。我觉得编写另一个新的 DB 同步应用程序不是正确的方法。

我需要专注于 Oracle 数据库同步,但我很高兴知道一种通用的、独立于数据库供应商的方式。

【问题讨论】:

  • 这是一个生产数据库吗?换句话说,SELECT log_mode FROM v$database 说了什么?
  • 复制数据库有什么用,你会怎么用?这对选择复制数据的解决方案产生了巨大的影响。
  • @wolφi:错误:ORA-00904:“LOG_MODE”:标识符无效
  • @CyrilleMODIANO 用于WEB UI,主要是查询数据。
  • @wolφi - log_mode 不能证明或反驳数据库是“生产”的。许多人以归档日志模式运行测试数据库。不幸的是,有些人在 NOarchivelog 中运行生产。生产与否与回答 OP 的问题有什么关系?

标签: java database oracle oracle11g


【解决方案1】:

有多种方法可以在 Oracle 数据库中执行复制。 Oracle 在数据库“Advanced Replication”和“GoldenGate”中有两种复制技术。 GoldenGate 我们采用了新的首选复制方法,它使用数据库中的重做日志文件。这两种方法都适合 Oracle DBA。

应用程序开发人员通常会创建一个“接口”,将数据从一个数据库移动到另一个数据库。接口是在 cron(数据库或系统)上运行的程序(pl/sql、bash、c 等),该程序在事件中唤醒以移动数据。当需要在复制期间处理数据时,接口很有用。

【讨论】:

  • 是的,我们在工作中使用 GoldenGate。它最初是一个独立于供应商的工具,后来被甲骨文收购。在此之前,我们使用了同样独立于供应商的 Quest Shareplex。两者都需要很多钱,并且需要一些技能来运行和维护。
  • 我非常了解“接口”。特别是接口,用 Java 编写,在应用程序服务器中执行。但我想避免制作任何界面。我们不想转换或处理数据,只是复制它们。我会向 DB 团队询问我们拥有的许可证。
  • 他们也会知道 ARCHIVELOG(这是复制 @Golden 提到的重做日志文件所必需的)。我也听说过 Data Guard 和 Standby Database 这两个名字。
猜你喜欢
  • 2017-02-17
  • 1970-01-01
  • 2020-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多