Oracle Data Integrator 介绍

转自:http://my.oschina.net/aiguozhe/blog/115773数据库

本文介绍了 Oracle Data Integrator,它是一个基于 Java 的中间件,可使用数据库在 SOA 中执行基于集合的数据集成任务。


    如今,复杂的“可热插拔”系统和面向服务的体系结构 (SOA) 获得了普遍应用,这使得将数据合理地整合在一块儿的难度日益增长。尽管您的主要应用程序数据库在 Oracle 数据库上运行,可是可能还有其余较小的系统在其余供应商提供的数据库和平台上运行。您的应用程序自己能够经过 Web 服务之类的技术进行交互,应用程序和数据能够远程托管,也能够由您在企业数据中心内进行管理。服务器

    Oracle Data Integrator 属于 Oracle Fusion Middleware产品系列,它解决了异构程度日益增长的环境中的数据集成需求。它是一个基于 Java 的中间件,可使用数据库来执行基于集合的数据集成任务,也能够将该功能扩展到多种数据库平台以及 Oracle 数据库。此外,经过它,您还能够经过 Web 服务和消息提取并提供转换数据,以及建立在面向服务的体系结构中响应和建立事件的集成过程。数据结构


Oracle Data Integrator 产品体系结构

    Oracle Data Integrator 是以 Java 图形模块和调度代理访问的模块化信息库为中心进行组织的。图形模块用于设计和构建集成过程,代理用于安排和协调集成任务。当 Oracle Data Integrator 项目投入生产时,数据管理员可使用基于 Web 的 Metadata Navigator 应用程序来根据信息库中的元数据生成报告。现成的知识模块可使用特定于平台的代码和工具跨异构平台提取和加载数据。



    
    Oracle Data Integrator 信息库包含一个主信息库(包含有关用户和角色的详细信息)、到数据库和其余数据源的链接、项目版本以及一个或多个工做信息库(包含数据模型的详细信息以及用于集成数据的映射)。这些信息库能够存储在 Oracle 和非 Oracle 关系数据库中,可使用图形模块进行管理,并能够在运行时由代理进行访问。架构

有四个图形模块可用来建立和管理 Oracle Data Integrator 项目:oracle

  • Designer 用于定义数据存储(表、文件、Web 服务等)、接口(数据映射)以及程序包(包括接口在内的几组集成步骤)。 
  • Topology Manager 用于建立和管理到数据源和代理的链接,一般限制为只有管理员能够访问。 
  • Operator 用于查看和管理产品集成做业。 
  • Security Manager 管理用户及其信息库权限。

这些基于 Java 的应用程序可在包括 Microsoft Windows、Macintosh OS X 和 Linux 在内的任何 Java 环境中运行。异步


Oracle Data Integrator 属于 Oracle 融合中间件产品系列,它解决了异构程度日益增长的环境中的数据集成需求。它是一个基于 Java 的应用程序,可使用数据库来执行基于集合的数据集成任务,也能够将该功能扩展到多种数据库平台以及 Oracle 数据库。此外,经过它,您还能够经过 Web 服务和消息提取并提供转换数据,以及建立在面向服务的体系结构中响应和建立事件的集成过程。
编辑器

oracle的数据加载工具,说白了,就是不一样库,或不一样用户下的数据传输工具。上网上下载个操做说明,先在本地安装一个ODI,熟悉熟悉操做就好了。
主要有三个工具:
一、Designer进行数据传输的操做(不一样库表数据的传输,传输方式不少种(牛B之处))
二、Operator查看数据传输的结果(传输成功,仍是失败,失败的缘由等等)。
三、Topology manager定义物理和逻辑架构,就是配置不一样库的url,sid什么的。
ide

ODI就是一个导数的工具,用IMP,EXP加个FTP和定时crontab同样能够实现导数,只不过,odi更增强大,能够实现更多的功能,等你上个项目,当你接口实现不了需求的时候,你就知道要用存储过程了,odi能够刷新执行,定时执行,不一样的库数据导给同一个库用来出报表,大体如此,没有必要扣什么数据挖掘,除非售前也归你,向客户兜售ODI,才须要扯一些什么数据仓储,数据挖掘之类的。
模块化


看完这些,了解就好了,下面若是用不到,就不用看了。。工具























声明式设计

通常来讲,数据集成任务涉及两个主要的领域:

  • 关于转换哪位数据并将其与其余位相结合的业务规则 
  • 关于数据的实际提取、加载等操做方式的技术细节 
