




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、工作总结ODI开发作 者:付 朋项 目: 青啤PTS/MDM项目技术负责人: 荣耀/何莺日 期: SAVEDATE MMMM d, yyyy January 16, 2012目录 TOC o 2-3 工作总结 PAGEREF _Toc314234935 h i目录 PAGEREF _Toc314234936 h ii概述 PAGEREF _Toc314234937 h 3工作总结- -ODI开发 PAGEREF _Toc314234938 h 4ODI开发工作小结 PAGEREF _Toc314234939 h 4ODI环境搭建 PAGEREF _Toc314234940 h 5ODI架构搭建
2、 PAGEREF _Toc314234941 h 12ODI 代理创建 PAGEREF _Toc314234942 h 14ODI基础开发 PAGEREF _Toc314234943 h 18CDC接口开发 PAGEREF _Toc314234944 h 36KM(知识模块)基础 PAGEREF _Toc314234945 h 46附录 PAGEREF _Toc314234946 h 61附录I :表空间创建脚本 PAGEREF _Toc314234947 h 61附录II:触发器脚本 PAGEREF _Toc314234948 h 61附录III:JKM客户化 PAGEREF _Toc314
3、234949 h 62更改历史 PAGEREF _Toc314234950 h 65概述工作总结要紧是描述我在青岛啤酒MDM项目和PTS项目4个月以来的学到技术和工作感悟。要紧是对ODI开发进行一次总结,描述对ODI技术开发的认识和了解。更多ODI开发技术可参阅Oracle Data Integrator应用指南文档。技术 目前接触的大部分差不多上与数据相关的开发,可能在技术方面学习和理解比较片面。在MDM项目学到的技术:接口开发、ODI基础开发、FORM个性化、FORM基础开发、HTML报表开发等;在PTS项目学到的技术:ODI环境搭建及CDC开发、RTF报表开发等。业务对业务的了解要紧方式
4、是和业务顾问进行交流,在EBS界面上跑业务流程等。1MDM项目业务认识:集中对数据进行治理,数据标准化,流程固化。2PTS项目业务认识:通过条码达到产品的追溯。工作总结- -ODI开发要紧是对在项目上学到的技术进行总结。注:如有错误或疑问,请大伙儿欢迎提出和指正。ODI开发工作小结简单叙述在项目做过的ODI开发及相关信息ODI开发业务背景要紧涉及ODI开发的项目:青啤MDM项目和PTS项目。青啤MDM项目:青啤MDM系统大部分基础数据(如物料、物料类不等)差不多上从ERP系统猎取的(初始化数据),然后在MDM系统中维护这些数据,并实时同步到ERP系统中。这些初始化数据和同步数据的迁徙媒介差不多
5、上ODI。青啤PTS项目:PTS项目数据分为基础数据和业务数据,都采纳ODI使这些数据流转在ERP、Data Center、总PTS、分PTS、CDCPTS等系统间。ODI组件ODI要紧是以下组件组成的:资料库(Repository):Master Repository、Work Repository。 设计工具,要紧用以下设计工具:Topology Manager :描述物理和逻辑构架,在主资料库中标示服务器、Schema、代理。Security Manager :治理ODI用户及权限,能够给配置文件及用户访问对象的权限。Designer:是ODI开发的要紧组件,创建和执行DataStore
6、s、Interfaces、Procedure、Packages,客户化KM等操作Operator:治理和监控数据转换任务的执行情况,可用于调试。打算代理(Schedule Agent):属于Runtime组件,因为ODI采纳E-LT架构,因此Schedule Agent只用来调度执行ELT任务,其数据转换引擎专门少用到。另外还有三个需要单独安装的组件:Metadata Navigator、Lightweight Designer、Public Web Services。ODI接口ODI接口要紧分为两类:静态接口和动态接口。静态接口用于数据初始化,只在接口运行初期执行一次。动态接口用于数据维护,
7、是实时性的。在MDM项目中,采纳的是一般动态接口:基于静态接口,指定数据筛选字段(常用字段last_update_date)和筛选规则(last_update_datesysdate - 1)。在PTS项目中,采纳的是CDC动态接口:基于静态接口,添加订阅者,生成日志。KM(知识模块)ODI的知识模块要紧分为几个大类(RKM,CKM,LKM,IKM,SKM),其中最重要的是LKM(load KM)和IKM(Integration KM)RKM: RKM:完成从源系统和目标系统的数据结构的反向工程来形成数据模型的功能。CKM:完成数据质量检查。 JKM:日志记录知识模块,记录单个表或视图等中的新
8、数据和更新的数据。 LKM:完成从源数据库数据加载到临时表。 IKM:完成从临时表的数据加载到目标表。 SKM:完成ODI和WEB服务接口的功能。 SKM(Service KM):Web服务知识模块,能够使用该知识模块来生成Web服务调用。ODI环境搭建ODI开发环境进行ODI开发的基础。创建ODI用户ODI用户确实是指数据库为ODI开发而创建的用户,确实是讲ODI通过此用户连接数据库,又是ODI的Work Schema。ODI用户权限较大,能否访问其他用户的数据。假如某个用户的数据需要进行ODI开发,那么这些数据的增删改查操作权限都得赋给ODI用户。而ODI开发会涉及到源系统和目标系统,那么
9、需要分不为这些系统创建ODI用户。创建脚本如下: 创建ODI用户(Work Schema) 源系统 ERPcreate user soau identified by soau default tablespace soau_data;grant connect,resource to soau; grant create database link to soau; grant create synonym to soau;- 目标系统 MDMcreate user soau identified by soau default tablespace soau_data;grant conn
10、ect,resource to soau; grant create database link to soau; grant create synonym to soau;讲明:ODI用户统一命名,方便,易于治理;源目标和目标系统角色可交换(源系统作为目标系统,目标系统作为源系统),然而需要保证同一数据模型必须单向ODI开发;源/目标系统建立物料架构时,如下两处地点需要设置为ODI用户:创建资料库ODI在ERP系统搭建环境,其TNS信息为:BEST=(DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1522) (CONNECT_DATA= (
11、SID=BEST) ) )资料库概念:摘自Oracle Data Integrator应用指南Master Repository,保存企业所有IT资源的Topology,保存项目和数据模型的安全信息、版本信息,供ODI图形模块等使用。通常创建一个即可。Master Repository要尽可能独立存储,单独的Instance,或单独的Schema。Work Repository,保存项目和数据模型,供ODI图形模块等使用。可创建多个。一个Work Repository只能连接一个Master Repository。一个Schema只能存储一个Work Repository,只是Master R
12、epository倒可与其安装在同一Schema。讲明:在哪个服务器上创建资料库是没有明确要求,可按项目需求来,本案例是在ERP服务器创建资料库(缘故是MDM数据库没有创建表空间的权限)。创建主资料库(Master Repository) ERP创建Master Repository用户create user soam identified by soam default tablespace users; grant connect, resource to soam;创建Master Repository通过开始菜单Master Repository Creation启动(或ODI安装目录
13、下的ODIoracledibinrepcreate.bat),并按下图输入资料库信息:JDBC:Driver oracle.jdbc.driver.OracleDriver URL jdbc:oracle:thin:1522:BEST用户/密码:soam/soam注:蓝颜色选中区域为ERP服务器TNS信息。点击按钮,假如出现连接成功信息,点击OK。连接Master Repository(创建主资料库连接“soamFP”)通过开始菜单Topology Manager启动(或ODI安装目录下的ODIoracledibintopology.bat),点击新建按钮,并按下图输入资料库信息:用户/密码为
14、SUPERVISOR/SUNOPSIS点击Test按钮,假如连接成功,点击OK,如此连接主资料库创建成功了。讲明:用户/密码什么缘故输入SUPERVISOR/SUNOPSIS ? 用户/密码事实上是Security Manager Users,确实是讲安全治理用户才有权限连接主资料库,这类用户作为Security Repository Connections Users。ODI提供了一个默认的安全治理用户SUPERVISOR/SUNOPSIS,假如你不明白有哪些用户能够使用,那么可选择默认的SUPERVISOR/SUNOPSIS。疑问:假如ODI首次搭建开发环境,是不是用户/密码必须使用默认的
15、SUPERVISOR/SUNOPSIS?假如想自己创建用户/密码,然后使用,该如何操作?前提是ODI差不多搭建了开发环境,至少有个Security Repository Connections用户。登录差不多有的Designer,点击菜单中的(或ODI安装目录下的ODIoracledibinsecurity.bat)进入如下界面:通过添加自己需求的用户信息,就能够使用了。更多用户安全治理设置可参阅: HYPERLINK /118954775.html /118954775.html 创建工作资料库(Work Repository) ERP创建Work Repository用户create us
16、er soaw identified by soaw default tablespace users; grant connect, resource to soaw;创建Work Repository创建存储连接“soamFP”成功后,界面显示如下点击OK按钮进入Security Manager窗口,点击菜单按钮,进入Topology Manager窗口,并切换至Repositories TAB页, 点击Insert Work Respository,就进入了创建工作资料库界面了,分不在Definition和JDBC TAB页输入如下信息,点击按钮Test,测试成功后,点击OK,弹出窗口,
17、输入信息如下,点击OK,Work Repository创建完成了。连接Work Repository(创建工作资料库连接“soawFP”)开始菜单Designer启动(或ODI安装目录下的ODIoracledibindesigner. bat),点击新建按钮,并按下图输入资料库信息:用户/密码为SUPERVISOR/SUNOPSIS点击Test按钮,测试连接成功后,点击OK到登录界面,选择创建好的工作资料库连接“soamFP”,点击OK进入Designer模块。ODI架构搭建ODI中所使用的数据模型基础是逻辑架构,而逻辑架构对应了物理架构。物理架构属于数据服务器。创建数据服务器Topology
18、 ManagerPhysical ArchitectureTechnologiesOracle右键Insert Data ServerConnection那一栏中的User/Password,输入的是ODI用户/密码:soau/soau。Instance/dblink(Data Server) 特不讲明 - Oracle to Oracle 模式Instance/dblink作用简单的讲Instance/dblink事实上确实是两个数据库(源数据库和目标数据库)间建立DBLINK的媒介。当执行ODI接口时,ODI会依照源数据服务器的Instance/dblink信息匹配目标服务器tnsname
19、s.ora文件中TNSNAME,假如匹配成功,ODI会自动依照TNS信息与源数据库之间创建DBLINK;假如匹配不成功,表示没有明确DBLINK建立对象,DBLINK创建后无法正常连接,导致ODI接口执行会抛出错误信息:TNS:could not resolve the connect identifier specified因此输入Instance/dblink(Data Server)信息前,请确保在目标服务器tnsnames.ora文件中差不多添加源服务器TNS信息。Instance/dblink输入要求在目标数据库的$ORACLE_HOMEnetworkadmin文件夹下,tnsnam
20、es.ora文件中必须有源数据库的一个TNS,而Instance/dblink(Data Server)必须填对应的TNSNAME。例如案例创建的是ERP系统的数据服务器,那么Instance/dblink(Data Server)必须输入MDM系统TNS文件中对应ERP系统的TNSNAME:点击Test按钮,测试成功后,点击OK,创建ERP系统的数据服务器完成了。用相同的方式创建MDM系统的数据服务器。创建物理架构上面步骤确定后,会自动弹出创建物理架构的界面:讲明:Schema 和 Work Schema的区不Schema(架构)是指数据源所在,也确实是我们需要抽取的数据源或者是要把数据放到
21、里面去的数据源;Work Schema(工作架构) 是指ODI开发存放临时表的地点。一般会指定某个Schema为Work Schema,比如案例中的SOAU,确实是讲所有系统的ODI开发差不多上规定使用SOAU Schema。而Schema可按照需求来选择,比如ERP系统有多维数据库开发(即多个客户化用户)比如CUX、BSM、HADF等,都需要进行ODI开发,那么能够建立相对应的物理架构:ERP System.CUX、ERP System.BSM、ERP System.HADF等。本案例中我们创建的是物理架构是ERP System.CUX。点击OK按钮,会出现一个警告(提示需要指定上行文,因为
22、逻辑架构还没创建,能够先忽略),点击OK物理架构的创建就完成了。用相同的方式创建MDM系统的物理架构。创建逻辑架构Topology ManagerLogical ArchitectureTechnologiesOracle右键Insert Logic Schema为了使物理架构和逻辑架构的对应关系更直观,逻辑架构命名和物理架构一致:ERP System.CUX, 点击OK,即可完成逻辑架构的创建。同时物理架构Context TAB页也会自动添加上下文。用相同的方式创建MDM系统的逻辑架构。ODI 代理创建启动代理(Agent)开始菜单Agent(或ODI安装目录下的ODIoracledibin
23、agent.bat) 启动代理创建物理代理Topology ManagerPhysical ArchitectureAgents右键Insert Agent将本机设置为ODI代理。如图所示,Name:FP Agent Host:Port:20910(默认) Maximum number of sessions supported:100假如代理有效,点击Test按钮,显示测试成功界面。测试成功,点击OK。创建逻辑代理Topology ManagerLogical ArchitectureAgents右键Insert Logical Agent输入如下信息:Name:FP Agent Physi
24、cal Agents选择FP Agent点击OK,逻辑代理创建完成。测试代理代理创建好了,需要进行测试。择一个开发好的接口或过程,点击执行,弹出如下窗口Agent选择需要测试的代理:FP Agent。点击OK,执行接口,并切换到Operator查看执行结果发觉接口执行成功了,表明代理创建成功。启动打算代理(Scheduler Agent)编辑配置文件在Win CMD下使用Agent编译两个用户的密码:目录是ODI安装目录D:ODIODIoracledibinodiparams.bat右键编辑,注意修改以下内容:set ODI_SECU_DRIVER=oracle.jdbc.driver.Ora
25、cleDriverset ODI_SECU_URL=jdbc:oracle:thin:1522:BESTset ODI_SECU_USER=soamset ODI_SECU_ENCODED_PASS=eSyXEmZlSzy2VL9mAxu8yset ODI_SECU_WORK_REP=SOAMFPset ODI_USER=SUPERVISORset ODI_ENCODED_PASS=fDyX.TBY03lah6frR1Br启动打算代理D:ODIODIoracledibinagentscheduler.bat注:报错信息是未定义代理。缘故是ERP(BEST环境)服务器,没有设置代理服务器,ODI
26、是无法创建ERP代理。本章节创建的代理是本机代理,而ODI资料库等信息差不多上建立在ERP(BEST环境)的,因此无法创建ERP代理,启动ERP打算代理就会抛出上图的错误信息。因为临时ERP测试环境没有代理服务器,也没有创建代理服务器的权限。故启动打算代理的研究有机会接着研究。ODI基础开发ODI架构创建完成后,就能够进行ODI的基础开发,要紧是项目、模型、接口、包等ODI基础要素的建立。ODI基础开发案例:青啤MDM项目ERP-MDM的ODI开发。创建项目(Projects)由于本ODI开发总结选取的案例是青啤MDM项目中ERP-MDM的ODI开发:源系统是ERP,目标系统式MDM。那么项目
27、可命名为:TsingTaoMDM,并将该项目下的First Folder重新命名为ERP-MDM。点击Designer组件的Projects TAB 页图标,新建Project,命名为TsingTaoMDM。注:那个Project是指ODI开发项目,本案例将青啤MDM项目作为ODI开发项目,可将青啤MDM项目所有ODI开发都放在那个Project里面。因此也能够更细或更广的划分,比如在青啤正式的ODI开发中,所有的ODI开发都放在TSINGTAO里面,并没有专门细的划分;而在Oracle Data Integrator应用指南中,直接用ORCL_DEMO的ODI开发作为Project,划分得专
28、门细。点击OK按钮,左侧栏会显示新建的Project将First Folder重新命名为ERP-MDM,就完成了项目的创建。效果如下图,导入知识模块 (KM)DesignerTsingTaoMDMKnowledge ModulesRKM右键Import Knowledge Modules文件选择你ODI安装目录下的ODIoraclediimpexp,将下面的文件全部选中,点击OK,导入时刻较长。也能够只选中你所需要导入的KM文件。创建模型(Models)点击Designer组件的Models TAB 页图标,新建Models Folder,命名为ERP System,点击OK即可完成Model
29、 Folder的创建,右键差不多创建的Model Foder:ERP System, 选择Inser Model,输入如下信息,点击OK,ERP系统的Model创建完成了。用相同的方式创建MDM系统的Model。反向数据存储(Datastores)反向的数据存储,是ODI接口开发的前提。反向分为两种:标准反向和客户化反向。此章节描述了标准反向,客户化反向涉及了RKM,将在KM(知识模块)基础章节RKM中进行详细的讲明。案例:ERP-MDM物料初始化ODI接口开发。源系统的Datastores反向案例注意事项:青啤所有视图都创建在APPS用户下,也就讲 CUX_MTL_SYSTEM_ITEMS_
30、INIT_V数据源在APPS Schema,而不是在CUX Schema。假如在CUX Schema下反向会导致反向出来Datastore是没有结构的,如下图所示,那么在做CUX_MTL_SYSTEM_ITEMS_INIT_V反向之前我们需要建立一个为视图反向的物理架构和逻辑架构:ERP System.APPS。按照ODI开发要求,还需要创建对应的ERP System.APPS模型,本次案例没有将其独立出来。那个案例告诉我们,反向Datastores选择的物理架构的Schema必须是数据源Schema,否则反向会出现上面的问题。反向前预备:CREATE synonym cux.cux_mtl_
31、system_items_init_v FOR apps.cux_mtl_system_items_init_v;CREATE synonym soau.cux_mtl_system_items_init_v FOR apps.cux_mtl_system_items_init_v;建立反向ERP系统视图的物理架构和逻辑架构(参考ODI架构搭建章节):ERP System.APPS,建立成功后如下图,DesignerModelsERP System 右键模型ERP System.CUX,选择Edit,(或双击模型)选择Reverse(反向) TAB页,输入如下信息,Definition TAB
32、 页:Reverse TAB 页:点击按钮,稍等片刻,Datastore就反向出来了,如图所示,目标系统的Datastores反向反向前预备:CREATE synonym soau.cux_mtl_system_items_b FOR cux.cux_mtl_system_items_b;GRANT SELECT,INSERT,UPDATE,DELETE ON cux.cux_mtl_system_items_b TO soau;讲明: Datastores反向失败缘故分析确保待反向的表/视图是属于当前Schema(数据源)。确保ODI的Work Schema(SOAU)用户能访问到反向数据存
33、储的数据源。创建和执行接口(Interfaces)ODI接口开发是ODI开发的核心。基础接口一般用于ODI数据初期导入,运行一次。创建接口DesignerProjectssingTaoMDMERP-MDMInterfaces 右键Insert Interface输入如下信息,Definition TAB页 Name:ERP-MDM.CUX_MTL_SYSTEM_ITEMS_BDiagram TAB页Flow TAB页:源系统Datastore选择默认标准Oracle的LKM:LKM Oracle to Oracle (DBLINK)目标系统Datastore选择默认标准Oracle的IKM:I
34、KM Oracle Incremental Update其他默认即可。点击OK,创建接口完成。执行接口(DesignerProjectssingTaoMDMERP-MDMInterfacesERP-MDM.CUX_MTL_SYSTEM_ITEMS_B) 右键创建好的接口 选择Excute执行完,去Operator查看执行结果同时检测目标系统数据库数据是否导入成功,创建和执行过程(Procedures)创建过程DesignerProjectssingTaoMDMERP-MDMProcedures 右键Insert Procedure输入如下信息,Definition TAB页Name:ERP-M
35、DM.IMPOTR_ITEMS点击图上图标,弹出窗口,输入如下信息Name:Import itemsSchema:ERP System.APPSCommand:begin apps.CUX_ITEM_IMPORT_PKG.IMPORT_ITEMS;end;讲明:Command中的调用apps.CUX_ITEM_IMPORT_PKG.IMPORT_ITEMS是客户化的ERP-MDM物料初始化API,API是创建在APPS用户下的,因此上面的Schema选择ERP System.APPS。点击OK,Procedure创建完成了。执行过程(DesignerProjectssingTaoMDMERP-
36、MDMProceduresMDM-ERP.IMPORT_ITEMS) 右键创建好的过程 选择Excute执行后,切换到Operator查看执行结果登录到目标系统数据库(MDM)查看Product表中是否有需要导入的物料信息。SELECT * FROM mtl_system_items_b;SELECT * FROM mtl_system_items_tl;创建和执行包(Packages)将需要一起执行的接口、过程放在一起打包,让ODI依次执行。创建包DesignerProjectssingTaoMDMERP-MDMPackages 右键Insert Package输入如下信息,Definiti
37、on TAB页Name:ERP-MDM.IMPOTR_ITEMDiagram TAB 页选中需要放入包得接口或过程,按住鼠标不放,拖曳到Diagram TAB 页灰色区域中,如图所示用那个方式将接口:ERP-MDM.CUX_MTL_SYSTEM_ITEMS_B和过程:ERP-MDM.IMPOTR_ITEMS拖放到包中,ODI会默认第一个拖到包中的接口或是程序设为包执行的第一步。假如你想设置另外的为第一步执行,能够选中你需设置的接口或过程,右键 选择First Step。然后选择这两个箭头,对包中的接口和视图进行先后顺序的连接。注意,连接的顺序是包执行的顺序。图上表示的是:先执行接口ERP-MD
38、M.CUX_MTL_SYSTEM_ITEMS_B,执行成功会接着执行过程ERP-MDM.IMPOTR_ITEMS;接口执行失败,则执行结束,可不能执行过程了。假如想接口执行失败还接着执行过程则连接箭头选择。点击OK,包创建完成了。如图所示执行包(DesignerProjectssingTaoMDMERP-MDMPackagesMDM-ERP.IMPORT_ITEMS) 右键创建好的包 选择Excute执行后,切换到Operator查看执行结果假如想了解详细的执行结果,可展开Steps查看。创建和执行方案(Scenarios)创建方案一般用于接口或过程或包按设定的打算进行执行。那个地点对包:MD
39、M-ERP.IMPORT_ITEMS创建和执行方案。过程和接口创建和执行方案方式相同。创建方案(DesignerProjectssingTaoMDMERP-MDMPackagesMDM-ERP.IMPORT_ITEMS) 右键需要创建方案的包 选择 Generate Scenario 如没专门需求,Name和Version的值默认即可。点击OK,ODI生成了Scenarios文件,展开有刚新建的的Scenario。接着展开Scenario:ERP_MDM_IMPORT_ITEMS,右键 Insert Scheduling输入如下信息Definition TAB页:定义上下文、代理、日志级不、活
40、动期间、执行频率Execution Cycle TAB页:定义执行时的循环次数、循环起始时刻、循环间隔等上图定义的是每10分钟执行一次。执行方案右键创建的方案:ERP_MDM_IMPORT_ITEMS,选择 Execute执行成功后,创建方案的包,就会每10分钟执行一次。CDC接口开发CDC全称Changed Data Capture,捕获变化的数据。CDC概述CDC捕获源数据的变动情况记录到日记表,在传递数据时,只需要依据日志表中记录而无需考虑未变动的数据,大大提高ELT的效率。日志ODI的CDC由日志记录来推动,日志是CDC的一部分,用于记录在数据源上改变(insert、delete、up
41、date)的数据。日志记录机制包括四种要素Journals、Capture processes、Subscribers、Journalizing views。Journals:日志,存储变化的数据的地点,在关系型数据库中一般指的确实是表格。Capture processes:捕获进程,用来捕获数据源上的数据变化并写入Journals中,通常指的确实是触发器;也可用数据源上可用的专门的捕获程序(例如支持从数据源服务器log猎取数据的程序)。Subscribers:订阅者,记录的是需要使用CDC数据的使用者;只有所有的订阅者都使用了CDC数据后,日志内容才能被清除。Journalizing vie
42、ws:日志查看程序,可用于查看日志内的数据内容,同时可猎取CDC数据以支持ODI将新数据写入目标数据存储中。设置模型日志(Journalizing)Designer模型文件(ERP System) 右键 模型(ERP System.CUX ) 选择Edit,选择Journalizing TAB页,设置模型日志,ODI会默认Journalizing Mode为Simple,JKM为JKM Oracle Simple.TsingTaoMDM。没有专门需求,那个默认设置能够进行ODI的CDC接口开发。然而所选取的案例需要注意:源系统(ERP)的Datastore的数据源是视图。默认的JKM Orac
43、le Simple.TsingTaoMDM是针对表的Datastore,是不能满足我们需求的,本人对那个JKM进行了客户化,具体客户化内容详见KM(只是模块)基础章节,客户化后JKM为:JKM Oracle View_Simple.TsingTaoMDM。讲明:1、简单(Simple):通常用于单个Datastore(通常确实是代表一个表)。2、一致性集(Consistent Set):当一组Datastore采纳CDC方式时,为保证数据的前后顺序和完整性制约关系,我们需要告诉ODI按照一定的顺序来抓取,ODI是通过设置Consistency Window来实现的。如此一组Datastore就
44、叫做Consistent Set。此外,ODI建议,假如Subsriber专门多,用Consistent Set有助于提高性能。注:关于一个Datastore来讲,Simple和Consistent Set不能同时存在。添加到CDC(Add to CDC)Add to CDC作用是将一个模型标记为能够进行CDC接口开发的模型。Designer模型文件(ERP System) 模型(ERP System.CUX )右键 Datastore(CUX_MTL_SYSTEM_ITEMS_INIT_V)Changed Data CaptureAdd to CDC选择Add to CDC,刷新之后Data
45、store变为了,多了个黄色的小时钟。注:假如Datastore没有Primary Key,Add to CDC会报错。因此在Add to CDC之前,查看Datastore是否有Primary Key,没有则需要创建一个。创建CDC接口的时候此Datastore就能够增加日志字段了。如下图所示,假如Datastore没有Add to CDC,上图红色框部分是灰色的,不可选择。添加订阅者(Subscriber(s)添加订阅者意义在于对数据源记录进行insert、delete、update操作时,会给订阅者一条对应的操作记录,ODI会依据Datastores的订阅者信息捕获对应数据,对目标数据源
46、进行一致的操作。Designer模型文件(ERP System) 模型(ERP System.CUX )右键 Datastore(CUX_MTL_SYSTEM_ITEMS_INIT_V)Changed Data CaptureSubscriber Subscriber(s)输入订阅者信息,点击OK,点击OK,进入组件Operator查看添加订阅者是否成功。表示添加订阅者执行成功。附:不妨来了解添加订阅者那个操作,ODI做了些什么?展开核心步骤是3和4步,双击3,会发觉ODI在Work Schema(SOAU)下创建一个订阅者表:SOAU.SNP_SUBSCRIBERS。表示警告:name is
47、 already used by an existing object。我们能够推测,ODI的SOAU工作架构下,所有的订阅者都存放在那个表中(事实上ODI确实是将所有订阅者存放在那个表中)。步骤4是注册订阅者,本质确实是往SOAU.SNP_SUBSCRIBERS插入一条该订阅者的记录。通过下面的查询SQL,会发觉SOAU.SNP_SUBSCRIBERS确实查询到了想要的记录:启动日志(Start Journal)启动日志之前,需要确保JKM是否选择正确。在本总结的案例中,考虑视图Datastoredes的专门,客户化了标准的JKM,需要选择客户化的JKM,如图所示Designer模型文件(E
48、RP System) 模型(ERP System.CUX )右键 Datastore(CUX_MTL_SYSTEM_ITEMS_INIT_V)Changed Data Capture Start Journal点击Start Journal,出现如下窗口,选择需要启动日志的订阅者ERP-MDM,点击OK,弹出消息框接着点击OK。并进入Operator查看启动日志是否成功。特不讲明:启动日志会删掉当前Datastore所有的日志数据,相当于初始化了该Datastore的日志。因此在正式ODI环境中,启动日志操作需慎用,防止遗留的日志数据丢失。启动日志之前需要考虑:假如待启动日志的Datastor
49、e是首次启动日志操作,启动日志是必须的,无需考虑日志数据的丢失;假如不是首次,表示之前已做过启动日志操作,只要添加订阅者即可,无需再次启动日志。误区:初次接触CDC开发以为添加了订阅者必须启动该订阅者的日志。启动日志本质确实是执行了JKM,因此将在KM(知识模块)基础的JKM模块中对启动日志进行详细的探讨。创建CDC接口CDC接口是基于基础接口,添加CDC。复制基础接口:ERP-MDM.CUX_MTL_SYSTEM_ITEMS_B选中复制后的接口,右键Edit重命名为: ERP-MDM.CUX_MTL_SYSTEM_ITEMS_B(CDC)Diagram TAB页选中源系统Datastore:
50、CUX_MTL_SYSTEM_ITEMS_INIT_V,勾上然后选中,设置JRN_SUBSCRIBER = ERP-MDM点击OK保存,CDC接口创建完成。执行CDC接口和基础接口执行方法相同。为了验证CDC接口的执行准确,对源系统数据源进行修改,添加默认采购员BEST_JULIE。在日志表中查询是否有需要更新的数据,Designer模型文件(ERP System) 模型(ERP System.CUX )右键 Datastore(CUX_MTL_SYSTEM_ITEMS_INIT_V)Changed Data CaptureJournal Data能够看到日志数据如下右键CDC接口,选择Exc
51、ute,并切换到Operator查询执结果登录目标数据库(MDM),查询是否有数据进行更新了,更新信息是否一致KM(知识模块)基础下面大致对KM基础了解进行一个系统性的讲明,假如想深入了解KM或客户化KM(较大逻辑修改),需要对Jython有一定的基础。此总结只描述了JKM的客户化开发。RKMRKM用于反向Datastores,在Model中选择。为了更好对RKM进行了解,排除其他操作阻碍,专门新建一个模型:ERP System.RKM。如图所示,选择Customized(客户化)反向方式,RKM选择Oracle标准RKM:RKM Oracle.TsingTaoMDM。点击,然后进入Opera
52、tor查看ODI是如何反向Datastores的。Step2和Step3,要紧猎取数据源中表或者视图信息,对表来讲Step3无意义,对视图来讲Step2无意义。事实上Get XXX步骤差不多上为Datastore的结构进行设计。比如,假如RKM在Step3查到的对应的视图信息,那么Datastore Type为View,如下左边图所示,右图是用Standard方式反向出来的Datastore,会发觉Datastore Type是不一样的。其他的Step假如想进行了解,能够将这些步骤执行的语句Copy到数据库运行,查看运行结果和语句取值逻辑能够了解ODI想做什么。比如Step4,执行效果(部分)
53、如下,我们能够得出Step4的作用是得到Datastore的Columns。假如想对RKM源码进行了解,DesignerProjectsTsingTaoMDMKMRKM RKM Oracle打开RKM Oracle,双击需要了解的Step,就能够看到源码,比如Get columns,JKM启动(或关闭)日志时执行的KM,在Model选择。Designer模型文件(ERP System) 模型(ERP System.RKM )右键 Edit 选择Journalizing TAB页,选择JKM Oracle Simple.TsingTaoMDM然后执行Datastore:CUX_MTL_SYSTE
54、M_ITEMS_INIT_V的Add to CDCSubscriberStart Journal进入Operator组件,你会发觉启动日志失败,双击Step11,查看报错信息:java.sql.SQLException: ORA-25001: cannot create this trigger type on views。解决方案:替换触发器能够建立在多表视图上,我们需要客户化那个JKM,修改Step11的Create trigger源码。复制标准JKM生成JKM名称为:Copy of JKM Oracle Simple,改名为:JKM Oracle View_Simple选择Details
55、 TAB页双击上图选中的Create trigger将上图选中区域修改为:create or replace trigger instead of insert or update or delete on修改后,点击提交,然后点OK,JKM客户化完成了。其他步骤参考CDC接口开发章节中启动日志(Start Journal)。启动日志成功后,查看JKM执行过程这些步骤看标题也能大概明白JKM做了什么,从Step11能够明白JKM捕获数据是通过数据源表/视图的触发器捕获的。下面以数据源来解析JKM的操作。首先JKM创建了基于Datastore:CUX_MTL_SYSTEM_ITEMS_INIT_
56、V的触发器,查询SQL:SELECT * FROM dba_objects o WHERE o.OWNER = SOAU AND o.OBJECT_NAME LIKE %CUX_MTL_SYSTEM_ITEMS_INIT_V%AND o.OBJECT_TYPE = TRIGGER;查询结果能够查看下触发器T$CUX_MTL_SYSTEM_ITEMS_INIT_V代码,了解该触发器具体信息。查看SQL:View T$CUX_MTL_SYSTEM_ITEMS_INIT_V由于篇幅过长,触发器代码详见附录II。我们能够看出,对数据源:CUX_MTL_SYSTEM_ITEMS_INIT_V进行Inse
57、rt、Update、Delete操作都会触发该触发器,并向日志表:SOAU.J$CUX_MTL_SYSTEM_ITEMS_INIT_V插入操作记录。然而通过测试发觉,只有对视图进行Insert、Update、Delete操作ODI才会写入日志,而对视图关联的表进行操作却不能触发触发器。这会导致此客户化的JKM在实际ODI开发中没有意义。此处只是演示一下JKM的客户化。附录III中有最简单的视图(每个关联表的主键差不多上一致的或不一致主键的表只是作为关联表)的客户化JKM开发脚本,对本案例是可行的。假如想更深入了解视图JKM客户化研究,可做参考。通过对JKM的了解,复杂视图是无法做到JKM客户化
58、的。CKM在模型(Models)中添加CKMDesigner模型文件(ERP System) 模型(ERP System.CUX )右键 点击Edit 选择Control TAB页ODI差不多默认了标准CKM:CKM Oracle.TsingTaoMDM。Models的CKM检查静态数据一致性:通过设立约束条件,能够清洗、过滤数据,只按需集成数据。在接口(Interfaces)中添加CKM例如在ODI基础开发的接口ERP-MDM.CUX_MTL_SYSTEM_ITEMS_B添加CKMDesignerProjectssingTaoMDMERP-MDMInterfacesERP-MDM.CUX_M
59、TL_SYSTEM_ITEMS_B 右键 选择EditODI默认的CKM是:CKM Oracle。接口(Interfaces)的CKM在加载过程中检查数据:做数据流程过程中的数据操纵,通过将Designer中FLOW_CONTROL选项改为是,能够启用此CKM,如下图。FLOW_CONTROL默认值是YES。下图是CKM在接口中执行结果(部分)LKM在接口中源系统Datastores选择LKM。LKM作用是将远程服务器的源数据下载到ODI临时区。如下图所示接口ERP-MDM.CUX_MTL_SYSTEM_ITEMS_B选择的LKM为了更好的了解LKM,可查看LKM详细信息。如下图所示通过对这些
60、步骤的源码了解和执行结果,LKM Oracle to Oracle (DBLINK) 要紧步骤:其他LKM可类似理解。在目标系统创建连接源系统的DBLINKcreate database link connect to identified by using 执行案例中的接口,上面的语句转为create database linkBESTconnect tosoauidentified byusingBEST 在源系统创建视图create or replace view ( )as select from where (1=1)语句 执行后 create or replace view SOA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论