版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 WISCOM-SDB-Wxxxx校園信息化建設(shè)數(shù)據(jù)集成ODI部署方案及操作指南文件編號(hào)WISCOM-SDB-Wxxxx版本號(hào)1.0發(fā)布時(shí)間2007-08-24編寫(xiě)人陳鋒文件審核表文件名稱(chēng):ODI部署方案及操作指南編寫(xiě)人:陳鋒編寫(xiě)時(shí)間:2007-08-24版本號(hào):V1.0相關(guān)負(fù)責(zé)人審核:職務(wù)簽字簽字日期 部門(mén)經(jīng)理 相關(guān)批準(zhǔn)人簽字:職務(wù)簽字簽字日期部門(mén)主管用戶主管修訂紀(jì)錄修改人修改原因修改批準(zhǔn)人修改完成日期版本號(hào)陳鋒新建2007/08/24目錄WISCOM-SDB-Wxxxx1目錄41引言51.1 編寫(xiě)目的51.2 服務(wù)對(duì)象52產(chǎn)品部署52.1 部署方案52.2 部署約定62.3 ODI的安裝和
2、配置72.3.1 ODI的安裝72.3.2 ODI的配置113 ODI操作流程203.1 ODI全量抽取的操作流程203.1.1 一個(gè)源到一個(gè)目標(biāo)(1 V 1)203.1.2 多個(gè)源到一個(gè)目標(biāo)(n V 1)573.2 ODI增量抽取的操作流程613.2.1 利用觸發(fā)器作增量抽取613.2.2 利用標(biāo)志位作增量抽取674 數(shù)據(jù)庫(kù)的JDBC及訪問(wèn)權(quán)限714.1 連接數(shù)據(jù)庫(kù)的JDBC及其URL714.2 訪問(wèn)權(quán)限725 ODI Metadata Navigator的配置735.1 Metadata Navigator的安裝745.2 Metadata Navigator配置746 常見(jiàn)錯(cuò)誤及解決方法
3、741引言1.1 編寫(xiě)目的ODI部署方案及操作指南描述應(yīng)用ODI的操作過(guò)程和操作方法,供工程人員實(shí)施業(yè)務(wù)系統(tǒng)數(shù)據(jù)集成和ODI培訓(xùn)使用。1.2 服務(wù)對(duì)象本文檔的讀者對(duì)象和閱讀范圍:ODI技術(shù)支持工程師:熟練操作ODI進(jìn)行業(yè)務(wù)數(shù)據(jù)整合;工程項(xiàng)目經(jīng)理和數(shù)據(jù)集成實(shí)施工程師:熟練操作ODI進(jìn)行業(yè)務(wù)數(shù)據(jù)整合,結(jié)合學(xué)校應(yīng)用需求完成數(shù)據(jù)集成的操作。2產(chǎn)品部署2.1 部署方案l ODI支持大多數(shù)數(shù)據(jù)庫(kù)的數(shù)據(jù)集成,Oracle,SQL server,DB2,MySql,Access,Excle等等,都能通過(guò)ODI進(jìn)行數(shù)據(jù)同步操作。l ODI部署在特定的主機(jī)上,各業(yè)務(wù)系統(tǒng)和共享庫(kù)通過(guò)DBlink與ODI服務(wù)器連接起
4、來(lái)。l ODI工作的主存儲(chǔ)庫(kù)和工作資料庫(kù)存儲(chǔ)在某個(gè)數(shù)據(jù)庫(kù)上(可以是Oracle,也可是其它的數(shù)據(jù)庫(kù)),這個(gè)數(shù)據(jù)庫(kù)可以在ODI服務(wù)器上,也可以在其它機(jī)器上。注:ODI需要在JAVA運(yùn)行環(huán)境下工作,ODI服務(wù)器要先安裝jdk1.4.2及以上版本。不同數(shù)據(jù)庫(kù)的DBlink不一樣,同時(shí),還要注意所連接的服務(wù)和端口號(hào)是否開(kāi)啟,確保DBlink的解析。為確保ODI的運(yùn)行效率和便于維護(hù),存儲(chǔ)ODI主存儲(chǔ)庫(kù)和資料庫(kù)的oracle數(shù)據(jù)庫(kù)最好是安裝在ODI服務(wù)器上。2.2 部署約定在ODI的操作過(guò)程中需要?jiǎng)?chuàng)建多種類(lèi)型的對(duì)象,建議在進(jìn)行操作前制定命名規(guī)則??梢詤⒖既缦乱?guī)則:類(lèi)型命名規(guī)則備注數(shù)據(jù)庫(kù)服務(wù)器系統(tǒng)名稱(chēng)首字母
5、例如:TSG(表示圖書(shū)館)邏輯架構(gòu)LOG_開(kāi)頭LOG_TSG模型MOD_開(kāi)頭MOD_TSG項(xiàng)目PRO_開(kāi)頭PRO_TSG_TO_GXK接口INT_開(kāi)頭INT_TSG_TO_GXK包PKG_開(kāi)頭PKG_TSG_TO_GXK物理代理agent_開(kāi)頭agent_sztz邏輯代理logic_物理代理logic_agent_sztz注:為保證ODI操作的順利進(jìn)行,建議除代理外,其它對(duì)象的命名全部采用英文大寫(xiě)格式。2.3 ODI的安裝和配置ODI需要在java環(huán)境下運(yùn)行,在安裝ODI之前,首先要安裝JDK1.5。2.3.1 ODI的安裝運(yùn)行setup.exe2.3.2 ODI的配置 創(chuàng)建OD
6、I的資料庫(kù)用戶資料庫(kù)分為主存儲(chǔ)庫(kù)和工作資料庫(kù),是ODI操作和運(yùn)行的存儲(chǔ)區(qū)域。在Oracle數(shù)據(jù)庫(kù)下創(chuàng)建用戶,依次執(zhí)行如下語(yǔ)句:create user snpm(主存儲(chǔ)庫(kù)用戶) identified by oracle(主存儲(chǔ)庫(kù)用戶口令)grant connect, resource to snpmcreate user snpw(工作資料用戶) identified by oracle(工作資料用戶口令)grant connect, resource to snpw 創(chuàng)建主存儲(chǔ)庫(kù)Oracle Data Integrator > Repository Management &
7、gt;Master Repository Creation然后填入相應(yīng)信息:Driver:oracle.jdbc.driver.OracleDriverURL:jdbc:oracle:thin:localhost:1521:orclUSER:上一步創(chuàng)建的主存儲(chǔ)庫(kù)用戶Password:上一步創(chuàng)建的主存儲(chǔ)庫(kù)用戶口令Technology:主存儲(chǔ)庫(kù)所在的數(shù)據(jù)庫(kù)類(lèi)型Language:主存儲(chǔ)庫(kù)使用的語(yǔ)言點(diǎn)擊“OK”創(chuàng)建主存儲(chǔ)庫(kù)注:這里,創(chuàng)建存儲(chǔ)庫(kù)的oracle是在ODI服務(wù)器上。否則,URL需改為:jdbc:oracle:thin:ip地址:端口號(hào):SID等待主存儲(chǔ)庫(kù)的創(chuàng)建,直至創(chuàng)建成功:
8、連接主存儲(chǔ)庫(kù)Oracle Data Integrator > Topology Manager創(chuàng)建新的主存儲(chǔ)庫(kù)連接:填入相應(yīng)信息Login Name:oracle_master_repUser:SUPERVISOR(必須是此用戶名)Password:SUNOPSIS(必須是此口令)主資料庫(kù)連接信息:USER:上一步創(chuàng)建的主存儲(chǔ)庫(kù)用戶Password:上一步創(chuàng)建的主存儲(chǔ)庫(kù)用戶口令Driver:oracle.jdbc.driver.OracleDriverURL:jdbc:oracle:thin:localhost:1521:orcl 創(chuàng)建工作資料庫(kù)Topology ->
9、 Repositories -> Work repositories新建工作資料庫(kù):填寫(xiě)下述工作資料庫(kù)連接信息:Name:工作資料庫(kù)連接名稱(chēng)Technology:資料庫(kù)所在數(shù)據(jù)庫(kù)類(lèi)型Instance/dblink(Data Server):Oracle DB Service_NameUser:創(chuàng)建的工作資料庫(kù)用戶Password:創(chuàng)建的工作資料庫(kù)用戶口令Tab JDBC -> JDBC Driver:Tab JDBC -> URL JDBC:點(diǎn)擊“OK”點(diǎn)擊“OK”以后,出現(xiàn)工作資料庫(kù)定義框:ID:注意不同的工作資料庫(kù)的ID不能重復(fù)Type:選擇下拉菜單中的一項(xiàng)Name:工作
10、資料庫(kù)名稱(chēng)Password:進(jìn)入此工作資料庫(kù)的口令,可以不設(shè)置“OK”以后等待工作資料庫(kù)的創(chuàng)建 連接工作資料庫(kù)Oracle Data Integrator > Designer新建工作資料庫(kù)連接:填入連接信息Login Name:自定義的工作資料庫(kù)連接名稱(chēng)User:SUPERVISORPassword:SUNOPSIS(如果在Topology中修改了口令,需要填入修改后的口令)填入主資料庫(kù)信息User:創(chuàng)建的主存儲(chǔ)庫(kù)用戶Password:創(chuàng)建的主存儲(chǔ)庫(kù)用戶密碼Driver:URL:填入工作資料庫(kù)信息Work Repository Name:工作資料庫(kù)名稱(chēng)“OK”后,進(jìn)入De
11、signer模塊至此,ODI的基本配置已經(jīng)完成,可以通過(guò)Topology和Designer兩個(gè)模塊進(jìn)行相應(yīng)的操作了。3 ODI操作流程O(píng)DI的操作分為全量操作和增量操作兩類(lèi),全量操作就是將源中的所有數(shù)據(jù)同步到目標(biāo)中去,增量則是只捕獲源中變化的數(shù)據(jù),再同步到目標(biāo)數(shù)據(jù)存儲(chǔ)中。這里分情況介紹ODI的操作流程。3.1 ODI全量抽取的操作流程3.1.1 一個(gè)源到一個(gè)目標(biāo)(1 V 1)先介紹源數(shù)據(jù)來(lái)源于一個(gè)表(或者視圖和其它的存儲(chǔ)形式)的情況。下面的例子是將SQL Server中的一個(gè)視圖某些字段全量抽取至Oracle數(shù)據(jù)庫(kù)中的一張表中。源數(shù)據(jù)信息:源所在主機(jī)IP:9數(shù)據(jù)庫(kù):SQL
12、 Server 2000數(shù)據(jù)庫(kù)名(DatabaseName):sztz數(shù)據(jù)庫(kù)端口:1433用戶:sa密碼:*源:視圖VIEW_personItemlist目標(biāo)數(shù)據(jù)信息:目標(biāo)所在主機(jī)IP:1數(shù)據(jù)庫(kù):Oracle SID:urpdb 端口:1521用戶:usr_gxsj密碼:*目標(biāo):表T_SZTZ_DEKTXF 創(chuàng)建topology結(jié)構(gòu)(1)創(chuàng)建物理體系結(jié)構(gòu)登錄Topology插入物理體系結(jié)構(gòu):技術(shù)>oracle>右鍵oracle>插入數(shù)據(jù)庫(kù)服務(wù)器輸入名稱(chēng)(大寫(xiě)),實(shí)例/Dblink:service_name(Oracle客戶端目錄netwo
13、rkadmintnsnames.ora)用戶名(需要建立連接的oracle用戶庫(kù))密碼注:這里首先需要在Oracle客戶端的tnsnames.ora文件中添加service_name:urpdb_1,指向目標(biāo)oracle數(shù)據(jù)庫(kù)。設(shè)置JDBC:點(diǎn)擊jdbc標(biāo)簽:(下圖)設(shè)置JDBC驅(qū)動(dòng)程序:oracle.jdbc.driver.OracleDriverURL:jdbc:oracle:thin:IP : 端口 : SID“確定”在彈出的窗口中設(shè)置物理架構(gòu):在架構(gòu)(架構(gòu)),和架構(gòu)(工作架構(gòu))中選定要連接的oracle數(shù)據(jù)庫(kù)用戶?!按_定”(對(duì)于彈出的窗口要求指定上下文,可以忽略
14、)這樣就創(chuàng)建了oracle數(shù)據(jù)庫(kù)的物理架構(gòu)。創(chuàng)建sqlserver的物理體系結(jié)構(gòu)右鍵Microsoft SQL Server>插入數(shù)據(jù)庫(kù)服務(wù)器輸入數(shù)據(jù)庫(kù)服務(wù)器名稱(chēng)服務(wù)器:連接的sqlserver庫(kù)名(這里連接的是sztz庫(kù))用戶名密碼點(diǎn)擊JDBC標(biāo)簽輸入JDBC驅(qū)動(dòng)程序:com.microsoft.jdbc.sqlserver.SQLServerDriverJDBC URL:jdbc:microsoft:sqlserver:/IP : 端口; DatabaseName=庫(kù)名注:這里要確定已將SQL Server的JDBC驅(qū)動(dòng)下載并保存到ODI安裝目錄driver下?!按_定”創(chuàng)建物理架構(gòu):
15、設(shè)置數(shù)據(jù)庫(kù)(目錄),所有者(架構(gòu)),數(shù)據(jù)庫(kù)(工作目錄),所有者(工作架構(gòu))“確定”,完成sqlserver物理體系結(jié)構(gòu)的創(chuàng)建。(2)創(chuàng)建邏輯體系結(jié)構(gòu)進(jìn)入“邏輯體系結(jié)構(gòu)”技術(shù)>右鍵oracle>插入邏輯架構(gòu)創(chuàng)建邏輯架構(gòu)指定名稱(chēng)物理架構(gòu):選定剛才創(chuàng)建的oracle物理架構(gòu)(T_URPDB.USR_GXSJ)“確定”技術(shù)>右鍵Microsoft SQL Server>插入邏輯架構(gòu)指定名稱(chēng)物理架構(gòu):選定剛才創(chuàng)建的Microsoft SQL Server物理架構(gòu)“確定”,完成邏輯架構(gòu)的創(chuàng)建 模型登錄Designer(1)創(chuàng)建文件夾點(diǎn)擊左上角圖標(biāo),添加文件夾輸入名稱(chēng)(
16、SZTZ_TO_URPDB)(2)插入模型右鍵剛創(chuàng)建的文件夾>插入模型插入sztz模型填入:名稱(chēng)技術(shù):Microsoft SQL Server邏輯架構(gòu):為sztz創(chuàng)建的邏輯架構(gòu)名稱(chēng)點(diǎn)擊“反向”標(biāo)簽選定“上下文”:Global“要進(jìn)行反向工程的對(duì)象的類(lèi)型”:若要反向視圖,需選定“查看”點(diǎn)擊“選擇性反向”標(biāo)簽依次選定“選擇性反向”,“要進(jìn)行反向操作的對(duì)象”選擇需要反向的表或視圖?!按_定”,完成MOD_SZTZ模型的創(chuàng)建。右鍵SZTZ_TO_URPDB文件夾>插入模型輸入名稱(chēng),選定技術(shù),邏輯架構(gòu)“反向”標(biāo)簽:“選擇性反向”標(biāo)簽:選擇需要反向的表,“確定”,完成MOD_URPDB的創(chuàng)建。3
17、.1.1.3 項(xiàng)目(1)創(chuàng)建項(xiàng)目Designer->項(xiàng)目,點(diǎn)擊插入項(xiàng)目圖標(biāo),在項(xiàng)目對(duì)話框的“定義”標(biāo)簽下輸入項(xiàng)目名稱(chēng):(2)導(dǎo)入知識(shí)模塊(Knowledge Module,簡(jiǎn)稱(chēng)KM)導(dǎo)入反向工程知識(shí)模塊(RKM)選擇KM導(dǎo)入文件夾:ODI安裝路徑oraclediimpexp:“確定”,完成RKM的導(dǎo)入。其他KM按照同樣的方法導(dǎo)入。(3)接口PRO_SZTZ_TO_URPDB>第一個(gè)文件夾>右鍵“接口”>插入接口輸入接口名稱(chēng),選擇“臨時(shí)區(qū)域與目標(biāo)區(qū)域不同”,在下拉菜單中選擇目標(biāo)的邏輯架構(gòu)。“關(guān)系圖”標(biāo)簽從左邊模型MOD_SZTZ中將view_personItemList視
18、圖拖入右邊數(shù)據(jù)源框中,再將MOD_URPDB中的T_SZTZ_DEKTXF拖到數(shù)據(jù)目標(biāo)框中建立“映射”關(guān)系在目標(biāo)數(shù)據(jù)存儲(chǔ)中,選中zt這一行,在窗口下面的映射編輯框中編輯,選擇“表達(dá)式編輯器”雙擊左邊對(duì)應(yīng)的topic,在右邊的編輯框中出現(xiàn)“VIEW_PERSONITEMLIST."topic"”,“確定”,建立了topic到zt的映射關(guān)系。在編輯框的下方,選定“臨時(shí)區(qū)域”(推薦每個(gè)屬性的映射關(guān)系都這樣設(shè)置)其余的屬性列都按照這種方式建立映射關(guān)系。分別選定目標(biāo)數(shù)據(jù)存儲(chǔ)中的xh,ztbh,將它們?cè)O(shè)置為主鍵,如下圖:“流”標(biāo)簽選定數(shù)據(jù)源,在下方設(shè)置LKM選定目標(biāo)存儲(chǔ),選擇IKM,并
19、將FLOW_CONTROL設(shè)置為“否”“確定”,完成接口的創(chuàng)建,執(zhí)行接口,第一個(gè)文件夾>接口>執(zhí)行INT_SZTZ_TO_URPDB這將啟動(dòng)一個(gè)會(huì)話:“確定”點(diǎn)擊operator圖標(biāo)查看執(zhí)行情況查看,接口執(zhí)行成功。在oracle數(shù)據(jù)目標(biāo)T_SZTZ_DEKTXF中查看,發(fā)現(xiàn)數(shù)據(jù)已經(jīng)從數(shù)據(jù)源同步到了目標(biāo)中。 創(chuàng)建包第一個(gè)文件夾>右鍵“包”>插入包在新窗口中給包命名“PKG_SZTZ_TO_URPDB”“關(guān)系圖”標(biāo)簽托拽左邊項(xiàng)目>第一個(gè)文件夾->接口INT_SZTZ_TO_URPDB的關(guān)系圖框中,再將工具箱>internet>odise
20、ndmail拖到關(guān)系圖框中,選擇“成功時(shí)的下一個(gè)步驟”標(biāo)簽,從INT_SZTZ_TO_URPDB到odisendmai1:(也可以是直接將接口拖到關(guān)系圖中)。選中關(guān)系圖中的odisendmail1,在下面的編輯框中填寫(xiě)“郵件服務(wù)器”,“發(fā)件人”,“收件人”“確定”,完成包的創(chuàng)建。 方案第一個(gè)文件夾>包>右鍵PKG_SZTZ_TO_URPDB>生成方案“確定”,生成方案。 代理插入物理代理進(jìn)入Topology>物理體系結(jié)構(gòu)>右鍵“代理”>插入代理輸入代理名稱(chēng):agent_sztz主機(jī):創(chuàng)建的主資料庫(kù)所在的主機(jī)IP地址(這里是10.1
21、68.101.91)端口號(hào):20910(可根據(jù)代理的不同設(shè)置不同的端口號(hào))“確定”,完成物理代理的設(shè)置。插入邏輯代理進(jìn)入Topology>邏輯體系結(jié)構(gòu)>右鍵“代理”>插入邏輯代理輸入邏輯代理名:agent_sztz_logic選擇對(duì)應(yīng)的物理代理“確定”,完成。 計(jì)劃第一個(gè)文件夾>包>PKG_SZTZ_TO_URPDB>方案>PKG_SZTZ_TO_URPDB版本001>計(jì)劃>插入計(jì)劃設(shè)置“上下文”,“代理”,“日志級(jí)別”(設(shè)為5)設(shè)置執(zhí)行周期:這里設(shè)為每小時(shí)的55分執(zhí)行方案?!皥?zhí)行循環(huán)”標(biāo)簽如果選擇“無(wú)”,則重復(fù)頻率就是“定義
22、”標(biāo)簽中“執(zhí)行”指定的重復(fù)頻率,執(zhí)行時(shí)間就是“定義”標(biāo)簽中“每小時(shí)”指定的具體時(shí)間。如果選擇“多次”,重復(fù)頻率是多次的設(shè)定確定的。這里選擇“無(wú)”:“確定”,計(jì)劃編輯完成。 啟動(dòng)代理(1)修改odiparams.bat文件打開(kāi)oracledi安裝目錄binodiparams.bat將文件中的下屬部分加上REM(SNP 或者是 ODI)rem set SNP_SECU_DRIVER=org.hsqldb.jdbcDriverrem set SNP_SECU_URL=jdbc:hsqldb:hsql:/localhostrem set SNP_SECU_USER=sarem set S
23、NP_SECU_ENCODED_PASS=rem set SNP_SECU_WORK_REP=WORKREPrem set SNP_USER=SUPERVISORrem set SNP_ENCODED_PASS=LELKIELGLJMDLKMGHEHJDBGBGFDGGH復(fù)制并改為如下:set SNP_SECU_DRIVER=oracle.jdbc.driver.OracleDriver(資料庫(kù)所使用數(shù)據(jù)庫(kù)的JDBC Driver,Topology->存儲(chǔ)庫(kù)->Master Repository定義框->連接對(duì)話框中JDBC Driver)set SNP_SECU_URL=
24、jdbc:oracle:thin:localhost:1521:orcl (資料庫(kù)所使用數(shù)據(jù)庫(kù)的JDBC URL,Topology->存儲(chǔ)庫(kù)->Master Repository定義框->連接對(duì)話框中JDBC URL)set SNP_SECU_USER=snpm(Master Repository User)set SNP_SECU_ENCODED_PASS= b9yXHa6nJqIRnJb5zS9.ZrLqyset SNP_SECU_WORK_REP=WORKREP1(工作資料庫(kù)名稱(chēng))set SNP_USER=SUPERVISOR(資料庫(kù)管理員)set SNP_ENCODE
25、D_PASS= g0yHHORMUkKwq4Qn,Lg82Zi其中兩行PASS的值是通過(guò)“ODI安裝路徑oracledibinagent encode oracle”得到的值(oracle是snpm的登錄密碼)保存odiparams.bat文件,退出。(2)啟動(dòng)agentWindows>運(yùn)行>cmd進(jìn)入odi安裝目錄bin,執(zhí)行命令:agentscheduler “-port=20910” “-name=agent_sztz” “-v=5”port是指物理代理的端口name是指物理代理的名稱(chēng)(區(qū)分大小寫(xiě))v是指日志等級(jí),5是最詳細(xì)級(jí)別注:命令行中的引號(hào)要用半角的。命令執(zhí)行后,會(huì)出現(xiàn)
26、如下顯示:Agent運(yùn)行成功,待到計(jì)劃中設(shè)定的時(shí)間一到,agent會(huì)自動(dòng)執(zhí)行包PKG_SZTZ_TO_URPDB。至此,一個(gè)源到一個(gè)目標(biāo)的ODI全量操作已經(jīng)全部完成。3.1.2 多個(gè)源到一個(gè)目標(biāo)(n V 1)3.1.1中針對(duì)一個(gè)源到一個(gè)目標(biāo)的情況作了詳細(xì)的介紹,如果源數(shù)據(jù)來(lái)自多個(gè)表或者是視圖,操作的過(guò)程和1 V 1的情況也差不多。唯一的差別在創(chuàng)建接口的地方 (3)接口這里只對(duì)這一步作簡(jiǎn)單的介紹,其它的步驟可完全參照3.1.1的詳細(xì)介紹。源:temp1(sno,sex,subject) temp2(sno,name,age)需要?jiǎng)?chuàng)建一個(gè)目標(biāo)表temp3(sno,name,sex,s
27、ubject,age),表中的數(shù)據(jù)來(lái)自temp1和temp2。創(chuàng)建接口:“關(guān)系圖”:從左邊模型中將源表temp1和temp2拖拽到關(guān)系圖的“源”框中,再建立兩個(gè)表中sno字段的連接(方法:選中temp1中的sno,左鍵點(diǎn)中,拖拽到temp2的sno,松開(kāi)鼠標(biāo)左鍵),如圖所示:分別選中源中兩個(gè)表的表頭,右鍵>添加到目標(biāo)為目標(biāo)表設(shè)置“名稱(chēng)”、“上下文”、“工作架構(gòu)”注:如果目標(biāo)表由ODI自動(dòng)生成,則目標(biāo)表的命名一定要英文大寫(xiě)編輯映射,將各字段的執(zhí)行選在“臨時(shí)區(qū)域”,將sno設(shè)為主鍵“流”選中“目標(biāo)臨時(shí)區(qū)域”,設(shè)置IKM,將FLOW_CONTROL設(shè)為“否”,將“CREATE_TAGE_TAB
28、LE”設(shè)為“是”“確定”,執(zhí)行接口,在“Operator”里查看執(zhí)行成功,在Oracle里查看,數(shù)據(jù)已經(jīng)同步過(guò)來(lái)。源是三個(gè)或三個(gè)以上表和視圖的情況和上述的執(zhí)行過(guò)程基本一樣。3.2 ODI增量抽取的操作流程增量操作與全量操作的不同在于增量只同步變化的數(shù)據(jù),它的操作和全量操作的差別并不太大。3.2.1 利用觸發(fā)器作增量抽取這個(gè)操作和3.1.1中的大部分操作基本相同,只是在“ 模型”中加入一些步驟,并且在“ (3)接口”中修改一些步驟即可??蓞⒄?.1.1和下面介紹的一些操作,結(jié)合起來(lái)。下面的例子介紹將模型oracle_cf中channel表的變化數(shù)據(jù)同步到模型tgt_w
29、h的表tgt_channels中去,兩個(gè)表的結(jié)構(gòu)相同。配置JKM編輯模型ORACLE_SH 的日記記錄,選擇簡(jiǎn)單日記記錄模式,并選擇 JKM Oracle Simple:?jiǎn)⒂肅DCODI 提供簡(jiǎn)易的界面來(lái)啟用 CDC,包括下面的步驟:添加到 CDC, 訂閱 CDC,啟動(dòng)日記。首先在表CHANNELS 的彈出菜單中選擇添加到 CDC:點(diǎn)擊刷新按鈕可以看到表CHANNELS的圖表發(fā)生了變化,出現(xiàn)了黃色的小時(shí)鐘:接下來(lái)從表CHANNELS 的彈出菜單中選擇啟動(dòng)日記:?jiǎn)?dòng)日記的時(shí)候可以輸入訂閱的用戶名。在彈出的窗口中錄入訂閱的用戶名,如 SUNOPSIS,點(diǎn)擊添加訂戶:如果變化數(shù)據(jù)有多個(gè)異步消費(fèi)者,則
30、可以添加多個(gè)訂戶。點(diǎn)擊確定完成:這將會(huì)啟動(dòng)一個(gè)會(huì)話,請(qǐng)?jiān)?Operator 中查看會(huì)話是否成功完成。這個(gè)會(huì)話會(huì)在數(shù)據(jù)庫(kù)中創(chuàng)建一些對(duì)象:CDC 的數(shù)據(jù)字典表(SNP開(kāi)頭),日記表和視圖(通常是J$河JV$開(kāi)頭),trigger(通常以T$開(kāi)頭)。完成之后表的圖標(biāo)上的小時(shí)鐘將變成綠色:創(chuàng)建接口將變化數(shù)據(jù)同步到目標(biāo)(請(qǐng)對(duì)比 (3)接口)在項(xiàng)目 project1 中創(chuàng)建接口 INT_CDC在關(guān)系圖中將 ORACLE_cf 中的 CHANNEL 添加到源,將 TARGET_TGTWH 中的 CHANNEL 添加到目標(biāo)數(shù)據(jù)存儲(chǔ),并自動(dòng)映射。然后選中源數(shù)據(jù)存儲(chǔ),選中“僅以進(jìn)行日記記錄的數(shù)據(jù)”,
31、注意到選中該選項(xiàng)之后,源表會(huì)自動(dòng)增加幾個(gè) JRN 開(kāi)頭的列。而且 ODI 會(huì)自動(dòng)添加一個(gè)過(guò)濾器。注:這里源表和目標(biāo)表的結(jié)構(gòu)完全一樣。實(shí)際操作中可以將源表的某些字段變化捕獲到目標(biāo),并不一定需要所有的字段。過(guò)濾器的內(nèi)容是針對(duì)訂戶的,下面的例子表示當(dāng)前接口將消費(fèi)SUNOPSIS訂戶的數(shù)據(jù):然后配置好 LKM(使用DBLINK),IKM(使用 Oracle Increamental Update),和 CKM?!按_定”,保存接口。測(cè)試能否捕獲變化數(shù)據(jù):插入一條數(shù)據(jù)至源數(shù)據(jù)channels中,查看“日記數(shù)據(jù)”,可以看到新插入的一條數(shù)據(jù)已經(jīng)被捕獲。同樣,在oracle_cf對(duì)應(yīng)的數(shù)據(jù)庫(kù)sh中,日記表sh.
32、j$channels中也有了這條新插入的數(shù)據(jù)。執(zhí)行接口,只有這條變化的數(shù)據(jù)同步到了目標(biāo)表tgt_channnels中。再查看日記數(shù)據(jù)和J$channels表,日記數(shù)據(jù)已經(jīng)不存在了。上述就是利用觸發(fā)器實(shí)現(xiàn)數(shù)據(jù)增量抽取的核心過(guò)程,其它的步驟參照3.1.1即可。3.2.2 利用標(biāo)志位作增量抽取這種增量同步的方式也稱(chēng)為Consistent_CDC,它的操作與觸發(fā)器增量同步差別并不大,只是在內(nèi)部實(shí)現(xiàn)機(jī)制上稍有不同,這里僅僅介紹它的JKM的選擇和接口的實(shí)現(xiàn)。配置JKM編輯模塊 ORACLE_SH 的日記記錄屬性。將日記記錄模式修改為一致性設(shè)置。然后選擇 JKM Oracle Consistent.Trai
33、ning_Project啟動(dòng)日記這里的操作和觸發(fā)器增量操作的步驟相同,依次為:添加到CDC>訂閱>啟動(dòng)日記“啟動(dòng)日記”會(huì)生成一個(gè)會(huì)話,在數(shù)據(jù)庫(kù)中生成一些對(duì)象,內(nèi)容與觸發(fā)器增量操作中生成的對(duì)象類(lèi)似。創(chuàng)建接口接口的創(chuàng)建也與3.2.1類(lèi)似,注意要選擇“僅已進(jìn)行日記記錄的數(shù)據(jù)”擴(kuò)展窗口、鎖定訂戶這是Consistent_CDC最特殊的地方。一致性 CDC 提供了按窗口擴(kuò)展,按用戶鎖定并訪問(wèn)日記數(shù)據(jù)的機(jī)制。我們需要這種機(jī)制來(lái)保證在捕獲和發(fā)布變化數(shù)據(jù)的時(shí)候不違反一致性。Designer 提供了界面來(lái)擴(kuò)展窗口和鎖定訂戶。首先從模型 ORACLE_SH 的彈出菜單中選擇擴(kuò)展窗口:然后從模型 ORA
34、CLE_SH 的彈出菜單中選擇鎖定訂戶:在彈出的窗口中選擇并添加要鎖定的訂戶,然后確定完成鎖定:這兩個(gè)步驟都會(huì)提交一個(gè)會(huì)話。通過(guò)這兩個(gè)步驟,源數(shù)據(jù)中的變化數(shù)據(jù)會(huì)出現(xiàn)在JV$ TEST_CONSISTENT視圖中,這樣接口就能將源的變化數(shù)據(jù)同步到目標(biāo)了。清除日記、取消訂戶鎖定執(zhí)行完接口后,并不會(huì)自動(dòng)清楚日記,J$ TEST_CONSISTENT和JV$ TEST_CONSISTENT里一直存在日記記錄,這里我們需要通過(guò)“清楚日記”、“取消訂戶鎖定”來(lái)清楚這些對(duì)象里的數(shù)據(jù)。創(chuàng)建包創(chuàng)建一個(gè)PKG_TEST_CONSISTENT。在關(guān)系圖中將模型 ORACLE_SH 拖進(jìn)來(lái)。指定類(lèi)型為日記記錄模型,選
35、上擴(kuò)展窗口和鎖定訂戶,并且添加訂戶 SUNOPSIS。再將接口INT_TEST_CDC_CONSISTENT拖進(jìn)來(lái),在最后再將模型 ORACLE_SH 拖進(jìn)來(lái),指定類(lèi)型為日記記錄模型,選上清除日記和取消訂戶鎖定,并且添加訂戶 SUNOPSIS:“確定”,完成包的創(chuàng)建。至此,Consistent_CDC的核心步驟已經(jīng)完成,其它的步驟請(qǐng)參考3.1.1全量抽取。4 數(shù)據(jù)庫(kù)的JDBC及訪問(wèn)權(quán)限4.1 連接數(shù)據(jù)庫(kù)的JDBC及其URLODI作為一個(gè)數(shù)據(jù)集成的工具,首先要做的就是要通過(guò)JDBC連接上需要做集成的數(shù)據(jù)庫(kù)。ODI安裝后,已經(jīng)自帶了連接Oracle的JDBC。如果做另外一些數(shù)據(jù)庫(kù)(如SQL Ser
36、ver、MySQL、DB2、Sybase等)的集成,首先要做的就是將相關(guān)的JDBC包下載并保存在“ODI安裝目錄oracledidriver”下。下面列舉幾種常見(jiàn)的JDBC及其URL。Oracle數(shù)據(jù)庫(kù)oracle.jdbc.driver.OracleDriverurl:jdbc:oracle:thin:IP:端口:SID例如:jdbc:oracle:thin:0:1521:orclSQL Server數(shù)據(jù)庫(kù)com.microsoft.jdbc.sqlserver.SQLServerDriverurl:jdbc:microsoft:sqlserver:/IP:端口;Da
37、tabaseName=庫(kù)名例如:jdbc:microsoft:sqlserver:/:1433;selectmethod=cursor;DatabaseName=pubsMySQL數(shù)據(jù)庫(kù)com.mysql.jdbc.Driverjdbc:mysql:/:3306/sdfg?user=root$password=wiscom注:這里連接的Mysql數(shù)據(jù)庫(kù)sdfg,用戶名:root,密碼:wiscom.DB2數(shù)據(jù)庫(kù)com.ibm.db2.jcc.DB2Driverjdbc:db2:/localhost:50000/sample注:這里連接的DB2數(shù)據(jù)庫(kù)s
38、ample字符集必須是utf-8Sybase數(shù)據(jù)庫(kù)com.sybase.jdbc2.jdbc.SybDriverjdbc:sybase:Tds:localhost:5007/myDB4.2 訪問(wèn)權(quán)限通過(guò)JDBC連接數(shù)據(jù)庫(kù)的時(shí)候總會(huì)遇到一些問(wèn)題,常由于一些原因連接不上。端口要確認(rèn)連接的數(shù)據(jù)庫(kù)所在主機(jī)上相應(yīng)的端口是否開(kāi)啟。例如oracle默認(rèn)端口1521,SQL Server默認(rèn)端口1433等,這些端口可能被防火墻禁止。所以在連接之前,要保證數(shù)據(jù)庫(kù)的端口處于開(kāi)啟狀態(tài)。操作權(quán)限登錄的用戶名對(duì)數(shù)據(jù)庫(kù)有多大的操作權(quán)限,要通過(guò)DBA進(jìn)行確認(rèn)。訪問(wèn)Oracle在ODI主機(jī)上的oracle客戶端配置一個(gè)新的連
39、接,配置“客戶端目錄NETWORKADMIN tnsnames.ora”,加入下面的語(yǔ)句:ORCL_0 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 0)(PORT = 1521) ) (CONNECT_DATA = (SID = orcl) (SERVER = DEDICATED) ) )0是所要連接的oracle的主機(jī),1521是它的端口。這個(gè)service_name“ORCL_0”就是利用ODI創(chuàng)建物理結(jié)構(gòu)時(shí)的D
40、BLink。MySQL的授權(quán)訪問(wèn)其它機(jī)器上的MySQL時(shí)需要MySQL的DBA的授權(quán)。GRANT ALL PRIVILEGES ON *.* TO 'root''5' IDENTIFIED BY *;上面是給5的主機(jī)授權(quán),以root登錄,對(duì)MySQL數(shù)據(jù)庫(kù)有一切操作權(quán)限。注:這里用all privileges是為了方便,實(shí)際情況中要合理授予權(quán)限。5 ODI Metadata Navigator的配置Metadata Navigator是一個(gè)Servlet/JSP應(yīng)用程序,通過(guò)一個(gè)WEB接口進(jìn)入ODI的存儲(chǔ)庫(kù)。要運(yùn)行
41、Metadata Navigator,首先要安裝一個(gè)Web Server,這里我們安裝Tomcat5.5。5.1 Metadata Navigator的安裝將安裝軟件中的oracledimn文件夾及其所有內(nèi)容拷貝到Tomcat安裝路徑webapps下5.2 Metadata Navigator配置(1)數(shù)據(jù)庫(kù)的JAR文件拷貝將數(shù)據(jù)庫(kù)安裝路徑下jdbclib下的JAR文件拷貝到Tomcat安裝路徑webappsoracledimn WEB-INFlib下(2)資料庫(kù)連接如果需要連接自定義的資料庫(kù),作以下操作:將ODI客戶端或者Agent安裝路徑下binsnps_login_work.xml文件拷
42、貝到ODI Metadata Navigator安裝路徑oracledimnWEB-INF下(3)登錄Metadata Navigator重啟Tomcat Servicehttp:/<machine name>:<port http>/oracledimn/6 常見(jiàn)錯(cuò)誤及解決方法(1)在Topology Manager插入類(lèi)型為Oracle數(shù)據(jù)服務(wù)器時(shí),在添寫(xiě)實(shí)例/dblink時(shí)直接填寫(xiě)為Oracle的SID(如下圖),執(zhí)行時(shí)會(huì)抱錯(cuò)錯(cuò)誤原因:實(shí)例/dblink的取名不能和SID相同解決方法:為Oracle增加一個(gè)service_name。修改oracle目錄oracle
43、 product10.1.0Db_1NETWORKADMIN下的tnsnames.ora文件,增加一個(gè)service_name,如以下修改增加了一個(gè)名為orcl_server的服務(wù)名orcl_server=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 78)(PORT = 1521) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME =tsolaris) ) )(2)Navigator的配置、使用問(wèn)題,在安裝、配置好TOMCAT、Navigator后,進(jìn)入服務(wù)器頁(yè)面,
44、如http:/localhost:8080/*,瀏覽器不是進(jìn)入Navigator的起始頁(yè),而是顯示:錯(cuò)誤原因:安裝Nvavigator的服務(wù)器上也同時(shí)安裝了Oracle數(shù)據(jù)庫(kù),Oracle占用了TOMCAT默認(rèn)的8080端口作為http服務(wù)端口,導(dǎo)致TOMCAT與Oracle的http服務(wù)端口沖突。解決辦法:更改TOMCAT的端口號(hào),打開(kāi)TOMCAT安裝目錄/conf下的server.xml文件,如以下代碼修改端口為8090<Connectorport="8090" maxHttpHeaderSize="8192" maxThreads="
45、;150"minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" d isableUploadTimeout="true" />(3)同步的源或目標(biāo)為Mysql數(shù)據(jù)庫(kù)時(shí),有時(shí)會(huì)抱錯(cuò)java.sql.SQLException: Access de
46、nied for user: 'root*.*.*.*' (Using password: YES)錯(cuò)誤原因:Mysql網(wǎng)絡(luò)授權(quán)問(wèn)題,ODI所在的用戶結(jié)點(diǎn)不具有遠(yuǎn)程操作Mysql結(jié)點(diǎn)的權(quán)限解決辦法:為ODI服務(wù)器所在結(jié)點(diǎn)賦予權(quán)限格式:grant 權(quán)限 on 數(shù)據(jù)庫(kù)名.表名 用戶登錄主機(jī) identified by "用戶密碼"grant select,update,insert,delete on *.* to xuys34 identified by "xuys1234"(4)同步的過(guò)程中存在BLOB字段,若直接
47、調(diào)用系統(tǒng)KM,會(huì)抱錯(cuò) 932 : 42000 : java.sql.SQLException: ORA-00932: inconsistent datatypes: expected - got BLOBjava.sql.SQLException: ORA-00932: inconsistent datatypes: expected - got BLOB錯(cuò)誤原因:ODI無(wú)法直接對(duì)BLOB字段進(jìn)行同步處理(源與目標(biāo)同為Oralce情況除外),需要改寫(xiě)相關(guān)KM,同步過(guò)程才能正確運(yùn)行解決辦法:參見(jiàn)BLOB字段同步解決方法說(shuō)明書(shū).doc,內(nèi)有詳細(xì)說(shuō)明(5)ORA-1722 : java.sql.SQ
48、LException: ORA-01722: 無(wú)效數(shù)字java.sql.SQLException: ORA-01722: 無(wú)效數(shù)字錯(cuò)誤原因:視圖將字符串類(lèi)型的值填入數(shù)字型而造成的,在sql語(yǔ)句中,字符數(shù)字類(lèi)型轉(zhuǎn)換錯(cuò)誤,無(wú)法將字符串轉(zhuǎn)化成有效數(shù)字(6)目標(biāo)表某字段的長(zhǎng)度小于實(shí)際長(zhǎng)度,抱錯(cuò) 12899 : 72000 : java.sql.BatchUpdateException: ORA-12899: 列 "SNPM"."C$_0stuuuuuuu"."C2_SNAME" 的值太大 (實(shí)際值: 6, 最大值: 4)12899 : 72000 : java.sql.SQLException: ORA-12899: 列 "SNPM"."C$_0stuuuuuuu"."C2_SNAME" 的值太大 (實(shí)際值: 6, 最大值: 4)java.sql.BatchUpdateException: ORA-12899: 列 "SNPM"."C$_0stuuuuuuu"."C2_SNAME" 的值太大 (實(shí)際值: 6, 最大值: 4)錯(cuò)誤原因:目標(biāo)表中字段SNAME長(zhǎng)度設(shè)置太小,源中SNAME的實(shí)際長(zhǎng)度大于目標(biāo)中映射
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 合同執(zhí)行力度承諾書(shū)5篇范文
- 2026廣東江門(mén)職業(yè)技術(shù)學(xué)院管理教輔人員招聘4人備考題庫(kù)帶答案詳解(精練)
- 2026廣東深圳市寶安區(qū)西鄉(xiāng)文康小學(xué)誠(chéng)聘語(yǔ)文教師備考題庫(kù)及答案詳解(名師系列)
- 2026廣東華南師范大學(xué)招聘幼兒教師1人備考題庫(kù)含答案詳解(研優(yōu)卷)
- 2026中國(guó)郵政集團(tuán)有限公司江門(mén)市分公司招聘?jìng)淇碱}庫(kù)含答案詳解(a卷)
- 2026新疆烏魯木齊市科信中學(xué)教師招聘?jìng)淇碱}庫(kù)含答案詳解(綜合題)
- 2026北京市農(nóng)林科學(xué)院招聘32人備考題庫(kù)含答案詳解(研優(yōu)卷)
- 2026上半年安徽事業(yè)單位聯(lián)考蚌埠市市區(qū)單位招聘31人備考題庫(kù)含答案詳解(精練)
- 2026年上半年甘肅省事業(yè)單位聯(lián)考備考題庫(kù)在哪查看含答案詳解(b卷)
- 2026上半年青海事業(yè)單位聯(lián)考黃南州招聘68人備考題庫(kù)帶答案詳解(培優(yōu)b卷)
- 2025年秋季散學(xué)典禮校長(zhǎng)講話:以四馬精神赴新程攜溫暖期許啟寒假
- 2026貴州省黔晟國(guó)有資產(chǎn)經(jīng)營(yíng)有限責(zé)任公司面向社會(huì)招聘中層管理人員2人備考考試試題及答案解析
- 2025年?duì)I養(yǎng)師考試練習(xí)題及答案
- 2026中國(guó)電信四川公用信息產(chǎn)業(yè)有限責(zé)任公司社會(huì)成熟人才招聘?jìng)淇碱}庫(kù)及答案詳解一套
- 通信工程冬季施工安全培訓(xùn)
- 中醫(yī)外科乳房疾病診療規(guī)范診療指南2023版
- 壓實(shí)瀝青混合料密度 表干法 自動(dòng)計(jì)算
- 田口三次設(shè)計(jì)
- 《我的戒煙》閱讀答案
- GB/T 7442-2007角向磨光機(jī)
- GB/T 324-2008焊縫符號(hào)表示法
評(píng)論
0/150
提交評(píng)論