变化数据随时都可能生成,因此需要不断的将新的变化同步过去。有两种方法可以完成这个任务。

  • 第一种办法可以通过计划实现。例如创建一个计划,每半个小时执行一次同步接口。这样可以每半个小时将变化数据同步到目标。此法需要注意计划的重复间隔,要保证在重复调用之前,上一次调用已经完成,一般可以用于定期同步的需求。
  • 第二种办法是在创建一个包,利用ODI 提供的 CDC 相关的工具轮询日记,一旦有了变化就调用同步接口。此法可以满足实时性较高的需求。

    1、创建Package

    Designer->Projects->“项目名称”->First Folder->Packages,右击选择“New Package”,定义个名称,如下图:
    Using Oracle Data Integrator Open Tools_第1张图片

    2、设置关系图

    2.1 OdiWaitForLogData

    在关系图中添加用于 CDC 的工具: OdiWaitForLogData,属性如下图所示:
    Using Oracle Data Integrator Open Tools_第2张图片
    属性的配置将每1秒钟轮询WEB_CUSTOMER的日记表,直到发现1条变化记录。

    2.2 添加映射

    拖动映射到右边的关系图,属性如下图所示:
    Using Oracle Data Integrator Open Tools_第3张图片

    2.2 OdiSleep

    在关系图中添加用于 CDC 的工具: OdiSleep,属性如下:
    Using Oracle Data Integrator Open Tools_第4张图片
    等待1秒,继续轮询。

    3、执行包

    执行包操作后,会发现这个包会一直在执行,并处于 OdiWaiteForLogData 这一步,如下图:
    Using Oracle Data Integrator Open Tools_第5张图片
    源表插入数据,SQL如下图:
    Using Oracle Data Integrator Open Tools_第6张图片
    在Operator中会发现已完成数据同步,并且进入下一个轮询:
    Using Oracle Data Integrator Open Tools_第7张图片
    当然,如果在源表删除或者更新一条数据,目标表也会同步删除或更新的。