在oracle中,对于记录数据变更的情况,提供了2中方案:cdc和streams,2种方案都能记录dml操作。2者都提供了不同的配置方案,可以跟主库配置在一起,页可以通过发送redo log到异机进行处理,尽量降低对主库的影响。
在异机上进行处理都需要配置log_archive_dest_n参数。
对于指定的表都需要设置补充日志。
在异机上需要设置发布者订阅者。激活订阅后,如果要查看数据的变更,需要刷新窗口才能看到,并且窗口需要维护。
streams是通过应用进程使用row lcr来进行对变更表的操作,streams需要在源库上创建用户,配置dblink,对于源库上的操作比cdc多,还需要调整一些参数,但是在源表有dml操作后,目标库上的变更表可以马上看到数据,不需要刷新窗口之类的操作。
我在测试的时候,使用的表上有虚拟列,测试的结果中,变更表中总是没有记录产生,但是在目标库上的与源表结构相同的表中的数据居然跟源库上的源表一模一样,另外看了一些文章,貌似streams出问题的概率还是比较大的,streams的测试在进行下,看看是否能在线上使用。