Sei sulla pagina 1di 26

AIM

DO.060 PUBLISH USER REFERENCE


MANUAL

ODI 学习笔记

Author: Derek.Jaa
Creation Date: January 1, 2009
Last Updated: February 3, 2009
Document Ref: ODI090101
Version: 1.0

Approvals:

<Approver 1>

<Approver 2>

Copy Number _____


DO.060 Publish User Reference Manual Doc Ref: ODI090101
January 29, 2009

Document Control

Change Record
26

Date Author Version Change Reference

1-Jan-09 Derek.Jaa 0.1 No Previous Document


2-Jan-09 Derek.Jaa 0.2 Debug CDC & Step2.9 – Step2.13
3-Jan-09 Derek.Jaa 0.3 Add Part3
4-Jan-09 Derek.Jaa 0.4
22-Jan-09 Derek.Jaa 0.5 Separate CDC to tow Part
29-Jan-09 Derek.Jaa 1.0

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.

ODI 学习笔记 Document Control 2


File Ref: [DJ]DO060_ODI_学习笔记.docx (v. 1.0 )
Company Confidential - For internal use only
DO.060 Publish User Reference Manual Doc Ref: ODI090101
January 29, 2009

Contents

Document Control .................................................................................................................. 2

Part 1 – Overview ................................................................................................................... 4


1. ETL & E-LT ................................................................................................................... 4
2. Oracle Data Integrator 架构........................................................................................ 4
3. Knowledge Modules [知识模型]................................................................................ 6
Part 2 – ODI 设置&简单数据整合.......................................................................................... 7
1. 完成 Getting Start ........................................................................................................ 7
2. 创建 Repository Storage Space .................................................................................. 7
3. 创建 Master Repository............................................................................................... 8
4. 连接至 Master Repository ........................................................................................... 9
5. 创建 Work Repository ............................................................................................... 10
6. 连接至 Work Repository ........................................................................................... 11
7. 创建 Oracle Data Server ............................................................................................ 12
8. 创建 Physical Schema [物理架构] ............................................................................ 13
9. 创建 Logical Schema [逻辑架构] .............................................................................. 14
10. 创建 Project [项目] ................................................................................................... 15
11. 导入 Knowledge Module ........................................................................................ 15
12. 创建 Data Module & Reverse-engineer ................................................................ 16
13. 创建 & 执行 Interface .............................................................................................. 17
14. 为 Datastore 启用简单 CDC.................................................................................... 18
15. 为 Datastore 启用一致性 CDC................................................................................ 19
16. 创建 Physical Agent [物理代理] & Logical Agent[逻辑代理] ............................. 21
17. 创建 Scenario 并使用 Agent 运行 ........................................................................... 23
18. Interface/Package 调试及 KM 分析 ...................................................................... 24
Appendix ............................................................................................................................... 25
ODI 连接 Microsoft SQL Server 2005 .......................................................................... 25
Open and Closed Issues for this Deliverable .................................................................... 26
Open Issues .................................................................................................................... 26
Closed Issues .................................................................................................................. 26

ODI 学习笔记 Document Control 3


File Ref: [DJ]DO060_ODI_学习笔记.docx (v. 1.0 )
Company Confidential - For internal use only
DO.060 Publish User Reference Manual Doc Ref: ODI090101
January 29, 2009

Part 1 – Overview
阅读:An Introduction to Real-Time Data Integration

1. ETL & E-LT

Content

无论是 ETL 还是 E-LT,其基本目标是通过 Extract/Transformation/Load 这几个过程达到将


源数据整合并放入目标数据库/数据仓库的过程。ETL 的基本思路是通过独立开发的转换引
擎,将源数据抽取,在转换引擎中完成转换整合的过程,最终将数据载入到目标数据库或数
据仓库。而 E-LT 的基本思路是充分运用源与数据 RDBMS(关系型数据库)达成转换的目
标,即运用 RDBMS 厂商提供的功能及 SQL 语句完成转换,而非在自己开发的转换引擎中完
成转换的过程,类似于通过手工编程的方式完成 ETL。E-LT 的转换不仅发生在目的端,同样
发生在源数据端。它的原则就是在转换效率最高的一端完成数据转换。但在通常情况下,将
Staging Area 建立在目的端。

2. Oracle Data Integrator 架构

Content

Oracle Data Integrator 统合在一个模块化的数据仓库下,并可用基于 Java 编写的图形化开发


管理工具以及计划代理程序进行访问。

ODI 学习笔记 Part 1 – Overview 4


File Ref: [DJ]DO060_ODI_学习笔记.docx (v. 1.0 )
Company Confidential - For internal use only
DO.060 Publish User Reference Manual Doc Ref: ODI090101
January 29, 2009

