发表于: 2010.06.18 21:46
分类: 读书笔记
出处: http://yangtingkun.itpub.net/post/468/501139
---------------------------------------------------------------
文档在这一章介绍了冲突解决方案的概念。
无论是多主复制环境还是可更新物化视图复制环境,只要有两个以上的站点存在同时的写操作,就可能导致数据的不一致,为了保证各个站点上的数据统一性,就必须设定冲突解决方案。
其中多主复制每个主站点都会在出现数据冲突时根据预设的冲突解决方案来解决数据的冲突。而物化视图复制环境只在主站点和可更新的主物化视图站点运行冲突解决方案。
根据冲突的类型不同,可以分为更新冲突、唯一冲突和删除冲突。
更新冲突指的是两个或更多站点在几乎同时(多主复制是在两个主站点将修改推到对方之前,而物化视图复制则是在物化视图刷新之前)修改了同一条记录。Oracle预设了LAST TIMESTAMP、OVERWRITE、ADDITIVE、AVERAGE、DISCARD、EARLIEST TIMESTAMP、MAXIMUM、MINIMUM、PRIORITY GROUP和SITE PRIORITY多种冲突解决方案。其中LAST TIMESTAMP和ADDITIVE可以保证在多主环境中数据的统一性。而MAXIMUM、MINIMUM和PRIORITY GROUP都是在满足一定条件下可以保证多主环境中数据统一性。其他的方法用在多主环境中很可能会造成各个站点在进行冲突解决后数据不一致,因此更适合作为物化视图复制环境的冲突解决方案,或者第二冲突解决方案。在所有冲突解决方案中,最常使用的是LAST TIMESTAMP加上SITE PRIORITY作为后备冲突解决方案,因为两个站点的时间戳可能出现重复。
唯一冲突是指两个或更多站点在几乎同时(多主复制是在两个主站点将修改推到对方之前,而物化视图复制则是在物化视图刷新之前)插入或更新的数据的唯一键值相同。Oracle提供了APPEND SITE NAME、APPEND SEQUENCE和DISCARD三种冲突解决方案,其实大部分唯一冲突都可以从设计层面避免。
删除冲突指的是两个或更多站点在几乎同时(多主复制是在两个主站点将修改推到对方之前,而物化视图复制则是在物化视图刷新之前)删除同一行记录,或者一个站点删除记录,而另一个站点对数据进行了更新。Oracle并没有提供解决删除冲突的解决方案,对于删除冲突可以通过避免DELETE语句,或者用户自己提供的冲突方案来解决。











