ODI使用案例

举报
jhtchina 发表于 2018/12/20 09:13:34 2018/12/20
【摘要】 ODI(Oracle Data Integrator)是Oracle公司提供的一种数据集成工具,能高效地实现批量数据的抽取、转换和加载。ODI可以实现当今大多数的主流关系型数据库(Oracle、DB2、SQL Server、MySQL、SyBase)的集成。ODI提供了图形化客户端和agent运行程序。客户端软件主要用于对整个数据集成服务的设计,包括创建对数据源的连接架构、创建模型及反向表结...

ODIOracle Data Integrator)是Oracle公司提供的一种数据集成工具,能高效地实现批量数据的抽取、转换和加载。ODI可以实现当今大多数的主流关系型数据库(OracleDB2SQL ServerMySQLSyBase)的集成。

ODI提供了图形化客户端和agent运行程序。客户端软件主要用于对整个数据集成服务的设计,包括创建对数据源的连接架构、创建模型及反向表结构、创建接口、生成方案和计划等。Agent运行程序是通过命令行方式在ODI服务器上启动的服务,对agent下的执行计划周期性地执行。

ODI工具的使用可分为三个步骤:

1.  通过Topology Manager创建对数据源的连接架构、代理。

2.  通过Designer创建接口、包、方案和计划,在Operator里查看执行的结果。

3.  启动agent,自动执行所创建的计划。

1 Topology Manager

Topology ManagerODI客户端图形化软件的一个操作模块。通过操作Topology Manager,可以实现数据源的数据服务器、架构的创建和管理,也可以实现对数据源的技术、数据类型、上下文的管理,而且,运行项目所需要的代理也需要在Topology Manager模块里创建。另外,对工作存储库的创建也需要在这个模块中完成。

登录Topology ManagerOracle Data Integrator > Topology Manager

1.1 创建目标数据服务器和物理方案

1.1.1新建数据服务器

image.png

image.png

JDBC部分填写

image.png

1.1.2 新建物理方案

image.png

数据库名: cwcwebsiteDB

数据表名: GrZh

选择数据库和所有者

image.png

1.2 创建逻辑方案

右键Topology->逻辑体系结构->技术->Sql Server,选择“新建逻辑方案”,在逻辑架构对话框的“定义”标签中输入“名称”,“上下文”以及对应的“物理方案”:

image.png

1.3创建代理

2 DesignerOperator

DesignerOperatorTopology Manager一样,都属于ODI图形化工具的模块。

DesignerODI的设计模块,通过操作Designer,可以实现对数据模型、项目、接口、包、方案、计划的创建和管理。Designer模块的操作是ODI工具使用的核心。

OperatorODI的执行模块,通过查看Operator,可以对执行的接口、包、方案进行查看和管理。Operator中反应的是执行的结果,常和Designer一起使用,反应Designer中创建的接口、包是否正确。

2.1创建模型

新建模型文件夹

image.png

Designer->模型,点击插入模型图标spacer.gif,在模型对话框的“定义”标签下,输入名称,选择技术和逻辑架构(注意逻辑架构是数据源):

image.png

创建新模型

image.png

在“逆向工程”标签下,选择上下文如“Global”,选择“要进行反向工程的对象类型”如“表、视图”等等,此处只选择了表:

image.png

然后在“选择性逆向工程”标签下,选中“选择性逆向工程”和“要进行反向操作的对象”,在“表名称”中选择Grzh表:<注意:逆向工程这个按钮这里必须点击>

image.png

“保存”,模型创建成功。

注意:源表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)

   )


image.png

2.2创建项目

Designer->项目,点击插入项目图标spacer.gif,在项目对话框的“定义”标签下输入项目名称如testODI

image.png

image.png

“确定”。

接下来,导入知识模块:

导入RKM(反向工程知识模块):RKM完成从源系统和目标系统的数据结构的反向工程来形成数据模型的功能。

进入

(F:\oracle\Middleware\Oracle_ODI1\oracledi\xml-reference),将以“RKM”开头的全部导入。

image.png

导入完成报告