ODI 的数据仓库包括一个主仓库(Master Repository),用于保存用户及角色信息,连接其


他数据库或数据源,不同版本的项目。一个主仓库包含一个或多个工作仓库(Work
Repository),包含具体的数据以及在用户与整合数据间建立关联。数据仓库可以建立在
Oracle 数据库或其它数据库上,并可通过开发工具进行管理以及通过计划代理程序进行访
问。

ODI 提供了以下几种管理工具:

l Designer 用于定义数据转换逻辑,这是最常用的开发工具,大部分的开发任务,包括
data store 的定义,interface(数据映射关系)和 package(相当于 workflow)的创建等,
都是在 Designer 中完成。

l Operator 用于管理和监控数据转换任务的执行情况,在设计阶段,也可用于调试
(debugging)

l Topology Manager 用于定义物理和逻辑基础架构,如 work repository 的创建和管理


等。

l Security Manager 用于管理用户权限

以及一个计划代理程序:

l Schedule Agent 计划代理,用于调度执行数据转换任务。计划代理同时也带有一个数据


转换引擎,但是 ODI 采用 E-LT 架构,所以基本上计划代理只是将任务传递给目标库,
其数据转换引擎很少用到。

ODI 学习笔记 Part 1 – Overview 5


File Ref: [DJ]DO060_ODI_学习笔记.docx (v. 1.0 )
Company Confidential - For internal use only
DO.060 Publish User Reference Manual Doc Ref: ODI090101
January 29, 2009

3. Knowledge Modules [知识模型]

Content

Oracle Data Integrator 之所以能适应不同的、多种多样的数据源,灵活有效的完成数据抽取/


转换/载入的过程,均是基于其知识模型体系。

Knowledge Modules 类似于程序中的插件,Oracle Data Integrator 将数据整合的任务抽象出


六个组成部分

l [反向工程]Reverse-engineering knowledge modules:用于从数据源读取表及其他对


象。

l [日记]Journalizing knowledge modules:用于为单一或一组表/视图记录新建的和修改


的数据。ODI 支持部分数据源的 Change Data Capture(CDC)功能,前提为 ODI 项目中
启用该模块。

l [加载]Loading knowledge modules:用于从数据源抽取数据。

l [检查]Check knowledge modules:用于检测抽取出的源数据的合法性。

l [集成]Integration knowledge modules:用于将 Staging Area 中的数据转换至目标表,


基于目标数据库产生对应的转换 SQL。

l [服务]Service knowledge modules:提供将数据以 Web Services 的方式展现的功能。

ODI 学习笔记 Part 1 – Overview 6


File Ref: [DJ]DO060_ODI_学习笔记.docx (v. 1.0 )
Company Confidential - For internal use only
DO.060 Publish User Reference Manual Doc Ref: ODI090101
January 29, 2009

Part 2 – ODI 设置&简单数据整合


l Environment:Oracle 10g 作为源及目的数据库,分别建立两个实例:
PRODDB/TESTDB,每个实例下均建立 USER: DEREK。

l 示例目标为实现 Oracle – Oracle 的 Data Integrate,并启用 CDC。

l 步骤 2 ~ 8 为设置;

l 步骤 9 ~ 13 为 TestProject。该 Project 假设对应 Schema 下均存在表 XHU_ITEMS_19,


建立 SQL 如下:

SQL
create table XHU_ITEMS_19
(
ITEM_ID NUMBER not null,
ITEM_NUMBER VARCHAR2(30) not null,
ITEM_NAME VARCHAR2(100) not null,
ITEM_DESCRIPTION VARCHAR2(255),
START_DATE_ACTIVE DATE,
END_DATE_ACTIVE DATE
)
tablespace USERS;

alter table XHU_ITEMS_19


add constraint ITEM_ID primary key (ITEM_ID);

1. 完成 Getting Start

Content

安装完成 Oracle Data Integrator 后,在开始菜单 Oracle Data Integrator 文件夹中,有


Documentation Library。其中有文档 Getting Started with an ETL Project,是以 ODI 自带的
一个 Demo 为示例进行的简易开发介绍。首先完成此过程,具体内容见文档。

2. 创建 Repository Storage Space

Content

Repository Stroage Space 即用于创建 Master Repository/Work Repository 的空间,通常建


立在目标数据库中。具体表现即为多个 Schema(User)。依据 Installation Guide Page 19,
应分别为 Master Repository 及 Work Repository 分别建立不同的 Storage Space
(Schema)。本例中均使用 DEREK 这个 Schema。

Sample

ODI 学习笔记 Part 2 – ODI 设置&简单数据整合 7


