IKM开发Word文件下载.docx
- 文档编号:22456396
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:35
- 大小:587.17KB
IKM开发Word文件下载.docx
《IKM开发Word文件下载.docx》由会员分享,可在线阅读,更多相关《IKM开发Word文件下载.docx(35页珍藏版)》请在冰豆网上搜索。
为了改进事实表的加载性能,我们在加载过程中禁用了外键约束和位图索引。
加载后,这些禁用将会解除。
作为这个IKM的一部分,我们还将包括一个可选步骤,以允许我们在接口执行期间进行扩展跟踪。
前提条件和资源
本文基于OracleDatabase11g
(11.1.0.7.0)和OracleDataIntegrator10.1.3.4.0。
本文假设您已经设置了OracleDataIntegrator主信息库和工作信息库。
请参阅“OracleDataIntegrator:
ETL项目入门”(PDF)了解详细信息。
下面是其他一些有帮助的资源:
▪“OracleDataIntegrator针对数据仓库的最佳实践”(PDF)
▪“Oracle示例系列—OracleDataIntegrator”
▪“OracleDataIntegrator替代方法参考”(PDF)
▪最后,您可能需要下载OracleDataIntegrator产品管理提供的双周刊网播。
▪可从此处下载完整的IKM。
要导入IKM,请将其保存至您的文件系统,并通过OracleDataIntegratorDesigner模块将其导入。
创建源模式
首先,我们将新建一个模式和一个表。
这将是我们的数据源。
我们还将向该表插入两条记录。
现实中,您的数据可能要远比这多,但为了演示目的,两条记录已足够。
通过SQL+以用户sys的身份登录并执行以下语句:
SQL>
CREATEUSERsales_sourceIDENTIFIEDBYsales_source;
Usercreated.
GRANTCONNECTTOsales_source;
Grantsucceeded.
GRANTRESOURCETOsales_source;
CREATETABLEsales_source(
2PROD_IDNUMBERNOTNULL,
3CUST_IDNUMBERNOTNULL,
4TIME_IDDATENOTNULL,
5CHANNEL_IDNUMBERNOTNULL,
6PROMO_IDNUMBERNOTNULL,
7QUANTITY_SOLDNUMBERNOTNULL,
8AMOUNT_SOLDNUMBERNOTNULL
9);
Tablecreated.
INSERTINTOsales_sourceVALUES(13,987,TO_DATE
('
01/01/1999'
'
DD/MM/YYYY'
),3,999,1,500);
1rowcreated.
01/04/1999'
COMMIT;
Commitcomplete.
接下来,我们授予目标模式用户SH执行dbms_monitor程序包的权限。
dbms_monitor程序包将允许我们启动扩展跟踪。
(请参阅这篇OracleMagazine文章获取有关dbms_monitor的更多信息。
)
grantexecuteondbms_monitortosh;
最后,我们为OracleDataIntegrator工作模式创建用户。
对于某些数据验证和转换操作,OracleDataIntegrator需要创建(临时)工作对象。
最好将这些对象放置在单独的模式中,以避免在数据仓库对象与临时工作对象之间出现混淆。
CREATEUSERodiIDENTIFIEDBYodi;
GRANTCONNECT,RESOURCETOodi;
创建Development上下文
上下文用于将物理资源归组至同一环境中。
典型的上下文包括Development、UserAcceptanceTest(UAT)、Production等等。
我们使用TopologyManager创建上下文。
在本文中,我们将仅创建一个Development上下文。
在TopologyManager中,单击Context
选项卡,然后单击
InsertContext
图标。
这将显示上下文的
Definition
选项卡。
按照下图所示填充域。
现在,我们将为我们的源模式(SALES_SOURCE)创建物理和逻辑架构。
首先,我们为源模式创建物理架构。
在TopologyManager中,选择
PhysicalArchitecture
选项卡并展开
Technologies。
右键单击Oracle
并选择
InsertDataServer。
对于数据服务器的名称,我们将遵循“OracleDataIntegrator针对数据仓库的最佳实践”指南中的命名规则:
<
TECH_NAME>
_<
SRV_NAME>
(大写)。
因此,我们将数据服务器命名为ORCL_SALES_SOURCE_DEV。
我们按照下图所示填充Definition选项卡上的其他域。
/
切换至JDBC选项卡并按照下图所示进行填充。
您需要用服务器网络名或IP地址替换<
host>
,用监听器端口号(通常为1521)替换<
port>
,用实例服务名(OracleSID)替换<
sid>
。
单击
Test
按钮确保输入了正确的数据,然后单击
OK。
在接下来的屏幕中,从
SALES_SOURCE
下拉菜单中选择
模式。
选择
ODI
作为Schema(WorkSchema)。
牢记OracleDataIntegrator将在此模式中创建临时工作对象。
保留其他域的默认值(如下图所示)。
忽略以下警告消息:
在之前的步骤中,我们创建了物理模式。
现在,我们将为ORCL_SALES_SOURCE_DEV数据服务器创建逻辑模式。
在TopologyManager中,单击
LogicalSchema
展开
Technologies,右键单击
Oracle
InsertLogicalSchema。
我们需要再次遵循最佳实践指南中的命名规则:
<
SCHEMA_NAME>
(大写)因此,我们将逻辑模式命名为ORCL_SALES_SOURCE。
对于Development上下文,从
PhysicalSchema
ORCL_SALES_SOURCE_DEV.SALES_SOURCE。
为SH模式创建物理和逻辑架构
重复上一部分中的步骤为SH模式设置物理和逻辑模式。
调整名称、用户名、口令等以反映SH模式的属性。
将SALES_SOURCE和SH模型反向工程到OracleDataIntegratorDesigner模块中
我们使用OracleDataIntegrator模块反向工程源模式和目标模式的元数据。
登录Designer,单击
Models
选项卡,单击
InsertModelFolder
图标(如下图所示)。
将新模型命名为EDW并单击
接下来,右键单击新EDW文件夹并选择
InsertModel。
在Definition选项卡中,键入SALES_SOURCE。
从
Technology
下拉菜单中选择
Oracle,从
下拉菜单中选择ORCL_SALES_SOURCE。
切换至
Reverse
选项卡,并从
Context
Development。
其他域保留默认值。
接下来,单击
按钮反向工程SALES_SOURCE模型。
反向工程过程可能需要一两分钟才能完成。
下一步是反向工程SH模式。
按照我们创建SALES_SOURCE模型的步骤,在EDW模型文件夹中创建SH模型。
创建IKM加载事实表
在此部分中,我们将创建一个新的IKM以通过实施最佳实践方法将事实表加载到数据仓库中。
我们将设置可选跟踪并禁用外键和索引预先加载。
加载完事实表后,我们将重新启用外键和索引,还将禁用跟踪。
开始之前,我们突出显示
Projects
选项卡并通过单击
InsertProject
图标创建一个新项目。
我们将此项目命名为EDW。
接下来,创建一个新的IKM。
展开EDW项目和KM文件夹,右键单击Integration文件夹并选择
InsertIntegration(IKM)。
我们将新的IKM命名为“IKMOracleAppend(DisableFKs&
Indexes)”。
这遵循了命名KM的最佳实践:
模块类型>
技术>
加载策略>
(<
实施详细信息>
)。
还是从
TargetTechnology
Oracle。
通过
Details
选项卡,我们定义KM的单个步骤。
正如稍后所述,在一个接口中运行时每个步骤的执行都设置为可选。
下图显示了完整的IKM。
现在,我们将执行上述大部分步骤。
上述所有步骤都使用混合的SQL和OracleDataIntegrator替换API编写。
启动跟踪
我们使用dbms_monitor程序包启用对接口的跟踪。
注意,我们需要从PL/SQL块内调用session_trace_enable过程。
正如您从下图看到的那样,我们希望将跟踪等待事件设置为可选。
为此,我们定义了一个名为TRACE_WAITS的选项。
我们可以通过getOption替换API方法引用该选项。
此外,我们为该选项定义了默认值false。
因此,在接口中执行IKM时,默认情况下禁用跟踪。
稍后我们可以在通过接口执行IKM时改写该值。
在
Options
选项卡中,我们可以看见并未始终启用跟踪(未选中
AlwaysExecute
复选框)。
是否启用跟踪取决于Trace选项的值。
默认情况下,Trace选项设置为
No。
我们稍后可以在接口中更改此设置。
删除临时表
删除临时表将删除之前ETL运行中的记录。
我们使用odiRef.getTable替换API方法获取临时表的名称。
临时表引用为INT_NAME。
注意,我们已经选中了
IgnoreErrors
复选框。
在我们第一次运行ETL时,临时表还未创建。
如果我们尝试删除不存在的表,Oracle将返回错误消息。
为了防止ETL在遇到错误时停止执行,我们为此步骤选中
复选框。
这就无需编写冗长的错误处理过程。
(注意,如果不删除临时表,我们还可以将其截断。
)
创建临时表
在删除了临时表以及所有旧记录后,我们可以重新创建该表。
我们将该表的属性PCTFREE设置为PCTFREE选项的值。
默认情况下,该值为0。
因为我们仅将记录插入该表且从不对其进行更新,所以我们可以使用该表数据块上的所有空间。
插入临时表
我们结合使用SQL和OracleDataIntegrator替换API将Sales临时表从SALES_SOURCE模式加载至我们的OracleDataIntegrator工作模式。
禁用FK约束
在将数据加载至Sales表之前,我们需要禁用外键。
对于大量数据,这将加快加载过程。
这对于性能关键的环境(如近乎实时数据仓库)非常重要。
OracleDataIntegrator在KM中包括了一种机制,使我们可以使用隐式游标对SQLSELECT语句返回的每行执行操作。
为此,您只需在KM步骤的
Source
选项卡中指定SELECT语句,在
Target
选项卡中指定操作代码。
这是一个非常不错的特性,因为这可省去用PL/SQL手动编码游标,从而节省了很多开发时间。
CommandonSource
选项卡下,我们按如下所示进行指定:
我们在OracleDataDictionary中查询user_constraints表,返回目标表上(SH目标模式中的Sales表)的所有外键约束列表。
CommandonTarget
选项卡中,我们可以通过为其加上前缀#符号引用目标表和约束名并禁用外键约束。
请注意,我针对隐式游标运行了扩展跟踪。
对于Sales目标表上的每个约束,OracleDataIntegrator都会向数据库服务器发送一条ALTERTABLE...语句。
因为Sales表上有五个外键,所以我们以五个ALTERTABLE...语句结束。
禁用BIX
在该步骤中,我们将禁用
Sales
事实表的位图索引。
这将加快事实表的加载速度。
我们仅禁用那些会将数据加载到其中的表分区上的位图索引。
在我们的示例中,这些将是1999年Q1和Q2的分区。
如之前的步骤所示,我们再次使用一个隐式OracleDataIntegrator游标实施该步骤。
对于
选项卡,我们结合使用SQL和OracleDataIntegrator替换API方法检索插入到临时表中的不同time_id。
根据这些time_id,我们可以确定目标表中与其相关的分区。
odiRef.getTable("
L"
"
INT_NAME"
W"
)替换API方法将为我们检索临时表。
窗口中,我们将指定语法以禁用目标表上的索引分区。
在接下来的几个步骤中,我们会将记录插入目标表中、重新启用外键约束、使位图索引可重用并禁用跟踪。
有关这些步骤的详细信息,我已经导出了该KM。
(本文篇首提供了一个下载IKM的链接,其中提供了有关如何将其导入OracleDataIntegrator的说明。
请注意,在实际的数据仓库应用场合中,我们需要向IKM多添加几个步骤,如收集目标表的统计信息、处理和回收约束违规、执行代理键查找等。
创建接口
接口是一个OracleDataIntegrator对象,支持加载其中数据转换自一个或多个源数据存储的目标数据存储(OracleDataIntegrator—代表某个表)。
OracleWarehouseBuilder中的相关对象是映射。
然而,由于KM可重用,创建OracleDataIntegrator接口的速度要比开发OracleWarehouseBuilder映射快很多。
创建接口之前,我们需要再导入两个KM:
一个用于从源系统(LKM)提取数据,另一个用于检查约束违规。
我们的接口中二者均需要。
要导入KM,需登录Designer,单击
KnowledgeModules。
右键单击
Loading(LKM)
ImportKnowledgeModules。
浏览至ImportExport文件夹(<
odihome>
\oracledi\impexp)并选择
LKMSQLtoOracle。
接下来,导入CKM。
同样,按照上述步骤进行,只是这次选择
CKMOracle。
现在,我们已做好创建接口的准备。
展开EDW项目,也是第一个文件夹。
Interfaces
InsertInterface。
根据最佳实践指南,接口的命名规则是Int.<
TARGET_TABLE>
DETAILS>
我们将该接口命名为Int.SALESFACTLOAD。
还需在下拉菜单中将
OptimizationContext
设置为Development。
切换至Diagram选项卡。
选项卡中,将sales_source数据存储从Sales_Source模型拖放至
Sources
区域。
将Sales表从SH模型拖放至
TargetDatastore
系统将提示您执行自动映射。
单击
Yes
确认。
Errors
按钮确保您的映射中检测不到错误。
然后,单击
Flow
在打开的屏幕中,单击
数据存储并从
LKMSelection
Target+StagingArea。
IKMSelection
下拉菜单中选择我们的
IKMOracleAppend(DisableFKs&
Indexes)。
在屏幕底部的
Option
区域中,突出显示
TraceOption
并将其设置为
Yes。
这将改写跟踪的默认值,因此,在执行接口期间将启用跟踪。
Controls
选项卡,从
SelectyourKM
下拉菜单中选择
现在,我们可以运行接口并测试KM了。
Execute
按钮,在显示的弹出菜单中选择
Development
作为Context。
最后,单击
为了验证接口的执行状态,需要登录OracleDataIntegratorOperator模块。
在Operator模块中,我们可以全方位地详细查看执行统计信息和错误。
例如,在以下的执行统计信息中,我们可以看到执行时间最长的步骤是EnableFKconstraints。
该步骤用了六秒钟。
我们还可以看到我们将两条记录插入了临时表,将两条记录插入了事实表。
恭喜,您已经成功创建了一个新的OracleDataIntegratorIKM。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IKM 开发
![提示](https://static.bdocx.com/images/bang_tan.gif)