六、實戰匯總
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=<Informatica server home>/ODBC7.1
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文件中每組<MAPPING>、</MAPPING>對表示一個Mapping。
10.可以復制多個<MAPPING>、</MAPPING>對,並修改“MAPPING NAME=m_表名”、“DESCRIPTION=m_表名”即可。
准備源和目標;
在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的說明;
也可以發郵件到PowerCenterbook@gmail.com,獲取作者的經驗;
還可以通過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組件有性能問題;
<Transformation>_errorrows:值非零時,修改Transformation的計算錯誤;
BufferInput_efficiency和BufferOutput_efficiency:值比Sources、Targets高時,提高DTM buffer pool size;
<Transformation>_readfromdisk和<Transformation>_writetodisk:值非零時,提升Data Cache和Index Cache,
對應的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/<Database Name>
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