这种划分意味着,定义业务规则的人一般是机构的技术业务专家或数据专家,而技术细节则每每留给开发人员和 DBA 等技术人员来定义。使用大多数数据集成工具,一般很难以这种方式划分职责,由于它们的数据映射特性在同一个数据映射中混合了业务规则和技术实现细节。而 Oracle Data Integrator 采用了一种不一样的方法,像 SQL 同样使用声明式方法来构建数据映射,这在工具中称为“接口”。  建立新的接口时,开发人员或技术业务用户首先定义要集成的数据以及应使用的业务规则。在该步骤中,会将表联接在一块儿,应用过滤器,并使用 SQL 表达式来转换数据。所使用的特定 SQL 语言由执行代码的数据库平台来决定。

    而后,在另外一个步骤中,技术人员可使用特定于数据库的工具和设计方法(例如增量加载、批量加载工具、渐变维度和更改数据捕获)以最有效的方式来提取、组合并集成该数据。

可扩展的知识模块

    因为 Oracle Data Integrator 在响应事件的同时从不少不一样的数据库平台加载和转换数据并使用基于消息的技术  (如 Web 服务),所以用于访问和加载这些不一样数据源的技术须要灵活、可扩展而又高效。Oracle Data Integrator 经过知识模块解决了该问题。

    知识模块是 Oracle Data Integrator 的“插件”,它浓缩了为特定数据源或特定目标加载、转换或集成数据的最佳实践。Oracle Data Integrator 有六种知识模块,以下图所示:



  • 反向工程知识模块用于从源数据库中读取表和其余对象元数据。 
  • 日志记录知识模块记录单个表或视图或者一组一致的表或视图中的新数据和更改的数据。 
  • 加载知识模块用于从源数据库中有效地提取数据,并包括特定于数据库的适用的批量卸载工具。 
  • 检查知识模块用于检测源数据中的错误。 
  • 集成知识模块用于有效地将分段存储区中的数据转换为目标表,以便为给定数据库生成优化的本机 SQL。 
  • 服务知识模块能够将数据公布为 Web 服务。 
  • 知识模块还能够扩展,这样您能够添加 Oracle Data Integrator 当前未提供的功能。例如,采用一组现有的基于 Oracle 的知识模块并将其扩展为包括 Oracle 数据库 10g 中的 Oracle 数据泵功能将是一项相对简单的任务。

数据质量防火墙

    若是您是负责加载数据仓库的人,那么不得不解决的一个问题是执行夜间加载的时间段愈来愈短。若是您的元数据包含大量在加载到数据仓库分段存储区以前没法检测的错误,时间就会变得格外紧张。

    Oracle Data Integrator 利用了一种创新方法来解决该问题,即便用检查知识模块在数据源处充当脏数据的“防火墙”,只容许符合业务规则的数据进入集成流程。要使用该方法有效地确保数据质量,您首先要在源对象上定义一个或多个约束,而后使用检查知识模块来识别不符合这些约束的全部行,并将它们复制到错误表中。



这样,在您之后从这些源对象中提取数据并在接口中使用它们时,能够确保仅加载了符合这些约束的数据,而且您能够单独处理错误表中的脏数据。

支持更改数据捕获

    尽量缩短数据加载时间的另外一种有用的方法是,仅加载新的或通过更改的数据。幸运的话,应用程序设计人员会提供指示器和日期来帮助肯定新的或通过更改的数据,可是大多数状况下不会提供该信息,这须要您本身来肯定感兴趣的数据。

    因为这是一个至关广泛的要求,所以 Oracle Data Integrator 提供了日志记录知识模块来监视源数据库,并将新的和通过更改的记录复制到日志中,而后能够从日志中而非原始的源表中读取这些记录。若是 Oracle 之类的数据库供应商提供更改数据捕获的本机支持,就会使用这些功能;不然,日志记录知识模块会使用触发器之类的技术来捕获数据操做语言 (DML) 活动并使更改可用。在本文的后面部分,您将看到 Oracle Data Integrator 如何提供 Oracle 更改数据捕获功能,以及如何使用它以增量方式将数据库实时加载到其余数据库平台上。