File Ref: [DJ]DO060_ODI_学习笔记.docx (v. 1.0 )
Company Confidential - For internal use only
DO.060 Publish User Reference Manual Doc Ref: ODI090101
January 29, 2009

SQL
create user DEREK identified by DEREK default tablespace USERS
temporary tablespace TEMP;
grant connect, resource to DEREK;
grant select any table to DEREK;
grant unlimited tablespace to DEREK;

3. 创建 Master Repository

Content

N: 开始菜单/程序/Oracle Data Integrator/Repository Management/Master Repository


Creation

Fields Value

Driver oracle.jdbc.driver.OracleDriver
URL jdbc:oracle:thin:@dbprod.hand-china.com:1521:PRODDB
User derek
Password derek
ID 0
Technologies Oracle

在确认前,首先使用 测试连接 测试与数据库的连接是否可用。

Sample

ODI 学习笔记 Part 2 – ODI 设置&简单数据整合 8


File Ref: [DJ]DO060_ODI_学习笔记.docx (v. 1.0 )
Company Confidential - For internal use only
DO.060 Publish User Reference Manual Doc Ref: ODI090101
January 29, 2009

4. 连接至 Master Repository

Content

N: 开始菜单/程序/Oracle Data Integrator/ Topology Manager

点击“新建”;

Fields Value

Oracle Data Integrator Connection


Login name OracleDI On PRODDB
User SUPERVISOR
Password SUNOPSIS
DBMS Connection (Master Repository)
User derek
Password derek
Driver’s List Oracle JDBC Driver
Driver’s Name oracle.jdbc.driver.OracleDriver
Url jdbc:oracle:thin:@dbprod.hand-china.com:1521:PRODDB

其中 Login name 可以自定,ODI Connection 的 User 和 Password 为创建 Master Repository


时 ODI 默认的用户名和密码,可以在登录后修改。

使用 Test 测试连接,成功后确认。

Sample

ODI 学习笔记 Part 2 – ODI 设置&简单数据整合 9


File Ref: [DJ]DO060_ODI_学习笔记.docx (v. 1.0 )
Company Confidential - For internal use only
DO.060 Publish User Reference Manual Doc Ref: ODI090101
January 29, 2009

5. 创建 Work Repository

Content

N: 开始菜单/程序/Oracle Data Integrator/ Topology Manager

1. 使用步骤 2.4 建立的 ODI Connection 进行登录。

2. 选择左下方 Tab 页中的存储库(Repositories) ,右键点


击 工作存储库(Work Repositories),选择 插入工作存储库(Insert Work Repository)。

3. 按如下配置

Fields Value

Definition
Name OracleDI On PRODDB
Technology Oracle
User derek
Password derek
JDBC
JDBC Driver oracle.jdbc.driver.OracleDriver
JDBC URL jdbc:oracle:thin:@dbprod.hand-china.com:1521:PRODDB

使用 Test 测试连接,完成后点击确认,弹出窗口设置唯一的 Repository 名称及 ID。

4. 设置 Work Repository 名称及 ID

Fields Value

ID 1
Name WORKREP01
Type Designer[设计]

ID 必须是该 Master Repository 下唯一的,介于 1-998。

5. 点击确认完成设置。

Sample

ODI 学习笔记 Part 2 – ODI 设置&简单数据整合 10


File Ref: [DJ]DO060_ODI_学习笔记.docx (v. 1.0 )
Company Confidential - For internal use only
DO.060 Publish User Reference Manual Doc Ref: ODI090101
January 29, 2009

6. 连接至 Work Repository

Content

N: 开始菜单/程序/Oracle Data Integrator/Designer

点击“新建”;

Fields Value

Oracle Data Integrator Connection


Login name OracleDI On PRODDB
User SUPERVISOR
Password SUNOPSIS
DBMS Connection (Master Repository)
User derek
Password derek
Driver’s List Oracle JDBC Driver
Driver’s Name oracle.jdbc.driver.OracleDriver
Url jdbc:oracle:thin:@dbprod.hand-china.com:1521:PRODDB
Work Repository
Work Repository Name WORKREP01

其中 Login name 可以自定,ODI Connection 的 User 和 Password 为创建 Master Repository


时 ODI 默认的用户名和密码,可以在登录后修改。Work Repository Name 为步骤 2.5 中创建
的 Work Repository。

使用 Test 测试连接,成功后确认。

Sample

ODI 学习笔记 Part 2 – ODI 设置&简单数据整合 11


File Ref: [DJ]DO060_ODI_学习笔记.docx (v. 1.0 )
Company Confidential - For internal use only
DO.060 Publish User Reference Manual Doc Ref: ODI090101
January 29, 2009

7. 创建 Oracle Data Server

Content

