ODI使用案例
ODI(Oracle Data Integrator)是Oracle公司提供的一种数据集成工具,能高效地实现批量数据的抽取、转换和加载。ODI可以实现当今大多数的主流关系型数据库(Oracle、DB2、SQL Server、MySQL、SyBase)的集成。
ODI提供了图形化客户端和agent运行程序。客户端软件主要用于对整个数据集成服务的设计,包括创建对数据源的连接架构、创建模型及反向表结构、创建接口、生成方案和计划等。Agent运行程序是通过命令行方式在ODI服务器上启动的服务,对agent下的执行计划周期性地执行。
ODI工具的使用可分为三个步骤:
1. 通过Topology Manager创建对数据源的连接架构、代理。
2. 通过Designer创建接口、包、方案和计划,在Operator里查看执行的结果。
3. 启动agent,自动执行所创建的计划。
1 Topology Manager
Topology Manager是ODI客户端图形化软件的一个操作模块。通过操作Topology Manager,可以实现数据源的数据服务器、架构的创建和管理,也可以实现对数据源的技术、数据类型、上下文的管理,而且,运行项目所需要的代理也需要在Topology Manager模块里创建。另外,对工作存储库的创建也需要在这个模块中完成。
登录Topology Manager,Oracle Data Integrator > Topology Manager
1.1 创建目标数据服务器和物理方案
1.1.1新建数据服务器
JDBC部分填写
1.1.2 新建物理方案
数据库名: cwcwebsiteDB
数据表名: GrZh
选择数据库和所有者
1.2 创建逻辑方案
右键Topology->逻辑体系结构->技术->Sql Server,选择“新建逻辑方案”,在逻辑架构对话框的“定义”标签中输入“名称”,“上下文”以及对应的“物理方案”:
1.3创建代理
2 Designer和Operator
Designer、Operator和Topology Manager一样,都属于ODI图形化工具的模块。
Designer是ODI的设计模块,通过操作Designer,可以实现对数据模型、项目、接口、包、方案、计划的创建和管理。Designer模块的操作是ODI工具使用的核心。
Operator是ODI的执行模块,通过查看Operator,可以对执行的接口、包、方案进行查看和管理。Operator中反应的是执行的结果,常和Designer一起使用,反应Designer中创建的接口、包是否正确。
2.1创建模型
新建模型文件夹
Designer->模型,点击插入模型图标,在模型对话框的“定义”标签下,输入名称,选择技术和逻辑架构(注意逻辑架构是数据源):
创建新模型
在“逆向工程”标签下,选择上下文如“Global”,选择“要进行反向工程的对象类型”如“表、视图”等等,此处只选择了表:
然后在“选择性逆向工程”标签下,选中“选择性逆向工程”和“要进行反向操作的对象”,在“表名称”中选择Grzh表:<注意:逆向工程这个按钮这里必须点击>
“保存”,模型创建成功。
注意:源表SQL DDL代码如下
SET QUOTED_IDENTIFIER ON GO
CREATE TABLE [dbo].[GrZh]( [Zh] [int] NOT NULL, [Xm] [nvarchar](8) NULL, [Kh] [int] NULL, [GrMm] [int] NULL, [Kzt] [tinyint] NULL, [QyBh] [smallint] NULL, [KhQyBh] [smallint] NOT NULL, [KhXtBh] [smallint] NOT NULL, [BmDm1] [smallint] NULL, [BmDm2] [smallint] NULL, [LbBh] [tinyint] NULL, [Kyj] [int] NULL, [Kbj] [int] NULL, [JhSj] [datetime] NULL, [JhJe] [int] NULL, [SfXh] [nvarchar](20) NULL, [Bh] [smallint] NULL, [ZhYe] [int] NULL, [RbBz] [bit] NOT NULL, [YLZyYe] [int] NOT NULL, [NetPwd] [nvarchar](32) NULL, [KLx] [tinyint] NULL, [KXLh] [nvarchar](32) NULL, [RXfXe] [smallint] NULL, [zp] [image] NULL, [zjhm1] [nvarchar](20) NULL, [zjhm2] [nvarchar](20) NULL, [yhzh] [nvarchar](40) NULL, [JzRq] [datetime] NULL, [KLb] [tinyint] NULL, [LSKYE] [int] NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO |
注意:目标库建立表,这里在对应的Oracle数据库里面需要有Grzh表。Grzh表结构
CREATE TABLE "USR_ZSJ"."GRZH" ( "Zh" NUMBER(*,0) NOT NULL ENABLE, "Xm" NVARCHAR2(8), "Kh" NUMBER(*,0), "GrMm" NUMBER(*,0), "Kzt" NUMBER(*,0), "QyBh" NUMBER(*,0), "KhQyBh" NUMBER(*,0) NOT NULL ENABLE, "KhXtBh" NUMBER(*,0) NOT NULL ENABLE, "BmDm1" NUMBER(*,0), "BmDm2" NUMBER(*,0), "LbBh" NUMBER(*,0), "Kyj" NUMBER(*,0), "Kbj" NUMBER(*,0), "JhSj" DATE, "JhJe" NUMBER(*,0), "SfXh" NVARCHAR2(20), "Bh" NUMBER(*,0), "ZhYe" NUMBER(*,0), "RbBz" NUMBER(*,0) NOT NULL ENABLE, "YLZyYe" NUMBER(*,0) NOT NULL ENABLE, "NetPwd" NVARCHAR2(32), "KLx" NUMBER(*,0), "KXLh" NVARCHAR2(32), "RXfXe" NUMBER(*,0), "zp" BLOB, "zjhm1" NVARCHAR2(20), "zjhm2" NVARCHAR2(20), "yhzh" NVARCHAR2(40), "JzRq" DATE, "KLb" NUMBER(*,0), "LSKYE" NUMBER(*,0) ) |
2.2创建项目
Designer->项目,点击插入项目图标,在项目对话框的“定义”标签下输入项目名称如testODI:
“确定”。
接下来,导入知识模块:
导入RKM(反向工程知识模块):RKM完成从源系统和目标系统的数据结构的反向工程来形成数据模型的功能。
进入
(F:\oracle\Middleware\Oracle_ODI1\oracledi\xml-reference),将以“RKM”开头的全部导入。
导入完成报告
其余的LKM、CKM、IKM、JKM、SKM均以相同的方式导入。
LKM(LKM完成从源数据库数据加载到临时表)
CKM完成数据质量检查
IKM完成从临时表的数据加载到目标表
JKM(日记)
SKM(SKM完成ODI和WEB服务接口的功能)
Web服务知识模块,可以使用该知识模块来生成Web服务调用
2.3创建接口
1 新建接口
右键Designer->项目->testodi->第一个文件夹->接口,“插入接口”:
2“定义”标签
输入名称如test244,选择上下文,注意选择“临时区域与目标区域”,并且指定临时区域的逻辑架构,可以指定的和目标逻辑架构相同。选择此项,只是为了能够由ODI接口自主创建目标表及其字段,可以不进行选择。
3“映射”标签
首先从左边的jhtchina模型中拖拽test244表到右边的数据源框中,再将MOD_kfptdb.usr_zsj模型中的表拖拽到目标数据存储框中。
编辑映射关系,选中目标数据存储中的某个字段,在窗口下方的映射编辑框中,点击,进入表达式编辑器。
注意上图关键字的设置
在左边的源字段中,双击映射字段Zh,在右边的编辑框中就出现了GRZH.Zh,“确定”,完成映射。
再为目标表设置主键,将zh字段设为主键。
4“流”标签
分别选中源区域,目标+临时区域,选择LKM和IKM,
LKM选择LKM SQL to SQL,
IKM选择IKM SQL incremental Update,并将下面的参数FLOW_CONTROL设为“假”。
Truncate设置为真
“确定”,保存接口。
5 执行接口,在Operator中查看。
6 问题描述与排查
问题排查是LKM选择器的问题
目标表数据类型不一致 删除目标表映射对应的字段
实际运行效果
2.4创建包
设计器->项目-> testodi ->第一个文件夹->包,右键“插入包”:
1. “定义”标签
输入名称packet1
2.“图表”标签
将接口test244拖拽到关系图框中。
确定,完成包的设计。
执行包,并在Operator中查看。
2.5生成方案、计划
右键packet1 -> 生成场景
右键”调度”->”新建调度”
选择逻辑代理,日志级别,执行周期。
“确定”,计划生成。
3 Agent
代理(agent)的创建。ODI的Agent是一个能作为TCP/IP
监听端口的JAVA服务,agent服务下包括一些预先设定时间的方案,当agent处于运行时,它会根据方案设定的时间和周期自动执行。
这里需要单独成稿完善。
4 其他
5 常见问题
5.1 接口没有执行成功
解决办法:1、双击未执行命令(红色感叹号)。
2、查看报错信息,如下图。
5.2 服务器重启,代理未执行
问题描述:服务器重启会导致系统服务出现问题。
解决方法:右击我的电脑- 管理 -服务
将OracleDI Agent 开头的服务都重新启动。
代理查看
5.3 数据源的表结构改变
1、 删除相应接口,若已经生成包,则先删除相应的包。
2、 在模型里删除发生改变的表。
3、 在模型里重新反向需要的同步的表。
4、 新建接口,由数据源表同步到目标表。
5、 建包—生成方案—插入计划
6、 更新下代理。点击上方按钮,在代理中找到相应的代理,右击更新计划。
5.4 数据源改变
问题描述:数据源的接口发生改变,数据库的IP地址发生改变。
解决方法:1、点击拓扑->物理体系结构->技术->
,在物理体系结构中找到相应的数据库服务器。如下图。
2、修改正确的用户、密码以及URL。点测试,出现以下成功提示即可。
- 点赞
- 收藏
- 关注作者
评论(0)