Oracle Data Integrator 与 Oracle Warehouse Builder 比较

    这时,Oracle Warehouse Builder 的常规用户可能想知道它与 Oracle Data Integrator 的关系,以及它在其余 Oracle 数据仓库技术产品中的适用状况。咱们的回答是,Oracle Data Integrator 是一个工具,是对 Oracle Warehouse Builder 的补充,若是涉及在 Oracle 数据仓库中建立分段层和集成层的工做很重要或者涉及 SOA 或非 Oracle 数据库源,它将尤其有用。

    对于构建 Oracle 数据仓库的人来讲,Oracle Warehouse Builder 有一组功能强大的特定于 Oracle 的数据仓库功能,例如,支持关系和多维数据结构的建模、与 Oracle Business Intelligence Discoverer 集成、支持加载渐变维度,以及用于理解数据结构和语义的数据分析器。

    从源数据的最初准备和集成一直到数据仓库的分段存储区,Oracle Data Integrator 都起着重要做用。



    Oracle Data Integrator 能够集成和同步大量不一样数据源(包括 Web 服务和基于事件的体系结构)中的数据,而且如上图所示,还能够为特定于 Oracle 数据库的功能(如 Oracle 更改数据捕获)提供方便的图形界面。将数据集成并复制到数据仓库分段存储区后,Oracle Warehouse Builder 会接替后续工做,建立并填充操做数据存储和维度仓库层。

    如今你们对 Oracle Data Integrator 已经有所了解,本文将重点关注如何在实际的数据集成案例中使用它。

Oracle Data Integrator 使用示例:跨平台实时数据集成

    在该案例中,您的任务是从 Oracle 数据库中提取一些订单和客户数据,将其与文件中保存的一些员工数据组合到一块儿,而后将集成的数据载入 Microsoft SQL Server 2000 数据库。因为订单到达时须要进行分析,所以您但愿以尽量接近实时的速度将它们直接传递到目标数据库,并仅提取新的和通过更改的数据以保持尽量小的负载。您已经在 Oracle 技术网上了解了 Oracle Data Integrator 的相关信息,并但愿使用这一新工具来提取和加载数据。

您首先登陆到 Oracle Data Integrator 并启动 Topology Manager,以下图所示。



在 Oracle Data Integrator 中,物理数据库、服务或基于事件的数据源均称为数据服务器。使用 Topology Manager 建立三个新的数据服务器:

一个 Oracle 数据库数据服务器,使用 SYSTEM 用户的凭证设置,映射到数据库上的 ORDERS 和 ORDERS_WORKAREA 模式。ORDERS 模式包含您要提取的订单数据,而 ORDERS_WORKAREA 模式是您专门设置的一个空模式,用来存放 Oracle Data Integrator 建立的工做表。使用 Oracle JDBC 驱动程序创建该链接。 
一个文件数据服务器,映射到以逗号分隔的文件(其中包含员工详细信息)。使用 Sunopsis 文件 JDBC 驱动程序创建该链接。 
一个 Microsoft SQL Server 数据服务器,映射到名为 ORDERS_DATA_MART 的数据库。使用 Sun JDBC-ODBC 桥接 JDBC 驱动程序创建该链接,或者使用 Microsoft JDBC 驱动程序(能够从 Microsoft Web 站点下载)。 
定义数据服务器以后,您能够退出 Topology Manager 并启动 Designer。使用 Designer,您能够建立表明 Oracle、文件以及 Microsoft SQL Server 表和文件的数据模型,这在 Oracle Data Integrator 中称为数据存储。首先建立 Oracle 和 Microsoft SQL Server 模型,而后使用反向功能将表的元数据导入 Oracle Data Integrator 的信息库中,以下图所示。

若是已经定义了全部数据模型,而且已经手动输入源以及目标表和文件的详细信息或对其进行反向工程,Designer 将显示您目前在项目中使用的全部数据存储的列表,以下图所示。



肯定基础源表是否未定义主键,您可使用 Designer 应用程序定义它们,而后让 Oracle Data Integrator 以“虚拟方式”强制执行,由于 Oracle Data Integrator 的不少映射功能都依赖于所定义的约束。

既然已经定义了数据存储,您能够开始设置获取源数据的更改数据捕获过程了。

可是,在此以前,您须要将提供更改数据捕获功能的知识模块导入项目。为此,单击 Designer 应用程序的 Projects 选项卡,右键单击项目,而后选择 Import->Import Knowledge Modules。从列表中选择如下知识模块,它们可提供更改数据捕获功能并将在项目的其余部分中使用。