N: 开始菜单/程序/Oracle Data Integrator/Topology Manager

1. 使用步骤 2.4 创建的 ODI Connection 进行登录;

2. 本次目的为实现 Oracle – Oracle Data Integrate 故分别为 PRODDB/TESTDB 两个


Oracle10g 数据库实例创建 Data Server。右键点击 Tab 物理体系结构 中的 Oracle,点击
Insert Data Server。按如下分别建立两个 Oracle Data Server。

Fields Value

Definition
Name ORACLE10G_PRODDB
Instance/dblink PRODDB
User derek
Password derek
JDBC
JDBC Driver oracle.jdbc.driver.OracleDriver
JDBC URL jdbc:oracle:thin:@dbprod.hand-china.com:1521:PRODDB

Fields Value

Definition
Name ORACLE10G_TESTDB
nstance/dblink TESTDB
User derek
Password derek
JDBC
JDBC Driver oracle.jdbc.driver.OracleDriver
JDBC URL jdbc:oracle:thin:@dbprod.hand-china.com:1521:PRODDB

3. 点击 Test 测试连接,测试通过后点击确定。弹出创建物理架构 Physical Schema 的窗


口。

Sample

ODI 学习笔记 Part 2 – ODI 设置&简单数据整合 12


File Ref: [DJ]DO060_ODI_学习笔记.docx (v. 1.0 )
Company Confidential - For internal use only
DO.060 Publish User Reference Manual Doc Ref: ODI090101
January 29, 2009

8. 创建 Physical Schema [物理架构]

Content

N: 开始菜单/程序/Oracle Data Integrator/Topology Manager

1. 使用步骤 2.4 创建的 ODI Connection 进行登录;

2. 完成创建 Oracle Data Server 的过程后会弹出创建 Physical Schema 的窗口。一个 Data


Server 下可以创建多个 Data Schema。本例中分别为 PRODDB/TESTDB 创立 Physical
Schema,使用步骤 2.2 中创建的 Schema 作为 Schema 及 Work Schema。
选定 Default。确定完成设置。

3. 此处工作表前缀中设置的字符,将在 Master Repositroy 所在的 Schema 中建立相应前缀


+目标表名的工作表。

Sample

ODI 学习笔记 Part 2 – ODI 设置&简单数据整合 13


File Ref: [DJ]DO060_ODI_学习笔记.docx (v. 1.0 )
Company Confidential - For internal use only
DO.060 Publish User Reference Manual Doc Ref: ODI090101
January 29, 2009
完成如下

9. 创建 Logical Schema [逻辑架构]

Content

N: 开始菜单/程序/Oracle Data Integrator/Topology Manager

1. 使用步骤 2.4 创建的 ODI Connection 进行登录;

2. 右键点击 Tab 逻辑体系结构 中的 Oracle,点击 Insert Logical Schema,分别创建如下


Logical Schema:

Name Context Physical Schema

ORACLE_PRODDB Global ORACLE10G_PRODDB.DEREK


ORACLE_TESTDB Global ORACLE10G_TESTDB.DEREK

3. 确定完成设置。

Sample

ODI 学习笔记 Part 2 – ODI 设置&简单数据整合 14


File Ref: [DJ]DO060_ODI_学习笔记.docx (v. 1.0 )
Company Confidential - For internal use only
DO.060 Publish User Reference Manual Doc Ref: ODI090101
January 29, 2009

10. 创建 Project [项目]

Content

N: 开始菜单/程序/Oracle Data Integrator/Designer

进入 Tab 项目,右键点击,插入项目如下

Name Code
testproj TESTPROJ

11. 导入 Knowledge Module

Content

如 Part1 所述,ODI 的 Knowledge Module 是其进行 E-LT 的核心所在,可以理解为模块化的


转换脚本,该脚本使用 Jython 书写,ODI 已经提供了一部分 KM 供导入使用,亦可在其基础
上进行开发。

l 开发参考 Documentation Library/Knowledge Modules/Knowledge Module


Developer's Guide;

l 使用参考 Documentation Library/Knowledge Modules/Knowledge Module


Reference's Guide。

N: 开始菜单/程序/Oracle Data Integrator/Designer

1. 进入 Tab 项目,展开 testproj/Knowledge Modules[知识模块];

2. 在对应类型知识模块上点右键,点击 Import Knowledge Module[导入知识模块],在弹


出窗口中选择路径[ODI 安装路径]\impexp,则可看到模块列表;

3. 选用合适的知识模块,参考 Knowledge Module Reference's Guide 进行选择。本例使用


下列知识模块:

KM Value

RKM RKM Oracle


