首页 Oracle_Data_Integrator应用指南

Oracle_Data_Integrator应用指南

举报
开通vip

Oracle_Data_Integrator应用指南Doc Ref: 信息技术最佳实践 April 11, 2009 信息技术最佳实践 ORACLE核心应用技术 Fusion Middleware ODI应用指南 Author: 黄建华 Creation Date: March 7, 2009 Last Updated: February 8, 2010 Document Ref: Version: DRAFT 1A Approvals: Copy Number _____ Document Control Ch...

Oracle_Data_Integrator应用指南
Doc Ref: 信息技术最佳实践 April 11, 2009 信息技术最佳实践 ORACLE核心应用技术 Fusion Middleware ODI应用指南 Author: 黄建华 Creation Date: March 7, 2009 Last Updated: February 8, 2010 Document Ref: Version: DRAFT 1A Approvals: Copy Number _____ Document Control Change Record 4 Date Author Version Change Reference 19-May-07 Jianhua.Huang Draft 1a No Previous Document Reviewers Name Position Distribution Copy No. Name Location 1 Library Master Project Library 2 Project Manager 3 4 Note To Holders: If you receive an electronic copy of this document and print it out, please write your name on the equivalent of the cover page, for document control purposes. If you receive a hard copy of this document, please write your name on the front cover, for document control purposes. Contents iiDocument Control 1. ODI基础 2 1.1. 参考资料 2 1.2. ODI基础 2 1.3. ODI理解之1 6 1.4. ODI组件 6 1.5. ODI安装 8 1.6. 服务和菜单 10 1.7. 基本训练 10 2. 完整的简单例子(资料库、体系结构、项目、模型、接口、包、 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 ) 11 2.1. ODI理解之2 11 2.2. 环境准备 12 2.3. 创建资料库 13 2.4. 创建物理体系结构 17 2.5. 创建逻辑体系结构 20 2.6. 创建项目 20 2.7. 创建模型 21 2.8. 创建接口 23 2.9. 运行接口 25 2.10. 监控和查看会话状态 26 2.11. 创建并运行包 27 2.12. 创建并运行方案 28 2.13. ODI理解之3 28 3. 最常用特性和功能实例一(CDC、Agent、Schedule) 30 3.1. ODI理解之4 30 3.2. ODI理解之5(CDC) 30 3.3. O2O CDC(Simple) 32 3.4. O2O CDC(Consistent Set) 35 3.5. O2O CDC(Consistent Set Using Log Minner) 41 3.6. Agent 42 3.7. Schedule 43 4. 最常用特性和功能实例二(SQL Server、XML) 45 4.1. Oracle to SQL Server 45 4.2. SQL Server to Oracle 46 4.3. XML to Oracle 47 5. Sequence、Variable、User Function、Procedure 50 5.1. 作用域 50 5.2. Variable变量 50 5.3. Sequence序列 51 5.4. User Function自动义函数 53 5.5. Procedure过程 54 5.6. Procedure最简单的例子 55 5.7. 在Procedure中用序列、函数 56 6. Knowledge Module 58 6.1. 客户化KM最佳简单例子 58 7. Package及ODI工具箱 59 7.1. 概述 59 8. Web Service 61 8.1. 安装Public Web Services 61 8.2. 设置Data Services 61 9. FAQ&How To 62 9.1. 常见问题 62 9.2. 中英文名词 62 9.3. 对象加密 63 9.4. Agent负载均衡 63 9.5. Jython 63 9.6. Substitution Methods 64 9.7. 常用代码块 64 9.8. 命令行工具 64 9.9. 升级 65 9.10. 用户权限 65 9.11. 安装Metadata Navigator 67 9.12. 安装Lightweight Designer 68 10. 专题 70 10.1. DBLink 70 10.2. 对象冲突 70 11. Open and Closed Issues for this Deliverable 71 Open Issues 71 Closed Issues 71 1. ODI基础 1.1. 参考资料 官方中文资料:http://www.oracle.com/technology/global/cn/products/oracle-data-integrator/index.html 官方英文资料:安装盘下的index.htm,或者OTN。 比较有用的文档,收录在“Oracle Data Integrator应用指南.Source.rar”。 1.2. ODI基础 1.2.1. 简介 OD是Oracle在2006年10月收购Sunopsis公司后,整合Sunopsis Active Integration Platform而推出的一款数据集成工具,现在是Oracle Fusion Middleware的组件。 与OWB一样,ODI也是“ELT”而非“ETL”工具,Oracle不采用独立的引擎而是充分利用RDBMS的能力进行数据转换,减少网络流量、平衡和提高性能的同时降低投入总成本。 1.2.2. 数据集成面临的挑战 数据集成面临的挑战和Oracle的解决方案: 1.2.3. Oracle的解决方案有何优势 Oracle的解决方案有何优势: 1.2.4. ODI优势详解 1、 ELT与传统的ETL相比,性能和成本都有很大优势 2、 统一的平台,支持面向数据、面向事件、面向服务的集成,支持批量、Real Time、同步、异步集成,提供了最大的灵活性和便利性 3、 声明式设计,集成任务无需编程,学习曲线短,工作效率高 4、 预置的、可热插入的知识模块,提供了可重用的模块化管理,又确保了灵活性和可扩展性。ODI按阶段将KM分成6类。 ODI“开箱即用”的KM有100多个,比如: 中文版: 1.3. ODI理解之1 1.3.1. 关于ODI与OWB的疑惑 1、 OWB有DW建模功能,而ODI没有。 2、 ODI支持更多的数据源,如WS、SOAP、Jython、LDAP Directories。 3、 ODI支持复杂和实时的数据集成。 4、 ODI支持将错误数据隔离到专门的Error Table 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 中而无需编程实现。 5、 ODI支持CDC、SCD、Bulk Load。 总的来说,在DW领域,ODI是OWB的补充,在纯粹数据集成领域,则应该使用ODI。如果DW项目采用Oracle BIEE,那么最佳的搭档应该就是ODI了。 不过这两个工具今后Oracle有可能合并——ODI 10.1.3.4中已经有了原来属于OWB的Data Profiling and Quality。 1.3.2. 应用场景 任何数据驱动的集成,都可以使用ODI,应用场景包括但不限于: 1、 数据仓库:比如ETL阶段。ODI+BIEE是非常好的搭配。 2、 数据迁移:比如将某一源系统的数据迁移到新系统中。 3、 数据集成:比如两个系统间高效的点到点数据传递。 4、 数据复制:比如将一个Instance的数据复制另外一个Instance中。 5、 SOA应用 6、 MDM应用 1.4. ODI组件 1.4.1. Overview Oracle Data Integrator由以下基于Java的、可分开部署的组件构成: 1、 Repository,资料库,分Master Repository和Work Repositories,可安装在RDBMS中。 2、 Graphical Modules,包括4个设计工具,我们主要用这4个工具工作。 Designer用于定义Data Store、Interface(数据映射)、Package(类似Workflow)。 Operator用于管理和监控数据转换任务的执行情况,也可用于调试。 Topology Manager用于定义物理架构、逻辑架构。 Security Manager用于管理用户权限。 3、 Schedule Agent,属于Runtime组件,因为ODI采用E-LT架构,所以Schedule Agent只用来调度执行ELT任务,其数据转换引擎很少用到。 4、 Metadata Navigator,基于Servlet和JSP的访问资料库的Web接口。 5、 Lightweight Designer,用于通过浏览器查看和编辑Repository。 6、 Public Web Services,用于SOA环境,可通过WS来访问ODI。 后3个需要单独安装,需要Web服务器如Tomcat或OC4J。 此外,还集成了Oracle Data Profiling、Oracle Data Quality。 1.4.2. 技术架构 开发环境和生产环境: 中文版: 1.5. ODI安装 1.5.1. 软件下载 以10.1.3.4 Windows版本为例,地址: http://www.oracle.com/technology/global/cn/software/products/ias/htdocs/101310.html 1.5.2. 安装选择 1、 运行安装盘下的setup\Windows\setup.bat。 2、 产品选择第一个选项安装所有组件——ODI和Data Profiling、Data Quality 3、 类型选择第一个选项同时安装Server和Client 1.5.3. 安装设置 1、 Home和路径不要和其它的Oracle产品共用即可 2、 为Data Profiling和Quality的Server设置端口、管理员及其密码(设为madmin) 注:Windows下netstat –a命令可以查看端口占用情况。 3、 为Data Profiling和Quality的Client,设置欲连接的主机名和端口 因为Server是本机,所以设置为localhost;端口和上面步骤设置的一样。 4、 为Data Quality 设置ODBC适配器端口,保持默认 1.6. 服务和菜单 1.6.1. 服务 1、 Oracle Data Quality Inetd 2、 Oracle Data Quality Scheduler 1.6.2. 菜单 1、 Oracle Data Integrator 2、 Oracle Data Profiling and Quality 1.7. 基本训练 完成官方“Getting Started with an ETL Project”,可比较好的掌握基本概念、功能、集成流程。请勿跳过。 下面的章节将逐一展开,但基本都是记录精要内容,详细地说明请参阅开始菜单中的Documentation Library。 2. 完整的简单例子(资料库、体系结构、项目、模型、接口、包、方案) 2.1. ODI理解之2 2.1.1. 什么是资料库 ODI资料库可安装在任何支持ANSI ISO 89的数据库中。资料库分两种: 1、 Master Repository,保存企业所有IT资源的Topology,保存项目和数据模型的安全信息、版本信息,供ODI图形模块等使用。通常创建一个即可。Master Repository要尽可能独立存储,单独的Instance,或单独的Schema。 2、 Work Repository,保存项目和数据模型,供ODI图形模块等使用。可创建多个。一个Work Repository只能连接一个Master Repository。一个Schema只能存储一个Work Repository,不过Master Repository倒可与其安装在同一Schema。 Oracle实验室已验证通过的数据库有:Hypersonic SQL、IBM DB2 UDB、IBM DB2/400、Informix、Microsoft SQL Server、Oracle、Sybase AS Anywhere、Sybase AS Enterprise、Sybase ASIQ等。 2.1.2. 什么是Topology Topology Manager主要用来管理下面5类任务,并将信息存储在主资料库中,供所有模块共享使用。 1、 物理体系结构,定义各种技术及其数据服务器、物理架构、物理代理。 2、 逻辑体系结构,定义各种技术及其关联的逻辑架构、逻辑代理。 3、 上下文,用来连接物理架构和逻辑架构。 4、 语言,不同技术所能采用的语言特性。 5、 资料库,包含主资料库及其附属的工作资料库。 这里重点再看几个概念: 1、 技术和数据类型:ODI将不同的数据库(Oracle、DB2等)、文件格式(XML File等)、应用系统,用不同的“Technology”来表示。每种技术都有自己支持的“Data Type”。 2、 数据服务器:在ODI中,每个数据库服务器、JMS消息文件、每组文本文件必须先定义为“Data Server”。 3、 物理架构:在数据服务器下,每个用户、JMS Topic、文本文件必须定义为一个“Physical Schema”。 4、 物理代理:在物理体系结构需要定义“Physical Agent”,允许在远程机器上执行ODI任务。 5、 逻辑架构、逻辑代理是物理架构、物理代理的逻辑组合,方便用户管理和使用。 2.1.3. 什么是知识模块 Oracle Data Integrator之所以能适应不同的、多种多样的数据源,灵活有效的完成数据抽取/转换/载入的过程,均是基于其知识模型体系。 Knowledge Modules类似于程序中的插件,Oracle Data Integrator将数据整合的任务抽象出六个组成部分: 1、 反向 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 RKM,Reverse-engineering knowledge modules,用于从数据源读取表及其他对象。 2、 日记JKN,Journalizing knowledge modules,用于为单一或一组表/视图记录新建的和修改的数据。ODI支持部分数据源的Change Data Capture(CDC)功能,前提为ODI项目中启用该模块。 3、 加载LKM,Loading knowledge modules,用于从数据源抽取数据。 4、 检查CKM,Check knowledge modules,用于检测抽取出的源数据的合法性。 5、 集成IKM,Integration knowledge modules,用于将Staging Area中的数据转换至目标表,基于目标数据库产生对应的转换SQL。 6、 服务SKM,Service knowledge modules,提供将数据以Web Services的方式展现的功能。 2.2. 环境准备 2.2.1. ODI资料库 资料库采用Oracle Database 10G。请自行安装。假定有如下ORCL DB: ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = HUAJHUA)(PORT = 1522)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) ) 如果是9i之前,因为不支持char类型,需要将\lib\scripts\xml\TECH_Oracle.xml中的VARCHAR2(%L CHAR)替换为VARCHAR2(%L)。 2.2.2. 源系统 源系统采用Oracle Database 10G自带的scott.emp、scott.dept,简单起见也用ORCL。不过scott用户需要解锁,并且需要授权: alter user SCOTT account unlock; alter user scott identified by tiger; grant connect,resource to scott; grant create view to scott; 2.2.3. 目标系统 目标系统也是Oracle Database 10G,简单起见也用ORCL,用户名ODI_TRG。 create user ODITRG identified by ODITRG default tablespace users; grant connect,resource to ODITRG; grant create database link to ODITRG; grant create synonym to ODITRG; create table ODITRG.EMP ( EMPNO NUMBER(4) not null, ENAME VARCHAR2(10), JOB VARCHAR2(9), MGR NUMBER(4), HIREDATE DATE, SAL NUMBER(7,2), COMM NUMBER(7,2), DEPTNO NUMBER(2) ); create table ODITRG.DEPT ( DEPTNO NUMBER(2) not null, DNAME VARCHAR2(14), LOC VARCHAR2(13) ); alter table ODITRG.DEPT add constraint PK_DEPT primary key (DEPTNO); 2.3. 创建资料库 2.3.1. 创建用户 创建Master Repository用户: create user snpm identified by snpm default tablespace users; grant connect, resource to snpm; 创建Work Repository用户: create user snpw identified by snpw default tablespace users; grant connect, resource to snpw; 注:也允许这两个资料库用户在不同的服务器上。 2.3.2. 创建Master Repository 通过开始菜单Master Repository Creation启动,并按下图输入资料库信息(密码为snpm): 通过“测试连接”可测试配置是否正确。“确定”后开始创建数据库对象。 2.3.3. 连接Master Repository(创建存储连接“Repository”) 通过开始菜单Topology Manager启动,点击新建按钮“”,并按下图输入资料库信息(SUPERVISOR密码为SUNOPSIS): JDBC驱动程序:oracle.jdbc.driver.OracleDriver JDBC URL:jdbc:oracle:thin:@HUAJHUA:1522:ORCL 通过“测试”可测试配置是否正确,如果密码过于简单或与用户名相同,会报“密码无效”错误。“确定”后会到登录界面: 2.3.4. 创建Work Repository N:Topology Manager\资料库\工作资料库\右键\插入工作资料库 在定义Tab页,按照下图输入连接名称、技术、用户和密码: 在JDBC Tab页,输入如下信息: JDBC驱动程序:oracle.jdbc.driver.OracleDriver JDBC URL:jdbc:oracle:thin:@HUAJHUA:1522:ORCL 通过“测试”测试配置是否正确。 “确定”后再随后的界面,输入如下信息: “确定”后完成Work Repository创建。 2.3.5. 连接Work Repository(创建工作存储连接“Repository”) 通过开始菜单Designer启动,点击新建按钮“”,并按下图输入资料库信息(SUPERVISOR密码为SUNOPSIS): JDBC驱动程序:oracle.jdbc.driver.OracleDriver JDBC URL:jdbc:oracle:thin:@HUAJHUA:1522:ORCL 通过“测试”可测试配置是否正确,如果密码过于简单或与用户名相同,会报“密码无效”错误。“确定”后会到登录界面: “确定”后就进入Designer模块了。 2.4. 创建物理体系结构 2.4.1. 创建数据服务器ORCL_SCOTT N:Topology Manager\物理体系结构\技术\Oracle\右键\插入数据服务器 1、 定义数据服务器名称、DBlink、连接用户名和密码: 注1:在“Oracle to Oracle”模式时,“实例/DBLINK”将用于ODI自动创建两个系统间的DBLINK,为了使DBLINK创建成功,需要在目标数据库端配置TNSNAME(=这里的“实例/DBLINK”);另外如果来源和目标是同一个数据库,那么DBLINK就是LOOPBACK的,这里的“实例/DBLINK”名字就不能等于SID。故这里故意加了“.LOOPBACK”。 注2:这个定义界面的用户名和密码,用于统一连接这个数据服务器,通常它的权限比较大,能够访问很多其他用户的数据。而下面的“物理架构”里面选择的用户名,不是用来连接的,只是一个具体的用户。ODI要求每个用户单独设置一个“物理架构”。 2、 定义JDBC 驱动程序 oracle.jdbc.driver.OracleDriver URL jdbc:oracle:thin:@HUAJHUA:1522:ORCL 2.4.2. 创建物理架构ORCL_SCOTT.SCOTT N:上面步骤确定后,会自动弹出创建物理架构的界面: 这里需要选择两个架构(Schema),第一个是Data Schema。第二个是Work Schema,什么意思呢?ELT中的T,需要创建一些工作表等临时对象如错误数据表、视图等,这些对象需要存储在工作Schema下。简单起见这里都选择SCOTT。 其他参数默认即可。确定后报没有选择上下文的警告,先忽略之。 2.4.3. 创建数据服务器ORCL_ODITRG 以同样步骤,创建数据服务器ORCL_ODITRG、物理架构ORCL_ODITRG. ODITRG 结果如下: 驱动程序 oracle.jdbc.driver.OracleDriver URL jdbc:oracle:thin:@HUAJHUA:1522:ORCL 2.5. 创建逻辑体系结构 2.5.1. 创建逻辑架构ORCL_SCOTT N:Topology Manager\逻辑体系结构\技术\Oracle\右键\插入逻辑架构 按下图录入命名和上下文,确定后在物理架构那里也会自动添加上下文。 2.5.2. 创建逻辑架构ORCL_ODITRG 步骤同上。结果如下: 2.6. 创建项目 2.6.1. 创建项目ORCL_DEMO N:Designer\<项目名>\右键\插入项目,输入名称ORCL_DEMO 2.6.2. 导入知识模块 N:Designer\<项目名>\ORCL_DEMO\知识模块\RKM\右键\导入知识模块 文件导入目录选择“C:\OraHome_1\oracledi\impexp” 可以逐个选择需要的知识模块,为简单起见,全选后确定。不过全部导入比较耗时和占空间,看下面的滚动条和右下脚的空间占用就知道了。 2.7. 创建模型 2.7.1. 创建模型ORCL_SCOTT N:Designer\模型\右键\插入模型 1、 按下图内容输入名称、技术、逻辑架构 2、 在反向标签页,上下文选择“Global”,然后点击“反向”按钮 这样,就把Scott下的表,全部反向工程到我们的模型中——BONUS、DEPT、EMP、SALGRADE: 2.7.2. 创建模型ORCL_ODITRG 以同样的逻辑创建ORCL_ODITRG。不过要添加个约束,以便后面的接口能够使用默认的CKM。 N:Designer\模型\ORCL_ODITRG\EMP\约束\右键\插入键 名称:PK_EMPNO_1 键或索引类型:主键 列:EMPNO 2.8. 创建接口 2.8.1. 创建接口POP.EMP N:Designer\<项目名>\ORCL_DEMO\<文件夹名>\接口\右键\插入接口 1、 在“定义”标签页,输入名称:POP.EMP 2、 在“关系图”标签页,将ORCL_TRG模型下的EMP拖到“目标数据存储”这个区域;将ORCL_SCOTT模型下的EMP拖到“源”这个区域,并让Designer自动映射,结果如下: 3、 切换到“流”标签页 选中SS_0,LKM已默认采用LKM Oracle to Oracle (DBLINK),我们需要把下面的AUTO_CREATE_DB_LINK改为是。注,如果我们已经在数据库中手工创建了DBLINK,并且名字和定义“数据服务器”时定义的一样,这里就保持默认值否。 选中“目标+临时区域”,可以看到下面已经默认使用了IKM Oracle Incremental Update 4、 切换到“控制”标签页 把默认的CKM改为CKM Oracle。 确定后退出“接口”定义界面。 2.9. 运行接口 2.9.1. 运行接口 N:Designer\<项目名>\ORCL_DEMO\<文件夹名>\接口\POP.EMP\右键\执行 我们不使用代理,保持上面的选项点击“确定”,将会启动ELT会话。 2.9.2. 查看数据 N:Designer\模型\ORCL_ODITRG\EMP\右键\数据 如果一切顺利,就可以看到上面的结果,数据已经从ORCL_SCOTT传到ORCL_TRG了。 2.10. 监控和查看会话状态 2.10.1. 启动Operator N:Operator,选择Designer一样的登录连接“Respository”进行登录 上面是刚才正常结束的接口POP.EMP执行会话。 2.10.2. 问题诊断 如果出现问题,Operator也提供了比较好的调式方法: 1、 点击出错的结点,在“说明”标签页,可以看到要执行的代码 2、 在“执行”标签页,可以看到执行的结果和具体的错误信息 3、 对于出错的会话,可以重新执行,并且,可以先修改“说明”标签页的内容,加入调式信息 2.11. 创建并运行包 2.11.1. 创建包LOAD_SCOTT N:Designer\<项目名>\ORCL_DEMO\<文件夹名>\包\右键\插入包 名称:LOAD_SCOTT 切换到“关系图”标签页,把“接口”下的“POP.EMP”拖进来: 结果如上图,当右键POP.EMP,可以看到,“第一步”以自动选中了。 2.11.2. 运行包LOAD_SCOTT N:Designer\<项目名>\ORCL_DEMO\<文件夹名>\包\LOAD_SCOTT\右键\运行 切换到Operator,可以看到会话正常完成: 2.12. 创建并运行方案 2.12.1. 生成方案LOAD_SCOTT 001 N:Designer\<项目名>\ORCL_DEMO\<文件夹名>\包\LOAD_SCOTT\右键\生成方案 2.12.2. 运行方案LOAD_SCOTT 001 N:Designer\<项目名>\ORCL_DEMO\<文件夹名>\包\LOAD_SCOTT\方案\ LOAD_SCOTT\版本001\右键\执行 在方案这里,执行完可以直接查看运行状况,如上图,不需要切换到Operator 2.13. ODI理解之3 基于以上例子,做个小结。 2.13.1. 设计过程 1、 [Master Repository Creation]创建主资料库,一般1个即可 2、 [Topology Manager]创建工作资料库,可以创建多个,也可以仅创建1个 3、 [Topology Manager]创建数据服务器,每个Instance或者应用创建一个,底下按照用户创建不同的物理架构 4、 [Topology Manager]创建逻辑架构,通常与物理架构一一对应,也可以一个逻辑架构对应多个物理架构 5、 [Designer]创建项目,导入知识模块,或自己开发知识模块 6、 [Designer]创建模型,每个模型对应到逻辑架构 7、 [Designer]创建接口,修改必要的知识模块和选项 8、 [Designer]运行接口 9、 [Operator]查看和监控运行结果,包括出错脚本和信息 10、 进一步可创建包、方案,并运行 2.13.2. 几个关系 1、 接口、包、方案 简单的话,如我们上面的例子,接口、包、方案的内容和运行结果一样。实际上,接口是ELT基本单元,包类似工作流,用于将接口串接起来,方案是对象的发布版本,可理解为预编译的。 2、 6个KM RKM用于在模型中进行反向工程,把数据库的表定义、约束等导入到ODI中。 SKM用于将接口等发布为Web Service。 运行期ODI按照交替执行其他KM,JKM、LKM、IKM、CKM。 2.13.3. 方案 方案是对象的发布版本,可理解为预编译的。 Variable变量、Procedure过程、Interface接口、Package包都可以发布为方案,方案。方案可以在Designer中运行,也可以通过Operator、操作系统命令、Web Service、HTTP URL执行。 此外,方案可以在Operator中导入、导出,可用于发布到正式环境。 3. 最常用特性和功能实例一(CDC、Agent、Schedule) 上面的例子虽然极其简单,但演示了整个过程,至少可以初学者迈出第一步;接下来我们看看一些其他重要的功能,至于基本开发过程,就不再详细说明了。 3.1. ODI理解之4 3.1.1. 丰富的数据约束 与数据库中的约束一样,是为了保证数据的一致性。实际上这些约束可以直接在RDBMS中创建。而ODI中的约束则是保存在资料库中的,对 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf DB无影响。 ODI支持如下约束类型:关键字(主键、普通索引、唯一性索引)、引用、约束条件。并且,也是创建在“表”上的。 约束的控制有两种:对已有的数据进行“Static Control”静态检查,对传递的数据进行“Flow Control”动态检查。 在源系统符合约束条件的数据,未必符合目标系统的约束——目标系统可能要求更高,而源系统缺少约束或者没必要约束。 那么对于违反约束的“错误”数据怎么办,ODI怎么处理呢?ODI将其隔离在Error表中。每个目标表都有一个错误表(表名为E$_<目标表>),可通过“Designer/模型/<目标表>/控制/错误”来查看和编辑错误数据。这就是ODI的“Firewall”——垃圾数据不进入目标系统。 3.1.2. 灵活的执行环境 ODI强大的功能,部分来自于其ELT中T的执行环境比较灵活,可以是: 源系统Source 、目标系统Target、临时区域Staging Area。 在哪里执行效率高就在哪,充分发挥各个系统的性能优势。 如果某个环境不支持所要求的“T”,Interface的Diagram定义界面的Error按钮就会亮起来,点击可查看具体错误。 3.2. ODI理解之5(CDC) 3.2.1. CDC概述 已更改数据捕获的英文全称是Changed Data Capture(CDC)。 CDC用于记录源数据的变动情况到日记表,这样在传递数据时,不用考虑未变动的数据,大大提高ELT的效率。类似Oracle的快速刷新型MV。 ODI CDC能够把源Insert、Update、Delete同步到目标。 CDC分两种类型: 1、 简单(Simple):通常用于单个Datastore(通常就是代表一个表)。 2、 一致性集(Consistent Set):当一组Datastore采用CDC方式时,为保证数据的前后顺序和完整性制约关系,我们需要告诉ODI按照一定的顺序来抓取,ODI是通过设置Consistency Window来实现的。这样一组Datastore就叫做Consistent Set。此外,ODI建议,如果Subsriber很多,用Consistent Set有助于提高性能。 注:对于一个Datastore来说,Simple和Consistent Set不能同时存在。 3.2.2. CDC工作原理 CDC的工作原理:通过在源表自动创建触发器(T$开头)或者通过源数据库的LOG挖掘,得到净DML变更数据的主键,放到ODI创建的J$日记表中,并通过JV$日记视图提供完整的变更数据,供ELT直接使用。ODI把这个叫做“Journalizing Models”。 Journalizing Models由以下几个部分组成: 1、 Journals日记:用来记录源数据DML变更,其实就是一些J$开头的表 2、 Capture捕获:通过在表上自动创建的触发器或Log挖掘相关的Package,获得变更数据,放入Journals中 3、 Subscribers订阅者:CDC采取Publish/Subscribe模式,Capture到的Journal相当于Publish,需要有Subscriber来订阅和消费。对于ODI来说,如果没有订阅者,那么就不执行Capture;如果所有的Subscriber都执行了消费,Journal的数据就不在保留。 4、 Journalizing Views日记视图:ODI提供了一组jv$视图,用于IKM执行时获取变化的数据,当然了我们也可通过SQL直接察看变化的数据。 3.2.3. Journalizing Infrastructure CDC将根据物理Schema的定义,分别在Data Schema和Work Schema创建如下对象: 1、 T$触发器,创建在每个Data Schema的表下 2、 SNP_CDC_表,这个是CDC的通用表,创建在标志为Default的的物理Schema的Work Schema下,所以同一Data Server,只需创建一次,因为只有1个Default的的物理Schema。 3、 J$表、JV$视图,创建在每个Work Schema下。 3.2.4. CDC小钟图标 1、 黄色:Journalizing已启用,但Infrastructure还没创建好,通常是刚配完,未启动 2、 绿色:Journalizing正常,一切就绪。 3、 灰色:Journalizing已失效,通常是Datastore被移出CDC,但Journalizing没停 3.3. O2O CDC(Simple) 以Dept、EMP为例。 3.3.1. 完成普通设置步骤 参照前面Oracle to Oracle,完成模型创建,比如DEPT、EMP。 3.3.2. 模型日记记录设置 N:Designer\模型\<源模型名,如ORCL_SCOTT > \双击\日记记录 ODI已经默认选择模式为“简单”、KM为“JKM Oracle Simple.ORCL_DEMO”。 3.3.3. 添加到CDC N:Designer\模型\ORCL_SCOTT\ \右键\已更改数据捕获\添加到CDC 添加到CDC后可以看到有个变化:模型ORCL_SCOTT的属性“已进行日记记录的表” 另外,Datastore的图标上,左上角多了个黄色的小钟:。 3.3.4. 增加订阅 N:Designer\模型\ORCL_SCOTT\DEPT\右键\已更改数据捕获\订户\订阅 增加一个名字叫“DEPT”的订阅者。名字可任意,后面设置接口的Filter时要用到。 数据存储DEPT的属性“日记记录”的变化: 3.3.5. 启动日记 N:Designer\模型\ORCL_SCOTT\DEPT\右键\已更改数据捕获\启动日记 注:增加订阅、增加订阅这两个步骤,也可以在Package中设置,这样方便移植。操作很简单,把Datastore或整个Model拖到Package的Diagram中,Type选择Journalizing Datastore或Model。 注:If a datastore with journals running is removed from the CDC in simple mode, the journals should be stopped for this individual datastore。 3.3.6. 测试 1、 在PL/SQL Developer中执行下列语句往源系统插入数据 INSERT INTO scott.dept SELECT MAX(deptno) + 1, 'TEST', 'TEST' FROM scott.dept; 2、 N:<源Data Store如ORCL_SCOTT下的DEPT>\右键\已更改数据捕获\日记数据,可以看到,日记中有一条新增记录: 3.3.7. 创建普通接口 注:加了CDC功能的Data Store对普通的接口没有任何影响,接口跑完,该过去的数据都会过去,已更改数据捕获\日记数据中的数据依然存在。 参照前面Oracle to Oracle,接口名为POP.DEPT_O2O_SIMPLE,完成接口创建、同步数据。 1、 N:<目标Data Store如ORCL_ODITRG下的DEPT>\右键\数据,可以看到所有数据 2、 N:<源Data Store如ORCL_SCOTT下的DEPT>\右键\已更改数据捕获\日记数据,记录还在! 3.3.8. 接口启用CDC N:Designer\<项目名>\<文件夹名>\接口\POP.DEPT_O2O_SIMPLE\双击\关系图 选中源“1 – DEPT (DEPT)”,勾选下面的“仅已进行日记记录的数据”: 选中漏斗,修改下面的筛选条件为JRN_SUBSCRIBER=’DEPT’: 3.3.9. 运行接口 N:Designer\<项目名>\<文件夹名>\接口\POP.DEPT_O2O_SIMPLE\右键\运行 3.3.10. 数据验证 1、 在PL/SQL Developer中,再执行下列语句往源系统插入数据 INSERT INTO scott.dept SELECT MAX(deptno) + 1, 'TEST', 'TEST' FROM scott.dept; 2、 N:<源Data Store如ORCL_SCOTT下的DEPT>\右键\已更改数据捕获\日记数据,可以看到,日记中有一条新增记录。 3、 执行启用Simple CDC的接口,如POP.DEPT_O2O_SIMPLE 4、 N:<目标Data Store如ORCL_ODITRG下的DEPT>\右键\数据,可以看到新增数据 5、 N:<源Data Store如ORCL_SCOTT下的DEPT>\右键\已更改数据捕获\日记数据,记录不见了 问题:如果有两个Interface,筛选条件为JRN_SUBSCRIBER=’DEPT’,那么第一个Insterface跑完,第二个岂不是没数据可抓了? 结论:如果有多个Interface要用到同一个CDC,那么就要定义不同的订阅。 3.3.11. 配置EMP参 照上面步骤,配置EMP的SIMPLE CDC,接口名为POP.EMP_O2O_SIMPLE。 造数据可用如下脚本: INSERT INTO scott.emp SELECT MAX(empno) + 1, MAX(ename), MAX(job), MAX(mgr), MAX(hiredate), MAX(sal), MAX(comm), MAX(deptno) FROM scott.emp; 3.4. O2O CDC(Consistent Set) 以Dept、EMP为例。 3.4.1. 环境准备 为保留之前的练习,也为了避免冲突,建议重新做。创建来源数据库用户Scott2,把Scott下的表和数据都搬过来 create user scott2 identified by tiger; grant connect,resource to scott2; grant create view to scott2; -- Create table create table scott2.DEPT ( DEPTNO NUMBER(2) not null, DNAME VARCHAR2(14), LOC VARCHAR2(13) ); -- Create/Recreate primary, unique and foreign key constraints alter table scott2.DEPT add constraint PK_DEPT primary key (DEPTNO) using index; -- Create table create table scott2.EMP ( EMPNO NUMBER(4) not null, ENAME VARCHAR2(10), JOB VARCHAR2(9), MGR NUMBER(4), HIREDATE DATE, SAL NUMBER(7,2), COMM NUMBER(7,2), DEPTNO NUMBER(2) ); -- Create/Recreate primary, unique and foreign key constraints alter table scott2.EMP add constraint PK_EMP primary key (EMPNO) using index; alter table scott2.EMP add constraint FK_DEPTNO foreign key (DEPTNO) references scott2.DEPT (DEPTNO); INSERT INTO scott2.dept SELECT * FROM scott.dept; INSERT INTO scott2.emp 3.4.2. SELECT * FROM scott.emp; 3.4.3. 完成普通设置步骤 参照前面Oracle to Oracle,完成模型创建,比如DEPT、EMP。 3.4.4. 模型日记记录设置 N:Designer\模型\<源模型名,如ORCL_SCOTT2> \双击\日记记录 启用Consistent Set,并选择JKM Oracle Consistent.ORCL_DEMO: 3.4.5. 添加到CDC N:Designer\模型\ORCL_SCOTT2\ \右键\已更改数据捕获\添加到CDC 把Dept、EMP都添加到CDC,并排列顺序: 另外,Datastore的图标上,左上角多了个黄色的小钟:。 这个顺序只对Consistent Set的Journalizing有用,当然了,Consistent Set的Journalizing也必须在这里设置顺序,并且如果调整了顺序,需要重启下Journal。 问题:重启Journal,会不会导致数据丢失呢? 3.4.6. 增加订阅 N:Designer\模型\ORCL_SCOTT2\右键\已更改数据捕获\订户\订阅 增加一个名字叫“DEPT-EMP”的订阅者。 3.4.7. 启动日记 N:Designer\模型\ORCL_SCOTT2\右键\已更改数据捕获\启动日记 注:增加订阅、增加订阅这两个步骤,也可以在Package中设置,这样方便移植。操作很简单,把Datastore或整个Model拖到Package的Diagram中,Type选择Journalizing Datastore或Model。 也可以针对单个Datastore启动日记。 注:If a datastore is removed from CDC in Consistent Set mode, the journals should be restarted for the model (Journalizing information is preserved for the other datastores). 问题:重启Journal,会不会导致数据丢失呢? 3.4.8. 测试 1、 在PL/SQL Developer中执行下列语句往源系统插入数据 INSERT INTO scott2.dept SELECT MAX(deptno) + 1, 'TEST', 'TEST' FROM scott2.dept; INSERT INTO scott2.emp SELECT MAX(empno) + 1, MAX(ename), MAX(job), MAX(mgr), MAX(hiredate), MAX(sal), MAX(comm), MAX(deptno) FROM scott2.emp; 2、 N:<源Data Store如ORCL_SCOTT2下的DEPT、EMP>\右键\已更改数据捕获\日记数据,可以看到,日记中有一条新增记录 3.4.9. 创建普通接口 注:加了CDC功能的Data Store对普通的接口没有任何影响,接口跑完,该过去的数据都会过去,已更改数据捕获\日记数据中的数据依然存在。 参照前面Oracle to Oracle,接口名为POP.DEPT_O2O_CS,完成接口创建、同步数据。 1、 N:<目标Data Store如ORCL_ODITRG下的DEPT>\右键\数据,可以看到所有数据 2、 N:<源Data Store如ORCL_SCOTT2下的DEPT>\右键\已更改数据捕获\日记数据,记录还在! 3.4.10. 接口启用CDC N:Designer\<项目名>\<文件夹名>\接口\POP.DEPT_O2O_CS\双击\关系图 操
本文档为【Oracle_Data_Integrator应用指南】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_168116
暂无简介~
格式:doc
大小:3MB
软件:Word
页数:74
分类:互联网
上传时间:2013-06-20
浏览量:50