这两个概念我以前有混淆和困惑,许多网上的文章看起来说了很多也没讲清楚,多端寡要,简单事情讲复杂。直到看了这个问答帖子:
Log Sequence Number vs System Change Number
首先,SCN和LSN是不相干的两个概念,SCN是system change number,是数据库变更的一个指标,每个事务提交,每个对数据库改变(创建删除修改表、索引、约束、表空间)都会导致SCN的改变,如果两个复制的数据库当前SCN相同,那它们就相同了。它对应PostgreSQL的LSN。
Oracle的 SCN 对应 PG 的 LSN
Oracle的LSN是log sequence number就是指redo log文件的编号,并不是指变更编号,一个redo log会包含好多个变更的SCN。
OGG关于SCN的使用,还可参考About the Commit Sequence Number