LKM LKM Oracle to Oracle (DBLINK)
CKM CKM Oracle
IKM IKM Oracle Incremental Update (MERGE)
JKM JKM Oracle 10g Consistent (LOGMINER)
SKM <NULL>

ODI 学习笔记 Part 2 – ODI 设置&简单数据整合 15


File Ref: [DJ]DO060_ODI_学习笔记.docx (v. 1.0 )
Company Confidential - For internal use only
DO.060 Publish User Reference Manual Doc Ref: ODI090101
January 29, 2009
Sample

12. 创建 Data Module & Reverse-engineer

Content

N: 开始菜单/程序/Oracle Data Integrator/Designer

1. 进入 Tab 模型,点击右键 Insert Model[插入模型];

2. 设置如下:

Fields Value

Definition
Name Oracle_PRODDB
Code ORACLE_PRODDB
Technology Oracle
Logical Schema ORACLE_PRODDB
Reverse
Standard Checked
Context Global
Control
KM CKM Oracle.testproj
Journalizing
KM JKM Oracle 10g Consistent (LOGMINER).testproj

3. 点击 Apply[应用]

4. 进入 Tab Selective Reverse[选择性反向],勾选 Selective Reverse[选择性反向]/New


Datastores[新数据存储]/Objects to Reverse[要进行反向操作的对象]。

5. 从列表中勾选要使用的表以便进行反向,点击 Reverse[反向]按钮以完成反向的工作。结
果如下图。

6. 同样创建 Oracle_TESTDB 的 Datastore 并进行 Reverse-engineer(数据库中相应 Schema


下一存在 XHU_ITEMS_19 表,并声明主键。若不声明主键,则 JKM 报错)。

ODI 学习笔记 Part 2 – ODI 设置&简单数据整合 16


File Ref: [DJ]DO060_ODI_学习笔记.docx (v. 1.0 )
Company Confidential - For internal use only
DO.060 Publish User Reference Manual Doc Ref: ODI090101
January 29, 2009
Sample

13. 创建 & 执行 Interface

Content

N: 开始菜单/程序/Oracle Data Integrator/Designer

1. 进入 Tab 项目,在 Interface 上点击右键 Insert Interface[插入接口];

2. 定义名称为 TEST INTERFACE,优化上下文为 Global;

3. 关系图中源为 Oracle_TESTDB 中的 XHU_ITEMS_19,目标数据存储为


Oracle_PRODDB 中的 XHU_ITEMS_19。使用自动映射建立关联。

4. 应用设置,点击执行。

5. 进入 Operator,发现在步骤 8 出错,错误为“未连接到远程数据库”;

6. 返回 Designer,进入 TEST INTERFACE,切换至 Tab 流,点击 SS_0,发现 LKM 的


AUTO_CREATE_DB_LINK 默认为“否”,修改为“是”,再次执行。

7. 执行成功。

ODI 学习笔记 Part 2 – ODI 设置&简单数据整合 17


File Ref: [DJ]DO060_ODI_学习笔记.docx (v. 1.0 )
Company Confidential - For internal use only
DO.060 Publish User Reference Manual Doc Ref: ODI090101
January 29, 2009
Sample

14. 为 Datastore 启用简单 CDC

Intro

l Change Data Capture 允许 Oracle Data Integrator 跟踪数据源由其他应用程序引起的的


改变,以便当执行 IKM 时,避免操作未改变的数据。

l CDC 是基于 JKM 予以实现的。日记记录模块用于记录相应 Datastore 中记录的改变(插


入/更新/删除)。故启用 CDC 的前提是相应 Datastore 已设定 JKM(步骤 2.11)。

l ODI 中的日记记录使用 推送/订阅 模式,需要对某个或某组 Datastore 使用 CDC 的实体


(应用、处理过程等)进行订阅,则日记记录模块会将 Datastore 的变化推送至实体。日
记记录模块只在存在订阅实体时进行 CDC,当所有实体取消订阅后,对应 Datastore 的
CDC 将不工作。

l ODI 提供两种日记模式:

n Simple Journalizing[简单日记记录]: 跟踪单一 Datastore 的变化。

ODI 学习笔记 Part 2 – ODI 设置&简单数据整合 18


File Ref: [DJ]DO060_ODI_学习笔记.docx (v. 1.0 )
Company Confidential - For internal use only
DO.060 Publish User Reference Manual Doc Ref: ODI090101
January 29, 2009
n Consistent Set Journalizing[一致性设置日记记录]: 参照一组 Datastore 的完整性关
联,跟踪其变化。这一组 Datastore 称为 Consistent Set。

l CDC 的启用包括添加订阅/启用日志/启用 CDC 三步骤,并不需要遵循某顺序。

Content

N: 开始菜单/程序/Oracle Data Integrator/Designer

