建立分布式的数据库模式,目前面临的情况是:
各分站点使用oracle10Express版,主站点使用oracle9i,需要实时从各分站点提取最新的数据更新到主站点数据库(上行),主站点数据库有改动也需要实时更新到各分站点(下行);主站点还可能修改表结构、函数、过程等,这些信息都需要下行同步到各分站点。
由于oracle10Express不支持数据库高级复制,目前我想到的办法是:
1. 在各分站点数据库上对每个需要上行同步的表建立触发器,自动记录数据更新情况;
2. 在主站点数据库上对每个需要下行同步的表建立触发器,自动记录数据更新情况;
3. 在主站点上运行一个同步控制程序,定时获取各分站点的更新情况;同时,同步控制程序也将主站点的更新信息发布到各分站点;
4. 同步的过程采用数据库链接来执行。以上只是我的总体思路,在具体开发过程中还遇到很多具体的问题:
1. 表结构的同步和数据的同步如何控制先后顺序;
2. 数据库链接好像效率不高,有大量数据改动时,同步的效率很低;
3. 如果同步过程中出现的脏数据,如何自动纠正;请教各位高手,有没有更好的解决办法?