合 各种数据库同步中的时间戳机制总结
Tags: OraclePGMSSQLSQL ServerMySQLPostgreSQL增量同步CDC时间戳rowversionORA_ROWSCN
简介
增量同步,一般有CDC和时间戳这2种办法。
CDC(Change Data Capture,变更数据捕获)主要使用日志进行同步,例如OGG工具就是CDC的一种。
基于时间戳的方法,就是在表上增加一列,在增加和修改时,更新该列的值即可。
通过时间戳的方式来同步的话,只能对UPDATE和INSERT起作用,对于DELETE物理删除操作,或源端删除数据时只修改数据有效标志,可以定期通过主键比对然后同步删除数据。
Oracle
对于Oracle来说,可以使用ORA_ROWSCN来获取数据变更。ora_rowscn默认为块级别的跟踪,即该块上有任何一行进行了修改,该块的ora_rowscn都发生变化,而且一个块的ora_rowscn是相同的。若要精确捕获每行的变化,则需要开启行级别的跟踪。
select *
不会显示ORA_ROWSCN列,必须显式指定该列才可以。
缺点:
1、需要重建表,增加ROWDEPENDENCIES参数,才能启用行级别的跟踪。默认为块级别跟踪。不能通过后期的alter table语句来将表修改为ROWDEPENDENCIES。
2、每行会增加6字节的存储空间。