进入 Tab 模型,编辑需要启用 CDC 的 Datastore 所在的 Data Model;

1. 设定 Journalizing[日记记录]为 Simple Journalizing[简单日记记录],选择 KM 为 JKM


Oracle Simple.testproj,确定;

2. Tab 模型 中,右键点击希望启用 CDC 的 Model/Sub-Model/Datastroe 所在的 Model,


选择 Change Data Capture/Subscrib/Subscrib,输入订阅名称(本例 SUNOPSIS),
点击确定;

3. Tab 模型 中,右键点击希望启用 Journalizing 的 Datastroe,选择 Change Data


Capture/Start Journal,选择订阅名称(本例 SUNOPSIS),点击确定,产生启用
Journalizing 的 Session(包含启用 CDC);

4. Tab 模型 中,右键点击希望启用 CDC 的 Datastroe,选择 Change Data Capture/Add to


CDC;

5. 修改步骤 2.12 创建的 Interface,在源 Datastore 上勾选 Journalized Data Only[仅进行日


记记录的数据],生成 Filter。注意修改 Filter 中 JRN_SUBSCRIBER = 'SUNOPSIS',这里
使用订阅名称过滤 CDC 数据。

Sample

15. 为 Datastore 启用一致性 CDC

Intro

l Simple CDC 与 Consistent Set CDC 的区别:

n 简单 CDC 不考虑数据的一致性,如需要进行整合的数据中包含头/行的结构(已经
在数据库中创建外键关联),分别存储在 XX_HEAD/XX_LINE 表中,在 XX_LINE
中同步一条数据至 YY_LINE,而该记录对应的 XX_HEAD 并未同步到 YY_HEAD
中,则在进行数据整合(IKM)时会报错,违反了目标数据库的一致性规则;若使用一
致性 CDC,则会在 JKM 中将记录过滤,不使数据整合(IKM)的过程出错。

ODI 学习笔记 Part 2 – ODI 设置&简单数据整合 19


File Ref: [DJ]DO060_ODI_学习笔记.docx (v. 1.0 )
Company Confidential - For internal use only
DO.060 Publish User Reference Manual Doc Ref: ODI090101
January 29, 2009
n Consistent Set CDC 中有 Consistency Window 的概念,故需要进行 Extend
Window/Purge Journal 的过程。通常将该过程放入一个 Interface 中进行。Extend
Window/Purge Journal 间的处理即可理解为一个 Consistent Set。如需要进行头/
行结构的数据整合时,则应在 Extend Window 后按顺序进行头/行的数据同步,最
后进行 Purge Journal 的过程。

n Extend Window 创建了一个 Consistency Window,该 Cinsistency Window 包括


上一次 Extend Window 至本次 Extend Window 之间发生的数据改变。而本次
Extend Window 之后进行的数据改变依然被记录,但不会被本次操作处理,直至下
一次进行 Extend Window 操作之后才会被处理。这是 Consistent Set CDC 保证数
据一致性的另一种手段。

Content

l 由于此次使用的 journalizing 为 Consistent Set Journalizing,故需在使用前 Extend


Window/Lock Subscribers,在使用后 Unlock Subscribers/Purge Journal,下述步骤中
8 完成。参考 Oracle Data Integrator User’s Guide Page 30。

N: 开始菜单/程序/Oracle Data Integrator/Designer

1. 进入 Tab 模型,编辑需要启用 CDC 的 Datastore 所在的 Data Model;

2. 设定 Journalizing[日记记录]为 Consistent Set Journalizing[一致性设置日记记录],选择


KM 为 JKM Oracle 10g Consistent (LOGMINER).testproj,确定;

3. Tab 模型 中,右键点击希望启用 CDC 的 Model/Sub-Model/Datastroe 所在的 Model,


选择 Change Data Capture/Subscrib/Subscrib,输入订阅名称(本例 SUNOPSIS),
点击确定;

4. Tab 模型 中,右键点击希望启用 Journalizing 的 Model/Sub-Model/Datastroe,选择


Change Data Capture/Start Journal,选择订阅名称(本例 SUNOPSIS),点击确定,
产生启用 Journalizing 的 Session;

5. 调整进行日记记录的表顺序。因为 Consistent Set Journalizing 需要考虑表之间的关联关


系,故需要将存在完整性关系的表按顺序进行日记记录。如 XX_LINE 表中存在指向
XX_HEAD 表的外键关系,则在 Journalizing Table 中 XX_HEAD 表顺序应排在
XX_LINE 上面。在 datastore 对应的 Model 属性的 Journalized Table[已进行日记记录的
表] Tab 页中设置表顺序。

