如果已经定义了所有数据模型,并且已经手动输入源以及目标表和文件的详细信息或对其进行反向工程,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 应用程序检查接口进度,如下图所示。