image.png

其余的LKMCKMIKMJKMSKM均以相同的方式导入。

LKM(LKM完成从源数据库数据加载到临时表)

image.png

CKM完成数据质量检查

image.png

IKM完成从临时表的数据加载到目标表

image.png

JKM(日记)

image.png

SKM(SKM完成ODIWEB服务接口的功能)

Web服务知识模块,可以使用该知识模块来生成Web服务调用

image.png

2.3创建接口

1 新建接口

右键Designer->项目->testodi->第一个文件夹->接口,“插入接口”:

image.png

2“定义”标签

image.png

输入名称如test244,选择上下文,注意选择“临时区域与目标区域”,并且指定临时区域的逻辑架构,可以指定的和目标逻辑架构相同。选择此项,只是为了能够由ODI接口自主创建目标表及其字段,可以不进行选择。

3“映射”标签

首先从左边的jhtchina模型中拖拽test244表到右边的数据框中,再将MOD_kfptdb.usr_zsj模型中的表拖拽到目标数据存储框中。

image.png

编辑映射关系,选中目标数据存储中的某个字段,在窗口下方的映射编辑框中,点击spacer.gif,进入表达式编辑器。

image.png

注意上图关键字的设置

在左边的源字段中,双击映射字段Zh,在右边的编辑框中就出现了GRZH.Zh,“确定”,完成映射。

再为目标表设置主键,将zh字段设为主键。

4“流”标签

分别选中源区域,目标+临时区域,选择LKMIKM

LKM选择LKM SQL to SQL

IKM选择IKM SQL incremental Update,并将下面的参数FLOW_CONTROL设为“假”。

 Truncate设置为真

image.png

“确定”,保存接口。

5      执行接口,在Operator中查看。

6  问题描述与排查

image.png


问题排查是LKM选择器的问题

image.png

image.png

image.png

目标表数据类型不一致  删除目标表映射对应的字段

image.png


实际运行效果

image.png

2.4创建包

设计器->项目-> testodi ->第一个文件夹->包,右键“插入包”:

1.  “定义”标签

输入名称packet1

image.png


2.“图表”标签

将接口test244拖拽到关系图框中。

image.png

确定,完成包的设计。

执行包,并在Operator中查看。

2.5生成方案、计划

右键packet1 -> 生成场景

image.png

    右键调度”->”新建调度

image.png

选择逻辑代理,日志级别,执行周期。

“确定”,计划生成。


3 Agent

代理(agent)的创建。ODIAgent是一个能作为TCP/IP

监听端口的JAVA服务,agent服务下包括一些预先设定时间的方案,当agent处于运行时,它会根据方案设定的时间和周期自动执行。

http://www.oracle.com/webfolder/technetwork/tutorials/obe/fmw/odi/odi_11g/setup_odi_agent/setup_odi_agent.htm

    这里需要单独成稿完善。

 

4 其他

 

 

 

5 常见问题

5.1 接口没有执行成功

image.png

解决办法:1、双击未执行命令(红色感叹号)。

          2、查看报错信息,如下图。


5.2 服务器重启,代理未执行

问题描述:服务器重启会导致系统服务出现问题。

解决方法:右击我的电脑- 管理 -服务

image.png

OracleDI Agent 开头的服务都重新启动。

       代理查看

image.png

5.3 数据源的表结构改变

1、 删除相应接口,若已经生成包,则先删除相应的包。

2、 在模型里删除发生改变的表。

3、 在模型里重新反向需要的同步的表。

4、 新建接口,由数据源表同步到目标表。

5、 建包生成方案插入计划

6、 更新下代理。点击上方spacer.gif按钮,在代理中找到相应的代理,右击更新计划。


5.4 数据源改变

问题描述:数据源的接口发生改变,数据库的IP地址发生改变。

解决方法:1、点击拓扑->物理体系结构->技术-> spacer.gif

image.png

,在物理体系结构中找到相应的数据库服务器。如下图。

image.png

2、修改正确的用户、密码以及URL。点测试,出现以下成功提示即可。




【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。