6. Tab 模型 中,右键点击希望启用 CDC 的 Model/Sub-Model/Datastroe,选择 Change


Data Capture/Add to CDC;

7. 修改步骤 2.12 创建的 Interface,在源 Datastore 上勾选 Journalized Data Only[仅进行日


记记录的数据],生成 Filter。注意修改 Filter 中 JRN_SUBSCRIBER = 'SUNOPSIS',这里
使用订阅名称过滤 CDC 数据。

8. 由于此次使用 Journalizing 为 Consistent Set Journalizing,故需以下步骤

1) 在 Designer 中新建 Package Journalizing Integrate

2) 将需要启用 CDC 的 Model/Sub-Model/Datastore 所在的 Model 拖入关系图;

3) 点击关系图中的图标(步骤一),在下方的类型中选择 Journalizing
Model/Datastore[日记记录数据存储],并勾选 Extend Window[扩展窗口],Lock
Subscribers[锁定订户],并在下方添加订户(本例为 SUNOPSIS);
ODI 学习笔记 Part 2 – ODI 设置&简单数据整合 20
File Ref: [DJ]DO060_ODI_学习笔记.docx (v. 1.0 )
Company Confidential - For internal use only
DO.060 Publish User Reference Manual Doc Ref: ODI090101
January 29, 2009
4) 将修改后的 Interface 拖入 Package,并将其设置为第二步骤;

5) 将需要启用 CDC 的 Model/Sub-Model/Datastore 所在的 Model 拖入关系图;

6) 点击关系图中的图标(步骤三),在下方的类型中选择 Journalizing
Model/Datastore[日记记录数据存储],并勾选 Purge Journal[清除日记],Unlock
Subscribers[取消订户锁定],并在下方添加订户(本例为 SUNOPSIS);

7) 测试该 Package。

9. 自动日记记录[Automatic Journalizing](非必须)

1) 在 Designer 中新建 Package

2) 将需要启用 Automatic Journalizing 的 Model/Sub-Model/Datastore 拖入关系图;

3) 点击关系图中的图标,在下方的类型中选择 Journalizing Model/Datastore[日记记


录数据存储],并勾选 Start[开始];

4) 勾选 Add Subscribers[添加订户],并在下方添加订户;

5) 为该 Package 产生 Scenario;

Sample

16. 创建 Physical Agent [物理代理] & Logical Agent[逻辑代理]

Content

N: 开始菜单/程序/Oracle Data Integrator/Topology Manager

类似于步骤 8&9

1. 使用步骤 2.4 创建的 ODI Connection 进行登录;

ODI 学习笔记 Part 2 – ODI 设置&简单数据整合 21


File Ref: [DJ]DO060_ODI_学习笔记.docx (v. 1.0 )
Company Confidential - For internal use only
DO.060 Publish User Reference Manual Doc Ref: ODI090101
January 29, 2009
2. 右键点击 Tab 物理体系结构 中的 Agent,点击 Insert Agent,创建如下 Physical Agent
(其中端口为 ODI 默认 Agent 端口,主机为需要提供 Agent 服务的 IP 地址):

名称 主机 端口 最大会话数

Complex Agent 192.168.153.130 20910 10000

3. 右键点击 Tab 逻辑体系结构 中的 Agent,点击 Insert Agent,创建如下 Logical Agent 通


过上下文关联到第 2 步创建的 Physical Agent:

Name Context Physical Schema

Complex Agent Global Complex Agent

4. 修改 odiparams.bat 文件中如下内容
set ODI_SECU_DRIVER=oracle.jdbc.driver.OracleDriver
set ODI_SECU_URL=jdbc:oracle:thin:@localhost:1521:orcl11g
set ODI_SECU_USER=snpm
set ODI_SECU_ENCODED_PASS=b9yX4CpBkdmaP8Y3mYbaoye2p
set ODI_SECU_WORK_REP=WORKREP1
set ODI_USER=SUPERVISOR
set ODI_ENCODED_PASS=hZypfAZQf.Yo8VWVI6HZzc

其中:
ODI_SECU_USER 需要设置为创建 Master Repository 时候的用户名,在这里是 snpm。
ODI_SECU_ENCODED_PASS 需要用 agent 实用程序加密一下,用法是 agent
encode %PASSWORD%。
ODI_SECU_WORK_REP 设置为创建 Work Repository 时候起的名字。
ODI_USER 默认是 SUPERVISOR,这是连接 ODI 的用户名。
ODI_ENCODED_PASS 默认是 SUNOPSIS,也需要用 agent encode 加密之后的值。

Sample

物理 Agent:

ODI 学习笔记 Part 2 – ODI 设置&简单数据整合 22


