1
触发器方式非实时单项复制 ................................................................................................... 2 1.1 Topology ................................................................................................................... 2
1.1.1 数据服务器 ....................................................................................................... 2 1.1.2 数据源和目标物理架构 ................................................................................... 2 1.1.3 上下文 ............................................................................................................... 2 1.1.4 数据源和目标逻辑架构 ................................................................................... 2 1.1.5 代理 ................................................................................................................... 3 1.2 模型和知识模块导入 ............................................................................................... 3
1.2.1 模型沿用ODI Tutorial中创建的oracle_sh和oracle_tgtwh ......................... 3 1.2.2 数据存储需要增加 ........................................................................................... 3 1.2.3 沿用ODI Tutorial中导入的知识模块 ............................................................ 3 1.3 配置和启动CDC以及Subscriber ........................................................................... 3
1.3.1 针对数据源模型配置日记记录(选择合适的JKM) .................................. 3 1.3.2 将需要进行CDC的数据存储添加到CDC .................................................... 4 1.3.3 添加订阅 ........................................................................................................... 5 1.3.4 启动日记 ........................................................................................................... 6 1.4 接口 ........................................................................................................................... 7
1.4.1 新建一个接口如“TGT_CHANNELS_CDC_Int”.......................................... 7 1.4.2 关系图 ............................................................................................................... 7 1.4.3 流 ....................................................................................................................... 8 1.4.4 控件 ................................................................................................................... 8 1.5 包 ............................................................................................................................... 9
1.5.1 新建包如“TGT_CHANNELS_CDC_PKG” .................................................. 9 1.5.2 关系图 ............................................................................................................... 9 1.6 生成方案 ................................................................................................................... 9 1.7 配置计划 ................................................................................................................... 9 1.8 启动Schedule Agent................................................................................................. 9 1.9 模拟更改数据源数据,检测结果 ........................................................................... 9 触发器方式实时单项复制 ....................................................................................................... 9 2.1 包 ............................................................................................................................. 10
2.1.1 新建包如TGT_CHANNLES_CDC_RT ........................................................ 10 2.1.2 关系图 ............................................................................................................. 10 2.2 无需配置包的计划,直接执行包就可以了 ......................................................... 12 删除日记(CDC) ................................................................................................................ 12 LogMiner方式非实时单项复制 ............................................................................................ 12 4.1 使用LogMiner异步方式的前提 ........................................................................... 12
4.1.1 数据库必须启用 ARCHIVELOG ................................................................. 12 4.1.2 为进行CDC操作的用户授权 ....................................................................... 12 4.2 订户和日记配置和启动 ......................................................................................... 12
4.2.1 针对数据源模型配置日记记录(选择合适的JKM) ................................ 13 4.2.2 将需要进行CDC的数据存储添加到CDC .................................................. 14
2
3
4
5
4.2.3 添加订阅 ......................................................................................................... 14 4.2.4 启动日记 ......................................................................................................... 14 4.3 接口 ......................................................................................................................... 14 4.4 包 ............................................................................................................................. 14
4.4.1 新建包如TGT_CHANNLES_LOGMINER_PKG ........................................ 14 4.4.2 关系图 ............................................................................................................. 14 4.5 其余步骤参照1触发器方式非实时单项复制 ..................................................... 18 LogMiner方式实时单项复制................................................................................................ 18 5.1 参照4LogMiner方式非实时单项复制设置JKM ................................................ 18 5.2 接口 ......................................................................................................................... 18 5.3 包 ............................................................................................................................. 18
5.3.1 新建包如TGT_CHANNLES_LOGMINER_RT ........................................... 18 5.3.2 关系图 ............................................................................................................. 18
1 触发器方式非实时单项复制
1.1 Topology 1.1.1 数据服务器
延用ODI Tutorial中创建的Oracle的数据服务器orcl_local
1.1.2 数据源和目标物理架构
延用ODI Tutorial中创建的数据源物理架构orcl_local.sh
延用ODI Tutorial中创建的目标物理架构orcl_local.tgt_wh
1.1.3 上下文
延用ODI Tutorial中的上下文global
1.1.4 数据源和目标逻辑架构
延用ODI Tutorial中创建的数据源逻辑架构orcl_src_sh 延用ODI Tutorial中创建的目标逻辑架构orcl_tgt_wh
1.1.5 代理
延用ODI Tutorial中创建的物理代理local_agent
延用ODI Tutorial中创建的逻辑代理local_logicalagent
1.2 模型和知识模块导入
1.2.1 模型沿用ODI Tutorial中创建的oracle_shoracle_tgtwh 1.2.2 数据存储需要增加
反向导入一个数据源数据存储CHANNELS 反向导入一个目标数据存储TGT_CHANNELS
1.2.3 沿用ODI Tutorial中导入的知识模块 1.3 配置和启动CDC以及Subscriber
1.3.1 针对数据源模型配置日记记录(选择合适的JKM)某个数据源模型如oracle_sh的定义框,选择“日记记录”标签,进行如下配置: 日记记录模式
一致性适用于多表之间有关系(如主外键等),对多表进行CDC。 简单适用于单表或者虽然是多表,但是表之间的CDC没有顺序问题。 此处我们选择简单 JKM
选择JKM Oracle Simple(触发器方式)
和
1.3.2 将需要进行CDC的数据存储添加到CDC
选中需要添加到CDC的数据存储如CHANNELS添加到CDC。
数据存储添加到CDC成功后,“刷新”Designer,可以发现相应的数据存储前面加了一个黄色的钟。
1.3.3 添加订阅
选中数据存储如CHANNELS,右键,已更改数据捕获->订户->订阅 输入订户名称如subscriber_sh(在后面接口中条件设置上要使用),添加,确定。
确定,运行订户。
1.3.4 启动日记
数据存储如CHANNELS,右键,“已更改数据捕获”->“启动日记”, 启动日记成功后,刷新Designer,数据存储前面的钟变为绿色。
1.4 接口
1.4.1 新建一个接口如“TGT_CHANNELS_CDC_Int” 1.4.2 关系图
从模型托拽数据源数据存储如TGT_CHANNELS到数据源,注意选择“仅已进行日记记录的数据”
注意,源中自动添加的条件需要进行编辑:JRN_SUBSCRIBER = 'subscriber_sh' /* AND JRN_DATE < sysdate */。其中的JRN_SUBSCRIBER需要是前面设置的订户名称。
托拽目标数据存储如TGT_CHANNELS到目标数据存储。 进行字段自动匹配。
注意对于目标数据存储,需要设定键CHANNEL_ID
1.4.3 流
选择缺省的IKM Oracle Incremental Update,选项为缺省值。
1.4.4 控件
选择缺省的CKM Oracle,选项为缺省值。
1.5 包
1.5.1 新建包如“TGT_CHANNELS_CDC_PKG” 1.5.2 关系图
包中只包含一个步骤:接口TGT_CHANNELS_CDC_Int
1.6 生成方案
针对包TGT_CHANNELS_CDC_PKG生成方案。
1.7 配置计划
配置计划,如每小时运行一次。
1.8 启动Schedule Agent
1.9 模拟更改数据源数据,检测结果
利用sh用户进入SQLPLUS,
插入、删除和更新CHANNLES的数据。
然后到Operator中查看包是否运行,如果已经运行 再进入SQLPLUS,以TGT_WH用户连接,
查看TGT_CHANNELS表中是否已经有了更新数据。
2 触发器方式实时单项复制
只有包的设计与1触发器方式非实时单项复制不同,其他相同。下面只是说明如何设计包。
2.1 包
2.1.1 新建包如TGT_CHANNLES_CDC_RT 2.1.2 关系图
创建的包中,包含三个步骤:OdiWaitForLogData(在工具箱的已更改数据捕获中),实
现单项复制的接口,OdiSleep(在工具箱的事件检测中)。如下图:
要注意:需要将 OdiWaitForLogData 设置成“第一步” 配置 OdiWaitForLogData
OdiWaitForLogData将轮询数据源,发现变化数据。如果发现了变化数据则会进入下一步。
要配置的属性主要包括:
逻辑架构:数据源表所对应的逻辑架构
轮询间隔:每隔多长时间轮询一次。例子中间隔是5000毫秒。 订户:CDC的订户名称。
表名称:数据源表。这个表应该启动了CDC日志 “单元行计数”和“全局行计数”:可以定义必须要发生多少行变化才进行同步。在例子中,一旦有变化就同步。
配置OdiSleep
OdiSleep使得执行完接口之后可以等待一段时间再开始轮询。主要配置的参数有: 等待延迟:等待的毫秒数。例如5000毫秒,或者180000表示30分钟。
2.2 无需配置包的计划,直接执行包就可以了
3 删除日记(CDC)
为了下一步操作,删除日记。
Designer->模型->某个数据源模型如oracle_sh,右键->已更改数据捕获->删除日记。
4 LogMiner方式非实时单项复制
与1触发器方式非实时单项复制的唯一区别是模型的日记记录的配置不同,也就是选择不同JKM实现变化数据捕获。
4.1 使用LogMiner异步方式的前提 4.1.1 数据库必须启用 ARCHIVELOG 4.1.2 为进行CDC操作的用户授权
进行CDC操作的用户需要具有下面的权限: GRANT SELECT ON CHANGE_SETS TO :user;
GRANT EXECUTE on DBMS_CDC_PUBLISH TO :user; GRANT CREATE SESSION TO :user; GRANT CREATE TABLE TO :user;
GRANT CREATE TABLESPACE TO :user; GRANT UNLIMITED TABLESPACE TO :user; GRANT SELECT_CATALOG_ROLE TO :user; GRANT EXECUTE_CATALOG_ROLE TO :user; GRANT CREATE SEQUENCE TO :user; GRANT DBA TO :user;
GRANT EXECUTE on DBMS_CDC_PUBLISH TO :user;
EXECUTE DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE(GRANTEE ':user');
=>
4.2 订户和日记配置和启动
“JKM Oracle 10g Consistent (LOGMINER)”利用 Oracle10g 内置的 CDC 实现变化数据捕获。 Oracle10g 的 CDC 支持同步和异步捕获两种模式。其中的异步模式是通过
LOGMINER实现数据捕获的,相对于 TRIGGER 的方式而言,对数据源系统性能影响较小。 请按照下面的步骤来使用这个 JKM。
4.2.1 针对数据源模型配置日记记录(选择合适的JKM)
某个数据源模型如oracle_sh的定义框,选择“日记记录”标签,进行如下配置: 日记记录模式
一致性适用于多表之间有关系(如主外键等),对多表进行CDC。 简单适用于单表或者虽然是多表,但是表之间的CDC没有顺序问题。 此处我们选择一致性
选择“JKM Oracle 10g Consistent (LOGMINER)”作为 JKM,然后将
ASYNCHRONOUS_MODE 配置为“是”。如下图所示:
4.2.2 将需要进行CDC的数据存储添加到CDC
选中需要添加到CDC的数据存储如CHANNELS添加到CDC。
4.2.3 添加订阅
选中数据存储如CHANNELS,右键,已更改数据捕获->订户->订阅 输入订户名称如subscriber_sh(在后面接口中条件设置上要使用),添加,确定。
4.2.4 启动日记
数据存储如CHANNELS,右键,“已更改数据捕获”->“启动日记”, 启动日记成功后,刷新Designer,数据存储前面的钟变为绿色。
4.3 接口
参照1触发器方式非实时单项复制中接口创建和设计既可
4.4 包
利用Log Miner方式实现的包和触发器方式相比有所不同,主要是添加了两个步骤: 一个步骤完成数据扩展和订户锁定,第二个步骤完成清除日记和取消订户锁定。具体操作步骤如下:
4.4.1 新建包如TGT_CHANNLES_LOGMINER_PKG 4.4.2 关系图
PACKAGE的内容如下图:
主要包括三个步骤:
M_PROV_LOCK是将需要同步的模型如oracle_sh拖到包中来。用来扩展窗口和锁定订
户。下图是M_PROV_LOCK的例子。 主要配置了下面的信息: 步骤名称:M_PROV_LOCK 类型:选择“日记记录模型” 使用:选上扩展窗口和锁定订户。 订户:添加要同步的订户。
将变化数据同步到目标表的接口如TGT_CHANNELS_CDC_Int
M_PROV_PURGE是将需要同步的模型如oracle_sh拖到包中来。用来清除日记和取消
订户锁定。下图是M_PROV_PURGE的例子。 主要配置了下面的信息: 类型:选择“日记记录模型”
使用:选上清除日记和取消订户锁定。 订户:添加要同步的订户。
WaitData-City1和WaitData-City2分别用来判断是否存在City1和City2的变化数据。是
工具箱中的 OdiWaitForData 命令。下面是一个例子。
主要配置了下面的信息:
全局行计数:等待多少行变化数据 逻辑架构:模型所属的逻辑架构的名称
轮询间隔:隔多长时间查询一次。例子中代表50毫秒 SQL 筛选器:WHERE 子句。 对象类型:选择V(代表视图)
表名称:日志视图的名称。可以从SNP_CDC_OBJECTS查询到 超时:50毫秒 无错误超时:否
如果成功则调用接口进行数据复制,如果失败则不调用接口。
4.5 其余步骤参照1触发器方式非实时单项复制
5 LogMiner方式实时单项复制
5.1 参照4LogMiner方式非实时单项复制设置JKM 5.2 接口
参照1触发器方式非实时单项复制中接口创建和设计既可
5.3 包
结合2触发器方式实时单项复制和4Log Miner方式非实时单项复制,可以得到Log Miner方式实时单项复制的包设计。
5.3.1 新建包如TGT_CHANNLES_LOGMINER_RT 5.3.2 关系图
PACKAGE的内容如下图:
配置 OdiWaitForLogData
OdiWaitForLogData将轮询数据源,发现变化数据。如果发现了变化数据则会进入下一步。 要配置的属性主要包括:
逻辑架构:数据源表所对应的逻辑架构
轮询间隔:每隔多长时间轮询一次。例子中间隔是5000毫秒。 订户:CDC的订户名称。
表名称:数据源表。这个表应该启动了CDC日志 “单元行计数”和“全局行计数”:可以定义必须要发生多少行变化才进行同步。在例子中,一旦有变化就同步。
配置M_PROV_LOCK
M_PROV_LOCK是将需要同步的模型如oracle_sh拖到包中来。用来扩展窗口和锁定订户。下图是M_PROV_LOCK的例子。
主要配置了下面的信息: 类型:选择“日记记录模型” 使用:选上扩展窗口和锁定订户。 订户:添加要同步的订户。
将变化数据同步到目标表的接口如TGT_CHANNELS_CDC_Int
M_PROV_PURGE是将需要同步的模型如oracle_sh拖到包中来。用来清除日记和取消
订户锁定。下图是M_PROV_PURGE的例子。 主要配置了下面的信息: 类型:选择“日记记录模型”
使用:选上清除日记和取消订户锁定。 订户:添加要同步的订户。 配置OdiSleep
OdiSleep使得执行完接口之后可以等待一段时间再开始轮询。主要配置的参数有:
等待延迟:等待的毫秒数。例如5000毫秒,或者180000表示30分钟。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务