CKM SQL 
IKM SQL 增量更新 
JKM Oracle 10g Consistent (LOGMINER) 
LKM File to SQL 
LKM SQL to SQL 
如今,所需的知识模块已经可用,您能够编辑之前建立的 Oracle 模块并选择 Journalizing 选项卡。因为您但愿以一致的方式捕获对 ORDERS 和 CUSTOMER 表的更改,所以选择了 Consistent 选项和 JKM Oracle 10g Consistent (LOGMINER) 知识模块。该知识模块(以下图所示)将使用 Oracle 数据库 10g 的 LogMiner 功能捕获新的和通过更改的数据,并使用 Oracle 流以异步方式在队列中传播更改。



该知识模块提供了三个配置选项。您能够选择下列值来配置该模块:

Asynchronous Mode:Yes 
Auto-Configuration:Yes 
Journal Table Options:default 
单击 Apply 保存更改,而后单击 OK 完成配置。如今,您须要将表添加到更改数据捕获集合中。

为此,在 Designer 的模块列表中找到 Oracle 数据服务器,依次右键单击 CUSTOMERS 和 ORDERS 表,而后选择 Changed Data Capture ->Add to CDC。而后,再次编辑模型的 Journalized Tables 选项卡,使用向上和向下箭头键将 ORDERS 表置于 CUSTOMERS 表的上面。

如今,您能够建立从这两个表中捕获更改数据的日志了。为此,再次右键单击该模型,并选择 Changed Data Capture ->Start Journal。单击 OK 在本地执行代码,而后启动 Operator 应用程序检查操做进程。若是一切正常,您将看到一个相似于如下的完成步骤列表。



若是该过程遇到错误,一般是因为您使用了不具备所需权限的用户账户定义 Oracle 链接。查看您提供的用户详细信息和 Oracle Data Integrator 文档以解决全部问题,而后再继续该练习的其他部分。

接下来,您要向日志中添加一个用户,方法是:返回 Designer 应用程序,右键单击 Oracle 源数据服务器,并选择 Changed Data Capture ->Subscriber->Subscribe。添加一个新用户,并在本地执行代码以确保代码正确执行(某些操做可能会发出警告,由于在前面的步骤中已经建立了所需的表)。该步骤完成后,您已经创建了更改数据捕获过程,能够开始构建接口了。

该项目须要两个接口,第一个接口用于从 Oracle 源数据库中提取现有的数据集,将其与源文件中的数据联合到一块儿,而后将组合数据载入目标 Microsoft SQL Server 数据库,以下图所示。

注意,目标表中的某些列已经自动映射,但 SALES_PERSON_ID、SALES_PERSON_NAME 和 CUSTOMER_NAME 等其余列最初并未映射,由于映射过程找不到匹配的源列。如今,您将手动映射这些列,使用表达式编辑器输入使用源或目标数据库语法的 SQL 表达式,具体取决于发生转换的位置。

若是单击 Flow 选项卡,您将看到用于加载和集成数据的实际知识模块,以下图所示。

Oracle Data Integrator 已经选择了默认知识模块来实现从任何数据库和文件中提取数据,而后以增量方式载入任何数据库。稍后,您能够将这些知识模块更改成更适合您的特定数据库和版本的模块,但如今请保留这些模块的默认设置。

最后,以下图所示,单击 Control 选项卡,以选择用于处理目标表的约束错误的控制知识模块。选择 CKM SQL Knowledge Module 以处理符合 ISO-92 的数据库中的错误数据。



如今,您能够测试接口了。为此,单击接口对话框右下角的 Execute,而后打开 Operator 应用程序检查接口进度,以下图所示。



因为接口的执行未出现错误,您能够在 Designer 应用程序中导航到目标数据存储并查看加载的数据,以下图所示。

如今,您已经设置了初始负载,下面能够定义经过先前建立的日志表加载新的和通过更改的数据的接口了。

为此,再建立一个接口,但此次,当您添加 CUSTOMERS 和 ORDERS 源表时,单击代表使用日志记录的数据而非数据存储内容的复选框。为一个日志记录表选择该复选框后,系统将自动为一致集合中的全部其余表选中该复选框,以下图所示。



将日志记录表添加到接口后,您能够按照与先前彻底相同的方式构建接口的其他部分,惟一的区别是,第二个接口以日志记录的数据而非源表内容做为源数据。

要测试第二个接口,您能够将一些新记录插入 ORDERS 和 CUSTOMERS 表,而后使用 Designer 接口来扩展日志窗口;稍后,您将自动扩展该窗口,并将其做为 Oracle Data Integrator 程序包的一部分进行清除。但如今,右键单击 Oracle 数据模型,并从上下文菜单中选择 Changed Data->Consumption->Extend Window,使新的和通过更改的数据的最新集合可用于第二个接口,以下图所示。



