闪回是Oracle具有的一项特性,能够实现从回滚段中读取一定时间内操作过的表数据,可用来进行数据比对,或者修正意外提交造成的错误数据。
闪回的工作原理如下:
1、用户指定需要增量同步的表、字段和操作;
2、为每张指定表各建立一张增量数据表(Detal表),并建立一张增量操作序列表,以及一个完成数据插入操作的存储过程;
3、取出指定表中一定时间间隔内的数据,记录集为V;
4、执行存储过程,将V中的数据插入序列表中,包括操作的Schema和表名;
5、遍历V中每条数据,通过As of scn查询出源表的该条scn记录,插入源表对应的Detal表中,Detal表中一条记录对应序列表的一条记录。
6、将序列表中的每条数据按scn升序排列,取出Detal表中的对应记录发送出去。
在选定要增加闪回的AESB或AESB-Agent节点的子节点“资源-闪回”上单击鼠标右键,选择“新建 > 闪回”菜单:
弹出配置窗口:
此时我们必须要有一个已经提交的数据源,点击数据源的浏览按钮“…”:
在“数据源选择”对话框选择需要的数据源,点击“确定”,回到“创建闪回”对话框。
点击“设置详细信息”可以指定闪回的序列表及存储过程的名称;这两个名称是自动生成的,建议不要另行修改,以免造成与其它表或存储过程重名。
点击“完成”,此时对应节点下已新增闪回节点,并且闪回编辑器也同时打开:
闪回编辑器中分为两个区域,分别是基本信息和配置信息。
在基本信息中,可以指定序列表及存储过程的名称,前面已经提到,这两个名称是自动生成的,一般不需要更改;扫描间隔表示闪回扫描数据库表,获取增量数据的时间间隔。
配置信息分为若干个组,分别为Schema、表选择、主键字段、备份字段和系统字段:
Schema:选择数据库的Schema,只有选择了Schema,才能进行表选择。
表选择:选择指定Schema下的数据库表,在这里我们可以选择要监听哪些表的哪些操作,默认是insert,update,delete都选中,这里允许用户选择多张表。另外,如果表定义中有外键依赖关系,设计器将自动关联并选中有依赖关系的表。
主键字段:主键字段指的是在表选择里面选定的表的主键的选择,必须确保主键字段里至少有一个字段被选中,设计器将默认自动选中物理表结构中的主键,用户也可以自行添加字段。
备份字段:在这里被选中的字段如果值发生了变化,都会被闪回记录起来。
系统字段:指定Delta表表名以及它的字段名。
设置完属性,接着保存编辑内容,并提交至AESB或AESB-Agent,然后便可以将闪回部署至数据库并启动生效了,如下图:
闪回还提供停止闪回、从数据库卸载闪回等操作,都可以直接在编辑器上轻松地选择执行。