![如何处理没有网络连接的两个 Oracle 数据库的单向同步?](https://linux22.com/image/795175/%E5%A6%82%E4%BD%95%E5%A4%84%E7%90%86%E6%B2%A1%E6%9C%89%E7%BD%91%E7%BB%9C%E8%BF%9E%E6%8E%A5%E7%9A%84%E4%B8%A4%E4%B8%AA%20Oracle%20%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E5%8D%95%E5%90%91%E5%90%8C%E6%AD%A5%EF%BC%9F.png)
情况如下:
我有两个 Oracle 10g 数据库(具有相同的表等),但无法通过网络连接。我需要定期(例如,每天一次)更新数据库 B 上的数据以匹配数据库 A。数据库 B 是只读的,因此不应对其上的数据进行任何更改。
由于它们之间没有网络连接,我需要从其中一个数据库创建某种文件,以便将其传输到另一个数据库并轻松加载。我希望导出此文件并将其导入另一个数据库的速度尽可能快……理想情况下,它只包含自上次同步以来确切发生的变化的最少必要信息。
显然,我可以完全导出一个数据库并用其数据替换另一个数据库。但是,这将花费不可接受的时间。我还发现了一些关于增量导出的信息,但它似乎已经过时了,并且还会导出任何更改的表中的所有数据。这将是有问题的,因为一个特定的表(很可能发生变化)包含大型 BLOB,并且需要花费最多的时间来完全导出和导入。
我不是 DBA,因此我在这方面没有太多专业知识。有什么适合做这件事的吗?
答案1
答案2
最简单的解决方案是通过非网络将它们连接起来。一种方法是将它们都连接到同一个后端存储(即 SAN/NAS),这样您就可以让它们共享同一个卷,或者允许您将其中一个卷复制到另一个。
除此之外,如果您要使用 sneakernet 或 RFC1149 来同步您的数据库,这实际上取决于您的数据库的大小和/或事务日志的大小。
我真的对“无网络”要求表示质疑。我很难相信创建 VPN 或其他此类隧道不是一个可行的选择。即使在 PCI 和 SOX 要求下,备份和 HA 集群设计也需要网络连接。