您能够快速检查哪些行在表日志中(右键单击相关的数据存储,选择 Changed Data Capture,而后选择 Journal Data…),也能够执行接口(在编辑器中再次打开它,并单击屏幕右下角的 Execute)。

因为您已经使用所建立的第一个接口将最初的数据集合载入目标数据中心,如今能够建立一个 Oracle Data Integrator 程序包来执行下列步骤:

检查 ORDERS 和 CUSTOMER 日志记录数据,以查看是否已添加新的或通过更改的数据记录。若是检测到预约义数量的日志记录,运行程序包的其他部分或跳到最后一步,无需加载任何数据。 
若是检测到日志记录数据,扩展日志窗口。 
执行该接口,以读取日志记录数据,将其与文件联合,并加载目标数据存储。 
清除日志窗口。 
再次启动该程序包。 
建立该程序包而后将其做为 Oracle Data Integrator 案例部署可有效地建立一个实时、连续运行的 ETL 过程。使用 Oracle Data Integrator 的事件检测功能,该程序包将在检测到预先设置的更改数据记录数或通过指定的毫秒数后自行启动。经过为日志记录数据的数量和超时设置相应的阈值,您能够建立一个延迟最小的实时集成过程。

要建立该程序包,导航到 Designer 应用程序的 Projects 选项卡,找到包含您先前定义的接口的文件夹,找到 Packages 项,右键单击该项,而后选择 Insert Package。为该程序包指定一个名称,而后导航到程序包详细信息对话框的 Diagram 选项卡。

使用右侧的工具箱,转至 Event Detection 文件夹并将 OdiWaitForLogData 工具添加到程序包画布中,以下图所示。该工具将按期轮询日志记录数据,若是未找到任何行,该工具将失败,若是在日志中检测到预先设置的行数,该工具将进入程序包的下一个步骤。

您能够将工具属性设置为检查先前定义的更改数据捕获集合,并在发现 3 个日志行或检查开始一分钟后退出。

如今,您能够添加一个扩展日志窗口以读入新数据的步骤。为此,导航到模型列表,并将 Oracle 模型拖放到画布上。选择该模型,查看属性,而后将 Model Type 列表更改成 Journalizing Model,以下图所示。

而后,单击 Extend Window 复选框,以代表该日志步骤将扩展日志窗口。

接下来,将从日志提取数据的接口添加到映射,而后将 Oracle 模型再次添加到程序包中,但此次选择 Purge Window 选项,以便在读取日志后将其清除。最后,将 Utilities 文件夹中的 OdiStartScen 工具添加到工具箱,以便在其完成后再次重启,您还能够添加显示步骤流程的链接器(以下图所示),具体取决于第一个步骤是否检测到日志行。



因为最后的 OdiStartScen 步骤指的是程序包生产版本中的状况,您能够在 Designer 应用程序的 Project 选项卡中找到要使用的程序包,右键单击该程序包,并选择 Generate Scenario。建立了案例以后,您能够编辑 OdiStartScen 步骤的属性,使其引用您刚刚生成的案例名称。将这最后一步添加到程序包以后,您就能够确保它连续运行,并以实时方式将 Oracle 源表中新的和通过更改的数据传播到目标数据库。

总结
Oracle Data Integrator 是 Oracle 融合中间件产品系列的一个新成员,您能够利用它跨众多平台执行面向数据、事件和服务的集成。它对 Oracle Warehouse Builder 进行了补充,并为特定于 Oracle 数据库的功能(例如,批量数据加载和 Oracle 更改数据捕获)提供了图形界面。本文探究了如何使用 Oracle Data Integrator 跨不一样的平台建立实时数据集成过程,还探究了集成过程的声明式方法,该方法可以让您集中精力定义业务规则,而不用考虑实现细节。

Mark Rittman [http://www.rittmanmead.com/blog] 是一位 Oracle ACE,而且是 Rittman Mead Consulting 的创始人之一,Rittman Mead Consulting 是 Oracle 的专业合做伙伴,总部设在英国,并致力于 Oracle 商务智能和数据仓库。他按期向 OTN 和 OTN 论坛投稿,而且是 Oracle Press 即将在 2008 年出版的《Oracle 商务智能套件开发人员指南》一书的做者之一

相关文章
相关标签/搜索