环境:
源数据库source,用户source_u,表source_t。
源数据库target,用户target_u,表target_t。
1. 将源端数据初始化到目标端
见上篇文章《odi-双库间单表全量同步》。
源端数据:
SQL> select * from sou_u.sou_t;
ID NAME
---------- --------------------------------------------------
1 Tom
2 Jimmy
3 Li Ming
目标端数据:
SQL> select * from tar_u.tar_t;
ID NAME
---------- --------------------------------------------------
1 Tom
2 Jimmy
3 Li Ming
2. 添加CDC Simple模式
2.1在反向的模型中启用日志记录,选择对应的知识模块-----JKM Oracle Simple。
2.2添加CDC。
找到模型中的SOURCE_T,右击---->"已更改数据捕获"----->添加CDC。
注:被添加cdc的表一定是含有主键的表,否则会报错。
2.3订阅订户。
找到模型中的SOURCE_T,右击---->"已更改数据捕获"----->订户----->订阅;
之后打开模型中的表查看如下:
2.4启动日志。
找到模型中的SOURCE_T,右击---->"已更改数据捕获"----->启动日志。
3. 配置接口增量同步
打开初始化所建的接口,需要在“仅已进行日记记录的数据上”打勾。
选中“仅已进行日记记录的数据”,则会出现一个小漏斗。点击小漏斗(即过滤器),在属性监察器中修改筛选条件为:JRN_SUBSCRIBER=’subscriber_0527’,此处的subscriber_0527就是我们前面添加的订阅者。
保存接口。
4. 数据验证
源端执行:
SQL> insert into sou_u.sou_t values (4,'CDC test');
1 row created.
SQL> commit;
Commit complete.
SQL> insert into sou_u.sou_t values (0,'CDC test');
1 row created.
执行接口。
执行后目标端数据库:
SQL> select * from target_t;
ID NAME
---------- --------------------------------------------------
1 Tom
2 Jimmy
3 Li Ming
4 CDC test
0 CDC test
数据同步成功。
5. 配置agent,并定时执行
配置物理代理
配置逻辑代理
接口添加需要调用的代理
右键插入调试
环境变量
计算密码串
[oracle@odi ~]$ cd $ODI_HOME/bin
[oracle@odi bin]$ ./encode.sh oracle
hZyaUOa70Ujh5Ln2a7y4iy
修改配置文件
[oracle@odi bin]$ vi odiparams.sh
# Repository Connection Information
if [ -z "${ODI_INSTANCE_HOME}" ]; then
ODI_MASTER_DRIVER=oracle.jdbc.OracleDriver
ODI_MASTER_URL=jdbc:oracle:thin:@172.25.4.4:1521:orcl
ODI_MASTER_USER=ODI_MASTER
ODI_MASTER_ENCODED_PASS=hZyaUOa70Ujh5Ln2a7y4iy
ODI_SUPERVISOR=SUPERVISOR
ODI_SUPERVISOR_ENCODED_PASS=hZyaUOa70Ujh5Ln2a7y4iy
# DO NOT EDIT BELOW THIS LINE !
# ----------------------------------------------------------------------------
[oracle@odi bin]$ vi agentcreate.properties
# Use / as path seperator to specify path in Unix as well as Windows.
ORACLE_ODI_HOME=Oracle_Home Directory
INSTANCE_HOME=INSTANCE_HOME Directory
COMPONENT_TYPE=odiagent
COMPONENT_NAME=agent_0527
PORTNO=20910
JAVA_HOME=JAVA_HOME
ORACLE_OPMN_HOME=OPMN_HOME Directory
JMXPORTNO=20811
PROXY_PORT=98767
MASTER_REPO_EXTERNAL_ID=12345
ODI_MASTER_DRIVER=oracle.jdbc.OracleDriver
ODI_MASTER_URL="jdbc:oracle:thin:@172.25.4.4:1521:orcl"
ODI_MASTER_USER=ODI_MASTER
ODI_MASTER_ENCODED_PASS=hZyaUOa70Ujh5Ln2a7y4iy
ODI_SUPERVISOR=SUPERVISOR
ODI_SUPERVISOR_ENCODED_PASS=hZyaUOa70Ujh5Ln2a7y4iy
--启动脚本
./agent.sh -NAME=agent_0527
--停上上脚本
agentstop.sh -NAME=agent_0527