如何处理没有网络连接的两个 Oracle 数据库的单向同步?

如何处理没有网络连接的两个 Oracle 数据库的单向同步?

情况如下:

我有两个 Oracle 10g 数据库(具有相同的表等),但无法通过网络连接。我需要定期(例如,每天一次)更新数据库 B 上的数据以匹配数据库 A。数据库 B 是只读的,因此不应对其上的数据进行任何更改。

由于它们之间没有网络连接,我需要从其中一个数据库创建某种文件,以便将其传输到另一个数据库并轻松加载。我希望导出此文件并将其导入另一个数据库的速度尽可能快……理想情况下,它只包含自上次同步以来确切发生的变化的最少必要信息。

显然,我可以完全导出一个数据库并用其数据替换另一个数据库。但是,这将花费不可接受的时间。我还发现了一些关于增量导出的信息,但它似乎已经过时了,并且还会导出任何更改的表中的所有数据。这将是有问题的,因为一个特定的表(很可能发生变化)包含大型 BLOB,并且需要花费最多的时间来完全导出和导入。

我不是 DBA,因此我在这方面没有太多专业知识。有什么适合做这件事的吗?

答案1

您可能会考虑逻辑备用数据库作为只读副本,并拼凑一个手动存档日志传输过程,该过程在每个同步间隔从传输介质复制并注册所有日志文件。这样做的好处是您只使用 Oracle 自然创建的文件,而且这是一个相当快速的过程。它也不会导致逻辑备用服务器停机。

我在 Data Guard 文档中找到了一篇有用的文章,它就是解决归档日志空白

编辑:我刚刚注意到你不是 DBA。你需要一个称职的 DBA 的帮助才能完成这项工作,更不用说所需的权限了。不过,大多数称职的 DBA 都会认为这很有趣 ;-)

答案2

最简单的解决方案是通过非网络将它们连接起来。一种方法是将它们都连接到同一个后端存储(即 SAN/NAS),这样您就可以让它们共享同一个卷,或者允许您将其中一个卷复制到另一个。

除此之外,如果您要使用 sneakernet 或 RFC1149 来同步您的数据库,这实际上取决于您的数据库的大小和/或事务日志的大小。

我真的对“无网络”要求表示质疑。我很难相信创建 VPN 或其他此类隧道不是一个可行的选择。即使在 PCI 和 SOX 要求下,备份和 HA 集群设计也需要网络连接。

相关内容