情况如下:
我有两个不能通过networking连接的Oracle 10g数据库(具有相同的表等)。 按照一定的时间间隔(比如每天一次),我需要能够更新数据库B上的数据以匹配数据库A.数据库B仅用于读取,因此不应该对数据库进行任何更改。
由于它们之间没有networking连接,所以我需要创build一个可以从另一个上载到另一个文件的文件,并且很容易加载。 我希望导出这个文件并将其导入到另一个数据库中,以尽可能快地进行…理想情况下,它只包含自上次同步以来发生更改的最低必要信息。
显然,我可以完全导出一个数据库,并用其数据replace另一个数据库。 但是,这将花费无法接受的时间。 我也发现了一些关于增量导出的内容,但似乎已经过时了,并且还导出了任何已更改的表中的所有数据。 这将是有问题的,因为一个特定的表(很可能会改变)包含大的BLOB,并且将花费最多的时间完全导出和导入。
我不是DBA,所以我没有太多的专业知识。 有什么适合做这个吗?
您可以将逻辑备用数据库视为只读副本,并将手动归档日志传输过程拼凑在一起,以便从传输介质中复制并注册每个同步间隔的所有日志文件。 这样做的好处是您只使用Oracle自然创build的文件,而且这个过程非常快捷。 它也不会造成逻辑备用的宕机。
我在Data Guard文档中find的一个方便的部分可能有所帮助,那就是关于解决归档日志差距的部分。
编辑:我只注意到你不是DBA。 您将需要一个合格的DBA帮助来做到这一点,更不用说所需的权限。 然而,最有能力的DBA会考虑这个乐趣;-)
最简单的解决scheme是通过非networking连接它们。 一种方法是让它们都连接到相同的后端存储(即SAN / NAS),使您可以共享相同的音量或允许您将音量复制到另一个。
除此之外,如果您打算使用sneakernet或RFC1149来同步您的数据库,则这取决于数据库的大小和/或事务日志的大小。
我真的质疑“无networking”的要求。 我发现很难相信创build一个VPN或其他类似的隧道不是一个可行的select。 即使在PCI和SOX要求下,备份和HA群集devise也有networking连接限制。