File Ref: [DJ]DO060_ODI_学习笔记.docx (v. 1.0 )
Company Confidential - For internal use only
DO.060 Publish User Reference Manual Doc Ref: ODI090101
January 29, 2009

17. 创建 Scenario 并使用 Agent 运行

Content

N: 开始菜单/程序/Oracle Data Integrator/Designer

1. 使用步骤 2.4 创建的 ODI Connection 进行登录;

2. 选择步骤 15 创建的 Package,插入控件 OdiWaitForLogData(该控件当捕捉到数据改变


时触发动作。其他控件的使用见文档 Oracle Data Integrator Tools Reference
Manual),并将其设置为第一步,将原来的第一步设置为其后续步骤;

3. 设置 OdiWaitForLogData 的参数,订户为 SUNOPSIS,CDC 集为


<%=odiRef.getObjectName("L", "COMPLEX_PROJ_TESTDB", "ORACLE_TESTDB",
"D")%>,其中 COMPLEX_PROJ_TESTDB 为数据模型代码,ORACLE_TESTDB 为逻辑
架构代码(本设置针对一致性 CDC,若使用简单 CDC 则参照手册进行参数设置)。

4. 右键点击 Package,选择 生成方案,生成该 Package 对应的 Scenario。

5. 展开方案,右键点击计划,选择 插入计划 以插入如下计划至 16 步创建的 Agent。

代理 上下文 执行 执行循环 执行间隔

Complex Agent Global 启动时 多次 1秒

6. 使用命令启动 Agent:
C:\ODIHome\oracledi\bin\agentscheduler.bat "-port=20910" "-name=Complex
Agent"
停止 Agent:
C:\ODIHome\oracledi\bin\agentstop.bat

Sample

ODI 学习笔记 Part 2 – ODI 设置&简单数据整合 23


File Ref: [DJ]DO060_ODI_学习笔记.docx (v. 1.0 )
Company Confidential - For internal use only
DO.060 Publish User Reference Manual Doc Ref: ODI090101
January 29, 2009

18. Interface/Package 调试及 KM 分析

Content

N: 开始菜单/程序/Oracle Data Integrator/Operator

l 使用 Operator 查看 Package/Interface 的运行状态,查看错误步骤的位置(如 正在加载


对应 LKM,集成 对应 IKM,控制 对应 CKM)及错误的 SQL,运行 SQL 的逻辑架构
(双击错误步骤)分析错误发生的原因,调整 KM 设置,选择正确的 KM。

l 双击 Designer 中载入的 KM,双击 详细步骤 中的某步骤即可查看对应的 ODI 代码,通


过修改代码可以实现客户化 KM,以实现一些特殊功能。关于 ODI 代码的使用,参阅文
档 Knowledge Module Developer's Guide – Fundamentals。

ODI 学习笔记 Part 2 – ODI 设置&简单数据整合 24


File Ref: [DJ]DO060_ODI_学习笔记.docx (v. 1.0 )
Company Confidential - For internal use only
DO.060 Publish User Reference Manual Doc Ref: ODI090101
January 29, 2009

Appendix

ODI 连接 Microsoft SQL Server 2005

Content
由于 ODI Topology Manager 中并未包含 Microsoft SQL Server 2005 驱动,只包含了 2000
版本的支持,故在此处将连接 SQL Server 2005 的方法列出。

1. 下载 SQL Server 2005 JDBC 驱动(http://msdn.microsoft.com/en-


us/data/aa937724.aspx)

2. 解压驱动,将其中 sqljdbc.jar 复制到%ODI_HOME%\drivers(%ODI_HOME%即


Oracle Data Integrator 的安装目录)。

3. 如果已经开启了 Topology Manager,重启 Topology Manager。

4. 在 Topology 中新建物理架构,参考 2.8,创建在 SQL Server 下,设置 JDBC 驱动时不要


选择列表中的驱动,而是输入 com.microsoft.sqlserver.jdbc.SQLServerDriver,JDBC Url
设置为 jdbc:sqlserver://<host>:<port>,SQL Server 默认端口号为 1433。

Sample

ODI 学习笔记 Appendix 25


File Ref: [DJ]DO060_ODI_学习笔记.docx (v. 1.0 )
Company Confidential - For internal use only
DO.060 Publish User Reference Manual Doc Ref: ODI090101
January 29, 2009

Open and Closed Issues for this Deliverable

Open Issues

ID Issue Resolution Responsibility Target Date Impact


Date

Closed Issues

ID Issue Resolution Responsibility Target Date Impact


Date

ODI 学习笔记 Open and Closed Issues for this Deliverable 26


File Ref: [DJ]DO060_ODI_学习笔记.docx (v. 1.0 )
Company Confidential - For internal use only

Potrebbero piacerti anche