六、实战汇总
31.powercenter 字符集
了解源或者目标数据库的字符集,并在Powercenter服务器上设置相关的环境变量或者完成相关的设置,不同的数据库有不同的设置方法;
多数字符集的问题,需要源读和目标写分开来考虑,而不是混为一谈。
31.1 oracle字符集
获取Oracle数据库字符集,
以sys用户登录,select value$ from props$ where name='NLS_CHARACTERSET';
返回数据库本身的字符集 --ZHS16GBK
设置Oracle环境变量,
Windows平台需要在注册表或者环境变量中设置;
Linux平台需要修改Profile文件。
使用NLS_LANG=AMERICAN_AMERICA.ZHS16GBK设置
数据库字符集与NLS_LANG不一致时,
以写入字符集NLS_LANG为准,即设置Powercenter服务器环境变量为NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
数据源有两个Oracle数据库,但字符集不一致时,
创建两个集成服务,在集成服务分别设置与对应数据库相同的字符集。
数据源和目标都是Oracle数据库,但字符集不一致时,
源使采用Native驱动,使用NLS_LANG;
目标采用ODBC驱动,在odbc.ini文件中设置对应的字符集信息。
31.2 db2字符集
获取db2数据库字符集,
执行db2set-all命令查看服务器的字符集。
设置db2客户端字符集,
命令:db2set DB2CODEPAGE=819
DB2CODEPAGE=1386 中文
DB2CODEPAGE=1208 UTF-8
DB2CODEPAGE=819 ISO8859-1
DB2CODEPAGE=1200 16位Unicode
31.3 AS/400字符集
使用PowerExchange for AS/400针对字段定义对应的字符集。
31.4 ODBC字符集
对于UNIX/Linux系统在odbc.ini文件中IANAAppCodePage参数来控制字符集,
IANAAppCodePage=113 GBK
IANAAppCodePage=2026 Big5
IANAAppCodePage=4 ISO 8859-1
31.5 文本文件字符集
文本文件可能使用不同编码方式(GBK、UTF-8).
在PowerCenter中对文本文件源和目标定义字符集有两处:
在D客户端中的源和目标定义阶段,双击任意一个文件源或目标,选择"Advanced",设置Code Page属性。
在W客户端中Session的源和目标属性中,双击Session--》映射页签--》Set File Properties链接,设置Code Page属性。
31.6 Repository service字符集
存储库字符集应该是任意数据字符集的超集。
存储库字符集只有两种:“UTF-8 encoding of Unicode”、“Microsoft Windows Simplified Chinese,superset of GB 2312-80,EUC encoding”
存储库字符集一旦创建就不能修改。
在控制台--》存储库--》数据库属性 中查看。
31.7 Integration service字符集
集成服务字符集只有两种:“UTF-8 encoding of Unicode”、“Microsoft Windows Simplified Chinese,superset of GB 2312-80,EUC encoding”
在控制台--》集成服务--》进程页签--》Codepage属性 可以查看和修改集成服务字符集。
PowerCenter提供的控制字符集的环境变量是INFA_CODEPAGENAME,
NFA_CODEPAGENAME=MS936 “Microsoft Windows Simplified Chinese,superset of GB 2312-80,EUC encoding”
NFA_CODEPAGENAME=UTF-8 “UTF-8 encoding of Unicode”
NFA_CODEPAGENAME=HKSCS
NFA_CODEPAGENAME=MS950
在UNIX/Linux上设置环境变量:export NFA_CODEPAGENAME=UTF-8
在Windows上设置环境变量:此电脑--》属性--》高级系统设置--》高级--》环境变量
31.8 Data Movement Mode
在定义集成服务时需要设置Data Movement Mode,有两个选项:ASCII、Unicode。
ASCII Data Movement Mode:当源和目标都是7bit ASCII或者EBCDIC时使用,以单字节的方式存储、传输数据,在传输过程中不做字符集转换。
Unicode Data Movement Mode:当源和目标是多字节数据时使用,从源读到数据后,先将其转换为UCS-2再进行处理;向目标写之前再从UCS-2转换位目标字符集。
32.unix ODBC配置
32.1 ODBC常规配置
配置步骤:
安装ODBC驱动(PowerCenter提供的驱动不需要再次安装;PowerCenter未提供的驱动需要单独安装,如Sybase IQ、Mysql社区版)。
编辑/创建odbc.ini文件,设置ODBCINI环境变量(不要编辑多个odbc.ini文件,正确设置环境变量)。
export ODBCHOME=
export ODBCINI=$ODBCHOME/odbc.ini
设置Library Path环境变量,保证ODBC驱动程序路径设置到Library Path中。
测试相关配置是否有效,测试工具包括:
使用ldd命令查看UNIX/Linux Library的调用顺序,检查Library Path的设置或者变更的影响,
使用方法:ldd /opt/informatica/datadirect/lib/XOmsss22.so
使用ODBC测试工具进行测试,如数据库的ODBC客户端工具,PowerCenter的ssgodbc工具。
32.2 Mysql社区版ODBC配置
数据库提供的ODBC驱动不一定是DataDirect支持的ODBC,所以会遇到ODBC报错的问题(如Mysql社区版)。
解决方法:
在Oracle官网下载相应版本的Mysql的ODBC驱动RPM包,并安装到PowerCenter服务器上;
将安装后的Mysql Library路径添加到LD_LIBRARY_PATH中,并写在DataDirect驱动管理器前面;
修改odbc.ini文件,添加Mysql ODBC驱动信息。
原理:
PowerCenter声明支持ODBC Type2和Type3,并在安装过程中集成了DataDirect ODBC驱动;
DataDirect所带的ODBC驱动仅支持Mysql商业版,所以就遇到PowerCenter不支持Mysql社区版的问题。
解决方案是下载、安装Mysql社区版驱动程序,设置Library Path,利用PowerCenter支持ODBC Type2、Type3来支持Mysql社区版。
33.使用mapping动态分发文件
以Dept为例,按照LOC列将对应的数据写入不同的文件中。
源--》SQ--》Sorter--》f(x)--》TX--》目标
目标中增加FileName列;
Sorter中对LOC列进行排序;
f(x)中定义本地变量:
LAST_VALUE 上次取值 表达式赋值为CURRENT_VALUE
CURRENT_VALUE 本次取值 表达式赋值为LOC
f(x)中定义输出端口:
var_control 是否是同一个部门标识 表达式赋值为IIF(LAST_VALUE=CURRENT_VALUE,1,0)
FileName 文件名 表达式赋值为LOC.dat
TX中使用事务控制表达式:IIF(var_control=1,TC_CONTINUE_TRANSCATION,TC_COMMIT_BEFORE)
34.超越EDW,商品自动价格跟踪
1.获取数据:按条件抓取网页数据(如京东、淘宝等),输出html文件。可以使用Informatica Data Transformation或者自己用其他语言实现。
2.获取企业关系的数据:将获取的html文件转成xml文件。可以使用Informatica Data Transformation解析非结构化数据,将有价值的数据从非结构化数据中分离。
3.解析DT XML,输出二维结构,在PowerCenter中使用UDO和XML Parser两个转换组件实现。
4.分词、语义识别与专家知识集成,输出格式化数据。
分词:将所有业务的词语用空格分隔;
语义识别:维护字典。
35.pmcmd命令
pmcmd命令用于和集成服务交互,可以启动、停止、监控工作流、会话。
pmcmd命令的子命令包括:
starttask、startworkflow ---启动任务、工作流
stoptask、stopworkflow ---关闭任务、工作流
waittask、waitworkflow ---等待任务、工作流
aborttask、abortworkflow --- 终止任务、终止工作流
gettaskdetails、getworkflowdetails ---获取任务、工作流的详细信息
connect、disconnect、 ---连接、断开连接
exit、help、version ---退出、帮助、版本
pingtservice
getrunningSessiondetails、getservicedetails、 ---获取会话、服务的详细信息
getserviceproperties、
getSessionstatistics、
recoverworkflow --恢复工作流
setfolder、unsetfolder --设置、不设置 文件夹
setwait、 setnowait、 --设置等待、不等待
showsettings --显示设置
scheduleworkflow、unscheduleworkflow --计划、不计划工作流
pmcmd命令的模式包括:交互模式、脚本模式。
pmcmd命令启动workflow的示例:
pmcmd startworkflow -sv MyIntService -d MyDomain -u seller3 -p jackson -f SalesEast wf_SalesAvg
36.pmrep命令
pmrep命令用于和存储库服务交互,可以导入、导出相关对象,执行版本控制、注册新的插件、创建或更新数据库连接。
pmrep命令的子命令包括:
createdeploymentgroup、deletedeploymentgroup、addtodeploymentgroup、cleardeploymentgroup、deploydeploymentgroup --创建、删除、增加、清空部署组
applylable --应用标签
assignpermission
backup 备份
changeowner 更改所有者
checkin、findcheckout 签入、签出
cleanup
create、delete、run 创建、删除、运行
createconnect、updateconnect、deleteconnect、showconnectioninfo、switchconnection 创建、更新、删除连接、显示连接信息、交换连接
connect、getconnectdetails、listconnections、listuserconnections、killuserconnection 连接、获取连接详细信息、列出所有连接、列出所有用户连接、杀掉用户连接
createfolder、modifyfolder、deletefolder、deployfolder 创建、修改、删除文件夹
createlable、deletelable 创建、删除标签
objectimport、objectexport、deleteobject、listobjects、listobjectdependencies 导入、导出对象, 删除对象、列出对象、列出对象依赖
executequery 执行查询
exit、help、notify 退出、帮助
installabapprogram、uninstallabapprogram、generateabapprogramtofile 安装、卸载abapprogram、生成abapprogram到文件
listtablesbysess
massupdate
purgeversion
register、unregister、registerplugin、unregisterplugin 注册、未注册、注册插件、未注册插件
restore 转储
rollbackdeployment
truncatelog 截断日志
undocheckout
updateemailaddr 更新邮箱地址
updateseqgenvals 更新序列生成值
updatesrcprefix、updatetargprefix、 更新源预处理文件
updatestatistics 更新统计值
upgrade 升级
validate 校验
version 版本
pmrep命令的模式包括:交互模式、脚本模式。
pmrep命令备份存储库的示例:
--连接存储库
pmrep connect -r Production -n Administrator -x Adminpwd -d MyDomain -h Machine -o 8080
--备份存储库
pmrep backup -o c:\backup\Production_backup.rep
37.infasetup命令
infasetup命令用于管理域和节点,如节点IP变更、域数据的数据库变更等。
infaservice.sh shutdown 关闭域
infasetup.sh updateGatewayNode -cs 更新域
infaservice.sh startup 启动域
38.Mapping architect for viso
大量表对表的无转换抽取,可以使用Mapping architect for viso工具批量处理。
步骤:
创建Mapping模板,并导出为XML文件;
将模板导入Mapping architect for viso,并参数化;
打开Mapping architect for viso客户端,
首先单击Create Tempplate from Mapping XML按钮,选择上一步导出的XML文件作为模板,对其中所有的对象进行参数化:
1.打开Source EMP,将 “Transformation Name”和“Source Table”修改为$SRC$;
2.打开SQ,将 “Transformation Name”修改为SQ_$SRC$;
3.打开Target,将 “Transformation Name”和“Target Table”修改为$SRC$;
4.如果还有其他组件,都需要做类似修改;
5.双击Source EMP到SQ的连线Rule1,删除所有的默认端口,使用All Ports;
6.双击SQ到Target的连线Rule2,删除所有的默认端口,使用All Ports;
7.右键空白处,选择Properties,在弹出框中修改“Mapping Name“为“m_$SRC$”,将Mapping名参数化。
8.单击Validate Mapping Template按钮检查修改是否有效。如果修改有效,单击Publish Template按钮进行发布。
9.在目录下生成了两个文件是m_EMP.xml和m_EMP_param.xml,m_EMP_param.xml文件中每组
10.可以复制多个
准备源和目标;
在D客户端,源/目标目录下,选中要导出的对象,右键--》Export Objects,
将导出文件命名为Source.xml/Target.xml,并存放在..\MappingTemplate\tabledefs下。
批量生成Mapping/Session/Workflow。
在D客户端菜单Mapping--》Import Mapping Template,选择Mapping模板文件(m_EMP.xml),
点“Use Existing”,加载m_EMP_param.xml文件,修改参数$SRC$为真实的表名,点“Next”,Mapping批量创建成功。
可以选择是否继续创建Session/Workflow。
39.MX view语句
存储库存放在数据库的一个模式或用户下,由一组表和数据组成。
想要了解存储库的机制可以对该用户下的表进行查看:
在存储库用户手册中有关于Using Metadata Exchange(MX) views的说明;
也可以发邮件到[email protected],获取作者的经验;
还可以通过v$sql视图自行测试研究。
40.Powercenter与其他工具集成
Powercenter与外部系统集成的方式有:命令行接口(pmcmd命令及其子命令)、Web Service接口、API集成。
1.命令行接口(pmcmd命令及其子命令)
外部调度程序可以通过pmcmd命令及其子命令启动Workflow、中断Workflow、获取运行日志。
2.Web Service接口
Web Service Hub、Metadata Web Service接口提供了与pmcmd几乎相同的功能,可以帮助用户快速构建调度和监控系统。
3.Informatica Development Platform(IDP)
IDP是PowerCenter的二次开发平台,提供了大量API帮助用户进行二次开发。
IDP接口类型包括Java接口和C接口。
IDP接口种类有:
PowerExchange API:为PowerCenter增加新的数据接口支持,Java/C++接口。
Transformation API:为PowerCenter增加新的转换组件或新的功能,Java/C接口。
Design API:为PowerCenter增加新的客户端,Java接口。
Operation API:提供了外部程序与集成服务的交互能力,适合与第三方调度、监控系统集成,Java/C接口。
Operation API主要功能有:
连接、访问集成服务;
运行、管理工作流和Session;
监控或者报告运行状况;
查看日志;
错误处理等。
Operation API和pmcmd、Web Service接口在功能上有所重合,功能更加强大和灵活。
七、性能调优
性能调优可能涉及源、目标、操作系统、存储、网络等。
41.性能优化过程
性能调优是一个迭代过程,包括:建立性能基线、发现瓶颈、解决瓶颈、运行session并与基线比较,
反复循环,直到满足性能要求。
1.建立基线:包括记录性能基线和保留基线Mapping/Session。
2.发现瓶颈:
按照目标--》源--》Mapping--》Session/Workflow--》系统的顺序分析性能瓶颈。
官方建议顺序:目标--》源--》Mapping。
作者建议顺序:目标--》Mapping--》源。
3.解决瓶颈:
目标写瓶颈需要对目标调优;
源读瓶颈需要对源调优。
症状不等于原因,症状可能有多个因素。
目标数据库写入慢,可能的原因有:
数据库自身慢;
数据写入多;
提交间隔太小;
没有使用正确的写入方法;
网络问题等。
42.发现瓶颈
在Session Log中有关于性能的Thread Statistics信息(Busy Percentage)。
一个Mapping由3个线程执行,分别是Thread[Reader_*],Thread[Transf_*],Thread[Writer_*]。
Total Run time:工作时间,单位秒。
Total Idle time:空闲时间,单位秒。
Busy Percentage:忙时百分比 ,用于表示进程的繁忙程度。=(Total Run time - Total Idle time)/Total Run time*100
最繁忙的进程就是瓶颈点。
注意:Session Log可以在M客户端点“获取会话日志”打开,并可以另存为文本文件。
42.1 定位目标写瓶颈及调优
隔离目标写瓶颈的3中方法:
复制一个完全相同的Session;
将数据库写修改为文件写,用分隔符分隔文件,并将文件写在本地磁盘或者高速存储上;
在Target前增加一个Filter组件,将Filter条件设为false。
修改后,如果性能明显提升,那么就可以基本定位性能瓶颈在目标写。
1.关系型数据库目标写
定位后优化方法包括:
使用Bulk Load,对SQL Server或Sybase ASE有效,对Oracle和DB2无效;
使用外部Loader,要求DB有Loader接口(Oracle、Sysbase IQ);
在Session的Pre-SQL属性设置删除或Dsiable索引、约束,在Post-SQL重建或Rebuild\enable索引、约束;
提升Checkpoint、Commit间隔,需要增加回滚区和Redo空间;
使用PowerCenter Partition提供并行写能力;
优化目标数据库。
2.文本文件目标写
定位后优化方法包括:
尽量减少写的数据量;
使用PowerCenter Partition的并行写能力,并尽量不合并记录,Merge选项选择File List。
42.2 定位源读瓶颈及调优
隔离源读瓶颈的3中方法:
复制一个完全相同的Session;
在SQ组件后增加一个Filter组件,将Filter条件设为false,用于保证后续转换和写目标不会执行,只进行读操作。
修改后,如果性能没有明显提升,那么就可以定位性能瓶颈在源读。
1.关系型数据源读优化方式
定位后优化方法包括:
优化查询sql语句,查看sql执行计划,使用索引来替代对大表的全表扫描;
使用PowerCenter Partition,来读取数据库(Oracle、DB2)的分区表;
使用IPC协议,如果是Oracle数据库,且PowerCenter和数据库在一台服务器上,可以使用IPC协议进行读取;
使用专门的读接口,如Terdata数据库,使用Fastexport时性能优于ODBC。
2.文本数据源优化方式
定位后优化方法包括:
使用PowerCenter Partition并行读;
调整Line Sequential Buffer,保证Line Sequential Buffer能够容纳4~8行的数据。
在Session的属性页签,Collect Performance data属性,勾选后PowerCenter会自动收集详细的性能数据(Performance Counter)。
在M客户端日志栏可以看到Performance Counter(性能计数器),
并生成一个与Session Log同名,扩展名为".perf"的性能统计文件,并且可以由记事本打开,
内容为:转换名称,计数器名称,计数器值。
常见的计数器名称包括:
Lookup_rowsinlookupcache:值比较高时,Lookup组件有性能问题;
BufferInput_efficiency和BufferOutput_efficiency:值比Sources、Targets高时,提高DTM buffer pool size;
对应的Transformation可能为Aggregator、Rank、Joiner组件之一。
42.3 定位Mapping/Session瓶颈
消除源读和目标写瓶颈后,需要定位Mapping/Session瓶颈。
复制Session,在每个目标表前增加一个Filter组件,将Filter条件设为false;
如果性能没有明显的提升,则可以定位瓶颈在Mapping/Session。
42.4 定位系统瓶颈
I/O瓶颈:磁盘/存储性能。
内存瓶颈:I/O Cache,数据库内存分配,交换区Swap设置。
网络瓶颈:网络带宽,分布式存储,分布式计算。
43.Mapping调优
43.1 Transformation优化
1.优化Lookup组件
勾选“Lookup caching enabled”属性(启用缓存);
设置足够大的cache(避免产生I/O交换);
输出列尽可能少(占用内存少);
使用非连接的lookup(查询次数少);
多个连接条件时优先使用等值比较;
使用lookup替换joiner;
共享lookup cache;
同一个mapping中多个相同的lookup,自动共享lookup cache;
多个session中使用了相同的mapping,勾选“Lookup cache persistent”属性(启用持久缓存);
多个mapping中使用了相同的lookup,勾选“Lookup cache persistent”属性,并为“Cache File Name Prefix”赋值。
定制Lookup Sql Override,减少被读入的lookup中的数据。
2.优化Filter和Router组件
尽量将Filter前置(减少后续组件处理的数据量);
在条件中不要使用复杂表达式;
如果数据没必要传递到目标,可以使用Filter和Router组件将其过滤掉;
使用Router可以同时替换多个Filter。
3.优化Aggregator组件
使用简单列作为Group By 列;
使用Sorted Input选项(输入的数据是有序的);
使用表达式组件和更新策略组件替代汇总组件(不常用,Mapping难懂);
使用“Incremental Aggregation(增量聚合)”属性(W客户端--》Session属性--》Performance栏)。
4.优化Joiner组件
使用数据库的Join语句完成表的连接;
Master要选择小表;
勾选Sorted Input;
尽量使用Normal Join类型。
5.优化Sequence Generator组件
修改“Number of Cached Values”的属性值为1000或更大。
默认为0,即每行数据到达时查询存储库生成一个Next值;
设置为1000,即第1行数据到达时查询存储库批量生成1000个Next值,后续行就不需要再查询存储库了。
6.避免调用External Procedure组件
尽量避免每行数据都去调用一次存储过程,
尽量将其做成一个批处理一次性执行,
或者尽量减少调用次数。
43.2 列级别优化
1.析出通用逻辑
找出mapping中的通用逻辑,尽量减少其计算的次数。
2.最小次数的函数调用
减少函数调用次数;
使用操作符||来替换函数Concat。
3.数值类型与字符串
数值类型的计算性能要优于字符串,
在做Joiner或Lookup关联时,将关联字段从字符串转为数值类型再关联要优于直接使用字符串关联。
4.Char和Varchar类型的数据比较
Char类型保留末尾空格;
Varchar类型不保留末尾空格;
Varchar类型优于Char类型。
5.减少Mapping中的转换组件
每个组件都会耗费资源,减少或合并组件有利于性能提升。
43.3 其他方面的优化
1.单源读Mapping/Session
如果多个Mapping使用相同的数据源,将以将这多个Mapping合并为一个Mapping。
2.SQL Override优化
在SQ、Lookup、Target组件中可以使用SQL Override,即用调优后的SQL覆盖自动生成的SQL。
3.避免不必要的数据类型转换
保持同一个端口在各组件内类型一致,避免不必要的数据类型转换。
4.消除Transformation Error
保证流入的数据不会产生组件报错,报错信息将被写入Session Log。
44.Session调优
调优顺序:目标写--》源读--》Mapping--》Session
44.1 内存调优
设置DTM Buffer相关值;
设置转换组件Cache值。
44.2 PowerCenter高级特性支持高性能
1.PownerCenter Partition(并行)
提供的Session级别的并行处理能力。
2.Pushdown优化
将Mapping功能部分或全部转化数据库、数据仓库可运行的SQL,从而转移ETL服务器负载到数据库、数据仓库服务器。
类型包括:Source Side Pushdown、Target Side Pushdown、Full Pushdown。
3.使用PownerCenter grid
提供了ETL服务器得平行扩展能力,即ETL集群。
类型包括:Workflow on Grid、Session on Grid。
4.并行执行Workflow和Session
44.3 其他手段
1.提升Traget Commit Interval
提高提交间隔(默认10000),即减少提交次数(提交操作比较耗费性能),
同时单个事务的数据量增加,需要增加数据库的回滚段大小。
在W客户端--》Session属性--》General栏--》commit Interval(默认10000)设置。
2.Disable高精度
在W客户端--》Session属性--》Performance栏--》Enable high precesion不勾选。
3.降低Session的错误跟踪级别(Error Tracking)
在W客户端--》Session配置对象--》Error handling栏--》Override tracing(默认None)。
设置为verbose initialization、verbose data性能将下降。
45.SQL Override调优
在SQ、Lookup、Target、转换组件中都可以在SQL Override栏使用SQL语句,
SQL语句将被直接交给数据库执行,SQL语句的性能对PowerCenter影响很大。
八、PowerCenter Troubleshooting
PowerCenter Troubleshooting即解决PowerCenter问题、错误的能力。
提升Troubleshooting能力的4种方法:
掌握PowerCenter原理;
知道日志在哪儿,并查找日志;
查询Information Knowledge Base;
联系Informatica GCS(Global Customer Service)全球客户服务中心。
51.安装、启动过程的错误
1.安装过程:执行install.sh(Windows是install.exe)时,如果安装过程中失败,
需要在安装目录下查看两个日志:Informatica_9.6.1_Services_InstallLog.log、Informatica_9.6.1_Services.log。
客户端安装日志:Informatica_9.6.1_Client_InstallLog.log、Informatica_9.6.1_Client.log。
在日志中找到相关错误提示,典型的问题包括:端口被占用、数据库无法连接、错误的Java环境变量、JVM版本过低等。
2.启动过程:启动Informatica服务,需要运行Infaservice.sh startup命令(Windows是右键启动服务),如果启动过程发生错误,
需要查看$INFA_HOME/tomcat/logs下的日志catalina.out、exceptions.log、node.log。
控制台是基于Tomcat的一个应用。
3.存储库服务和集成服务启动过程:存储库服务和集成服务启动失败,需要在控制台上选择Log页签,检查相关的日志。
存储库服务和集成服务是基于C语言的应用,错误可能和环境变量、数据库版本等相关;
常见的错误有pmora*.dll或libpmora*.so无法调用成功,可能的原因如下:
PowerCenter安装不成功,所以文件不全;
数据库客户端安装不成功或者没有安装;
环境变量PATH(Windows平台)或LD_LIBRARY_PATH/LIBPATH(Unix平台)设置不正确;
PowerCenter是64位的,而安装的数据库客户端是32位的等版本兼容问题;
命令ldd。
如果存储库服务启动时遇到ORA-xxxxx的错误提示,请检查数据库(Oracle);
如果集成服务启动时遇到“Code Page Mismatch. Service Process is running in code page[UTF-8...322874”错误,设置环境变量INFA_CODEPAGENAME来解决。
52.开发过程的错误
在Mapping、Workflow开发过程中遇到的错误。
在D客户端中:可以查看Output窗口的日志。
保存Mapping时,如果提示对象有效,可以继续后续工作;
如果提示对象无效,向上检查详细的错误提示,根据提示定位并解决问题。
在W客户端中:可以查看Output窗口的日志。
处理Workflow中的相关错误有两个常规操作:选中Session右键,刷新映射、验证。
53.Session运行错误
session运行时发生错误,Log有3个位置:Session Log、Workflow Log、Integration Service Log。
1.Session Log:在M客户端,选中运行的Session右键,点“获取会话日志”。
2.Workflow Log:在M客户端,选中运行的Workflow右键,点“获取工作流日志”。
3.Integration Service Log:登陆工作台(Admin Console),选择Logs菜单,查看集成服务相关日志。
如果根据提示仍无法解决,可登录网站(mysupport.informatica.com),查询Informatica Knowledge Base知识库来解决。
仍无法解决时,及时联系Informatica GCS(Global Customer Service)。
Session通过pmdtm进程运行,该进程用C语言编写。
54.源读或目标写的错误
源读或目标写的错误与PowerCenter和数据库有关,错误信息一般会在Session Log中。
如果在Session Log看到ORA-xxxxx或DB2-xxxxx的错误信息,请检查数据库的连接、表和字段的定义、表中数据;
如果使用的是Loader接口,请在查看Session Log的同时检查Loader自身的日志;
如果是数据库锁引起的错误,需要检查数据库锁,并解除锁定;
如果使用ODBC作为数据接口,需要检查ODBC trace文件。
九、PowerCenter扩展能力
61.PowerExchange CDC(变化数据捕捉)
CDC(Change Data Capture)变化数据捕捉。
CDC的执行原理:通过读取数据库日志从而获得数据库表的增量数据。
PowerExchange CDC支持从各种数据库和操作系统获取数据增量,主要包括:Oracle、SQL Server、DB2、AS/400等。
61.1 PowerExchange CDC的3种模式
1.CDC Real-Time
定义:
CDC Real-Time通过CDC技术读取数据库日志,从而获得数据库的增量数据,
并对这些数据进行实时的计算或直接将这些数据写到目标数据库中。
特点:
能够获取数据库增量数据;
非常及时、甚至是准实时的数据同步,延时是秒级别的。
应用场景:
风险实时监控、数据实时分析、复制生产库作为查询库。
缺点:
因为是实时的,占用数据库资源比较多;
为满足实时计算,在设计时从实时Session考虑(没有从全库或整个Schema考虑),
因此一个实时Session将产生一个读取日志的进程,
有多个实时Session时,就可能出现多个进程对日志读的抢夺,反而降低性能。
2.CDC Batch
在执行CDC前需要先进行注册,注册的对象是表,即告诉PowerExchange CDC从日志中获取哪些表的增量数据。
定义:
CDC Batch的读日志进程根据注册的表不断的读取数据库日志中的增量数据,
但没有实时的将数据向下游传送,而是保存在了临时文件Condense File中,
当下游系统需要数据时,PowerCenter会按照定时或按需索取的方式,
从Condense File中查看是否有新的增量数据产生。
特点:
限制读取生产数据库日志的进程数量,降低对源系统的资源消耗。
应用场景:
对增量数据时效性要求不高的系统。
缺点:
时效性太差
3.CDC Continous
CDC Batch保证只有一个进程访问数据库日志,降低了对数据库资源的使用;
CDC Batch时效差的主要原因是,只有当关闭Condense File时,才向下游传送数据,关闭文件需要满足时间、文件大小的限制;
CDC Continous对CDC Batch进行改进,在Condense File不关闭时也可以向下游传送数据。
61.2 开放数据库CDC基本原理
1.Oracle
针对Oracle数据库的CDC实现采用的是Logminer API和Driect Read两种方式。
Logminer API是Oracle提供的日志管理接口,不需要在源数据库上安装任何插件,速度较慢;
Driect Read是直接读取Oracle日志的方式,加快了日志读取和解析的效率,需要在源数据库安装PowerExchange CDC。
2.UDB(db2)
针对DB2数据库的CDC实现采用的是db2readlog API。
61.3 CDC常见的一些讨论
1.占用资源问题(3%,5%,10%)
资源充足时不必关注CDC占用资源问题;
业务优先,CDC占用资源问题次之。
2.断点问题
PowerExchange CDC在PowerCenter端存放了Token文件,可以作为数据的断点。
每条数据跟随一个断点信息。
3.字符集问题
首先关注数据库字符集;
再关注操作系统字符集;
PowerExchange可以进行强制字符集转换(Datamap、dbmover.cfg)。
61.4 CDC Real-Time for Oracle安装配置
在数据库服务器上安装CDC Server,在ETL服务器和ETL客户端上安装CDC客户端。
PowerExchange CDC的安装包不区分服务器和客户端,但区分操作系统;
ETL客户端只有32位Windows版,所以在ETL客户端机器上只能安装PowerExchange CDC 32位Windows版。
安装前需要拿到PowerExchange CDC key,安装过程中一路点击“Next”即可。
服务器端的配置过程分为:Oracle数据库配置、PowerExchange CDC配置。
1.Oracle数据库配置
在Express模式下,数据库配置脚本存放在$PWX_HOME/ora_orad.sql文件中。
内容包括(操作应由DBA执行):
启动归档模式;
创建Oracle用户并为用户授权;
添加Supplemental Log。
2.PowerExchange CDC配置
PowerExchange CDC配置分为服务端配置和客户端配置。
PowerExchange CDC服务端配置:
1)配置dbmover.cfg文件
参数ORACLE_CAPTURE_TYPE用于选择Logminer模式(L),还是Express模式(D);
参数CAPI_CONNECTION用于连接,Logminer模式(ORCL),Express模式(ORAD);
参数LOGPATH用于指定PowerExchange的日志文件Detail.log的存放目录;
参数ORACLEID用于指定Oracle数据库的连接串;
2)配置参数文件pwxorad.cfg
3个段落后各有一个分号;
EPWD是加密密码,通过dtlcrypx命令产生;
READER MODE=ACTIVE时可以读取redo log的内容,
READER MODE=ARCHIVEONLY时仅仅读取Archive log中的内容。
3)配置环境变量
需要配置3个环境变量:PWX_HOME、PATH、LD_LIBRARY_PATH;
Oracle的相关环境变量也要添加到Profile中,以保证安装PowerExchange的用户可以使用Oracle的Library和可执行文件,并能读取Oracle中的数据。
4)启动PowerExchange和验证是否启动成功
启动PowerExchange使用命令dltlst node1;
验证是否启动成功使用命令dtlrexe prog=ping loc=node1;
PowerExchange CDC客户端配置:
1)配置dbmover.cfg文件
修改参数NODE=(服务器在本地的别名,TCPIP,服务器IP地址,服务器端口号2480)
检查是否能与服务器连通,使用命令dtlrexe prog=ping loc=node1
61.5 CDC定义注册组和添加捕获注册
1.在Windows开始菜单--》PowerExchange Navigator客户端--》选中“注册组”,右键--》添加注册组;
2.弹出“添加注册组”窗口,名称(输入数据库名)、位置(选择节点)、类型(选择数据库类型)、用户ID(输入system数据库用户)、
密码(输入system用户的密码)、集合标识符(输入dbmover.cfg文件ORACLEID参数的第一个属性COLLNAM1),点下一步;
3.进入“添加捕获注册-名称和表刷选”窗口,名称(输入表名)、架构(输入数据库用户名或Schema名)、表(输入表名),点下一步;
4.进入“添加捕获注册-表和列”窗口,选择要跟踪的列(选择所有列),点下一步;
5.进入添加捕获注册-类型”窗口,类型(选择同步)、状态(选择活动)、压缩(选择部分)、附件日志组名称(输入scott_dept)、勾选“立即执行DLL”,点完成;
PowerExchange将在正在注册的表上增加SUPPLEMENTAL LOG,
会自动执行类似语句"alter table scott.dept add SUPPLEMENTAL LOG group scott_dept(deptno,dname,loc) always;"
6.在PowerExchange Navigator的“资源浏览器”器中,看到新的注册组、提取组、应用组都叫Orcl;
7.双击“提取组”的Orcl,进行CDC测试,在“数据库行测试”窗口,数据库类型(选择CAPXRT)、位置(选择node1)、用户ID(system)、密码(system的密码)、提取(数据),点“执行”;
可以检查安装、配置是否正确,有SQL语句输出,则证明注册成功。
61.6 CDC Mapping开发及运行
1.导入数据源
“源--》Import from PowerExchange”,填写用户名(oracapt1)、密码,Source Type(选择ORACLE)、勾选CDC Datamaps,点“Connect”按钮,选择表,点“OK”。
导入后的源表增加DTL_开头的列。
2.创建目标表、Mapping与之前的用法相同
3.定义CDC数据源
W客户端--》连接--》Application--》New--》PWX_Oracle_CDC_Real_Time,
Location输入PowerCenter服务器端的dbmover.cfg文件中配置的节点名,
字符集选择UTF-8 encoding of Unicode,
Image Type选择有两个选项AI和BA,指的是DML语句的操作结果,一般选择AI。
AI(After Image):PowerCenter会返回Insert、Delete、Update执行结果的那条数据;
BA(Before and After Image):Insert、Delete与选择AI时没有区别,Update会返回更新前和更新后两条数据。
4.Session
为Session指定源和目标后即可执行。区别在于需要手工停止,否则一直运行,实时监控数据库端数据的变化及进行更新。
62.PowerCenter与SAP
Informatica开发了针对SAP的接口R/3、BW。
62.1 R/3、mySAP、ECC
R/3接口可以使PowerCenter通过ABAP、BCI、RFC/BAPI、IDOC和WebService与SAP双向交换数据。
PowerCenter访问SAP时,并非直接访问数据库层,而是访问SAP的应用层。
62.2 PowerCenter与BW
PowerCenter可以使用Open Hub Destination或者Open Hub Service抽取SPA BW的数据。
可以抽取的对象包括InfoCubes、DataStore Objects、InfoObjects和InfoSets。
Open Hub Service从各种BW数据对象中获取数据,并将数据放入一张SAP透明表中,PowerCenter再从透明表中直接获取数据。
SAP BW Service是创建在PowerCenter的控制台上的一个服务,通过SAP External System实现与PowerCenter的通信。
当PowerCenter抽取BW数据时,从外部触发SAP的Process Chain,再由Open Hub Service抽取SAP内部数据到透明表,
SAP通知SAP BW Service已完成SAP内部处理任务,PowerCenter可以从透明表抽取数据了。
63.PowerCenter与MPP数据库
MPP(Massively Parallel Processing)主要用于数据仓库中,数据分布存储在各个节点上,运算时将任务并行分散到多个服务器和节点上,
在每个节点上计算完成后,将各自部分汇总在一起得到最终的结果。
MPP数据库代表产品包括Greenplum、Teredata、Netezza等。
MPP分布式数据库读取和加载速度快,
PowerCenter支持Teredata的所有接口,包括:
FastLoad:快速向Teredata表加载数据,但要求表必须是空表;
FastExport:快速从Teredata数据库中读取数据的批量接口;
TPump:支持流式数据处理,但性能略慢;
MultiLoad:支持对Teredata数据进行Insert、Update、Delete、Upsert等批量操作。
Teredata Parallel Transporter:是Teredata为了简化Load接口提供的一种新的接口方式。
Pushdown for MPP功能:可以将mapping转化为MPP数据库的SQL语句,充分利用MPP数据库的分布式计算能力,减少数据移动。
64.PowerCenter与Hadoop
Hadoop是一个由Apache基金会开发的分布式系统基础架构,可以用来开发分布式程序,利用集群来运算和存储。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System)HDFS。
HDFS支持高容错性,可以在低廉的硬件上部署,高吞吐量来访问数据,支持超大数据集应用程序。
Hadoop框架的核心是HDFS和MapReduce。
HDFS为海量的数据提供了存储能力;MapReduce为海量的数据提供了计算能力。
PowerCenter对Hadoop提供了接口能力和PowerCenter on Hadoop。
64.1 接口能力
接口能力指PowerCenter访问Hadoop及其生态的能力,主要支持HDFS、HIVE、HBase和Prvotal HD HAWQ。
1.创建以文本为目标的mapping
2.在Workflow中创建Hadoop连接
“连接--》Application”,输入连接名“Hadoop_HDFS_Connection”,类型选择"Hadoop HDFS Connection",属性包括:
HDFS Connection URI:一般为hdfs://Namenode:Port
Hive Driver Name:Hive驱动名称org.apache.hive.jdbc.HiveDriver
Hive URL: jdbc:hive2://Namenode:Port/
Hadoop Distribution:选择Hadoop的发行版本
3.设置Session访问Hadoop
Session--》映射--》目标文件--》"Writers=HDFS Flat FIle Writer","Connections=Hadoop_HDFS_Connection",
在属性栏需要关注下列属性:
Output File Path:HDFS文件路径;
Reject File Path:PowerCenter服务器文件路径;
Generate And Load Hive Table:生成Hive Table的必选项;
Overwrite Hive Table:Hive table已存在时可以覆盖;
Hive Table Name:Hive table名字。
Hive是HDFS的一种shell,即为访问HDFS提供了一种类似SQL的Shell脚本。
PowerCenter生成Hive Table的过程是:
首先将文件传送到HDFS上,即将数据写入指定的HDFS目录中;
然后再将上一步目录中的数据转移到hive/warehouse/...目录下;
最后为此文件建立Hive Catalog。这时一个Hive table就创建完成了。
需要注意权限问题。
64.2 PowerCenter on Hadoop
PowerCenter on Hadoop是将mapping转化为MapReduce,然后通过Hadoop引擎执行MapReduce的过程。
即利用Hadoop集群的计算能力,又简化了MapReduce的开发,用以支持Hadoop平台的ETL程序开发。
PowerCenter将Mapping先转化为HQL(Hive SQL),再由Hive将HQL转化为MapReduce,最后由Hadoop引擎执行MapReduce。
65.元数据管理与业务术语管理
元数据定义:用于描述数据、内容、业务流程、服务、业务规则及组织信息系统的支持政策或为其提供上下文的信息。
元数据是关于数据的数据。
元数据分类:技术元数据、业务元数据、操作元数据。
技术元数据:提供有关数据的技术信息;
业务元数据:提供数据的业务背景;
操作元数据:提供关于数据使用方面的信息。
元数据的内涵是比较明确的,但是元数据的外延是无限扩展的。
使用Informatica元数据管理,需要在控制台中创建Metadata Manager Service。
Informatica元数据管理功能包括:元数据的血缘分析、元数据影响分析、业务数据管理等。
65.1 元数据的血缘分析
Metadata Manager提供了元数据的血缘分析功能,提供数据流过数据集成环境时的直观视图。
Metadata Manager从企业应用程序、数据库、平面文件、PowerCenter、数据建模工具及BI工具中采集元数据,并将采集到的元数据进行关系,以直观的方式进行展现。
血缘分析的常用功能包括:支持全局数据视图、解决数据质量问题、审计与合规性。
65.2 元数据影响分析
在变更字段类型、修改指标算法前对相关影响进行分析的工具。
65.3 业务数据管理
Business Glossary为定义和管理业务术语、沟通参考数据、链接、临时记录及备注的生命周期提供了集中管理点。
66.B2B data transformation
B2B data transformation支持结构化、非结构化和半结构化数据类型的转化,同时支持多个行业的数据标准。
非结构化:无适合的元数据对其进行全面描述,如PDF文件、Word文档等。
半结构化:可利用部分元数据对其进行描述,如EDI、COBAL衍生数据等。
结构化:可利用元数据明确定义,如XML标准、数据库表等。
B2B data transformation支持对非结构化和半结构化的文档进行转换、清洗,并整理为XML,交由PowerCenter读取XML并入库为结构化数据。
B2B data transformation内置大量的行业标准,包括:
跨行业:UN/EDIFACT、XBRL、RosettaNet、COBAL
医疗行业:HL7、HIPAA、NCPDP
金融行业:BAI、SWIFT、UNIFI、NACHA、SEPA、FIX、FIXML、FpML、Telekurs VDF、TWIST、ACORD、DTCC、OAGIS XML