天天看點

Oracle Data Integrator 介紹

轉自:http://my.oschina.net/aiguozhe/blog/115773

本文介紹了 Oracle Data Integrator,它是一個基于 Java 的中間件,可以使用資料庫在 SOA 中執行基于集合的資料內建任務。

    現在,複雜的“可熱插拔”系統和面向服務的體系結構 (SOA) 得到了廣泛應用,這使得将資料合理地整合在一起的難度日益增加。盡管您的主要應用程式資料庫在 Oracle 資料庫上運作,但是可能還有其他較小的系統在其他供應商提供的資料庫和平台上運作。您的應用程式本身可以通過 Web 服務之類的技術進行互動,應用程式和資料可以遠端托管,也可以由您在企業資料中心内進行管理。

    Oracle Data Integrator 屬于 Oracle Fusion Middleware産品系列,它解決了異構程度日益增加的環境中的資料內建需求。它是一個基于 Java 的中間件,可以使用資料庫來執行基于集合的資料內建任務,也可以将該功能擴充到多種資料庫平台以及 Oracle 資料庫。此外,通過它,您還可以通過 Web 服務和消息提取并提供轉換資料,以及建立在面向服務的體系結構中響應和建立事件的內建過程。

    Oracle Data Integrator 是以 Java 圖形子產品和排程代理通路的子產品化資訊庫為中心進行組織的。圖形子產品用于設計和建構內建過程,代理用于安排和協調內建任務。當 Oracle Data Integrator 項目投入生産時,資料管理者可以使用基于

Web 的 Metadata Navigator 應用程式來根據資訊庫中的中繼資料生成報告。現成的知識子產品可以使用特定于平台的代碼和工具跨異構平台提取和加載資料。

Oracle Data Integrator 介紹

    Oracle Data Integrator 資訊庫包含一個主資訊庫(包含有關使用者和角色的詳細資訊)、到資料庫和其他資料源的連接配接、項目版本以及一個或多個工作資訊庫(包含資料模型的詳細資訊以及用于內建資料的映射)。這些資訊庫可以存儲在 Oracle 和非 Oracle 關系資料庫中,可以使用圖形子產品進行管理,并可以在運作時由代理進行通路。

有四個圖形子產品可用來建立和管理 Oracle Data Integrator 項目:

Designer 用于定義資料存儲(表、檔案、Web 服務等)、接口(資料映射)以及程式包(包括接口在内的幾組內建步驟)。 

Topology Manager 用于建立和管理到資料源和代理的連接配接,通常限制為隻有管理者可以通路。 

Operator 用于檢視和管理産品內建作業。 

Security Manager 管理使用者及其資訊庫權限。

這些基于 Java 的應用程式可在包括 Microsoft Windows、Macintosh OS X 和 Linux 在内的任何 Java 環境中運作。

Oracle Data Integrator 屬于 Oracle 融合中間件産品系列,它解決了異構程度日益增加的環境中的資料內建需求。它是一個基于 Java 的應用程式,可以使用資料庫來執行基于集合的資料內建任務,也可以将該功能擴充到多種資料庫平台以及 Oracle 資料庫。此外,通過它,您還可以通過 Web 服務和消息提取并提供轉換資料,以及建立在面向服務的體系結構中響應和建立事件的內建過程。

oracle的資料加載工具,說白了,就是不同庫,或不同使用者下的資料傳輸工具。上網上下載下傳個操作說明,先在本地安裝一個ODI,熟悉熟悉操作就行了。

主要有三個工具:

1、Designer進行資料傳輸的操作(不同庫表資料的傳輸,傳輸方式很多種(牛B之處))

2、Operator檢視資料傳輸的結果(傳輸成功,還是失敗,失敗的原因等等)。

3、Topology manager定義實體和邏輯架構,就是配置不同庫的url,sid什麼的。

ODI就是一個導數的工具,用IMP,EXP加個FTP和定時crontab一樣可以實作導數,隻不過,odi更加強大,可以實作更多的功能,等你上個項目,當你接口實作不了需求的時候,你就知道要用存儲過程了,odi可以重新整理執行,定時執行,不同的庫資料導給同一個庫用來出報表,大緻如此,沒有必要扣什麼資料挖掘,除非售前也歸你,向客戶兜售ODI,才需要扯一些什麼資料倉儲,資料挖掘之類的。

看完這些,了解就行了,下面如果用不到,就不用看了。。

一般來說,資料內建任務涉及兩個主要的領域:

關于轉換哪位資料并将其與其他位相結合的業務規則 

關于資料的實際提取、加載等操作方式的技術細節 

這種劃分意味着,定義業務規則的人通常是機構的技術業務專家或資料專家,而技術細節則往往留給開發人員和 DBA 等技術人員來定義。使用大多數資料內建工具,通常很難以這種方式劃分職責,因為它們的資料映射特性在同一個資料映射中混合了業務規則和技術實作細節。而 Oracle

Data Integrator 采用了一種不同的方法,像 SQL 一樣使用聲明式方法來建構資料映射,這在工具中稱為“接口”。 建立新的接口時,開發人員或技術業務使用者首先定義要內建的資料以及應使用的業務規則。在該步驟中,會将表聯接在一起,應用過濾器,并使用

SQL 表達式來轉換資料。所使用的特定 SQL 語言由執行代碼的資料庫平台來決定。

    然後,在另一個步驟中,技術人員可以使用特定于資料庫的工具和設計方法(例如增量加載、批量加載工具、漸變次元和更改資料捕獲)以最有效的方式來提取、組合并內建該資料。

    由于 Oracle Data Integrator 在響應事件的同時從很多不同的資料庫平台加載和轉換資料并使用基于消息的技術  (如 Web 服務),是以用于通路和加載這些不同資料源的技術需要靈活、可擴充而又高效。Oracle Data Integrator 通過知識子產品解決了該問題。

    知識子產品是 Oracle Data Integrator 的“插件”,它濃縮了為特定資料源或特定目标加載、轉換或內建資料的最佳實踐。Oracle Data Integrator 有六種知識子產品,如下圖所示:

Oracle Data Integrator 介紹

反向工程知識子產品用于從源資料庫中讀取表和其他對象中繼資料。 

日志記錄知識子產品記錄單個表或視圖或者一組一緻的表或視圖中的新資料和更改的資料。 

加載知識子產品用于從源資料庫中有效地提取資料,并包括特定于資料庫的适用的批量解除安裝工具。 

檢查知識子產品用于檢測源資料中的錯誤。 

內建知識子產品用于有效地将分段存儲區中的資料轉換為目标表,以便為給定資料庫生成優化的本機 SQL。 

服務知識子產品可以将資料公布為 Web 服務。 

知識子產品還可以擴充,這樣您可以添加 Oracle Data Integrator 目前未提供的功能。例如,采用一組現有的基于 Oracle 的知識子產品并将其擴充為包括 Oracle 資料庫 10g 中的 Oracle 資料泵功能将是一項相對簡單的任務。

    如果您是負責加載資料倉庫的人,那麼不得不解決的一個問題是執行夜間加載的時間段越來越短。如果您的中繼資料包含大量在加載到資料倉庫分段存儲區之前無法檢測的錯誤,時間就會變得格外緊張。

    Oracle Data Integrator 利用了一種創新方法來解決該問題,即使用檢查知識子產品在資料源處充當髒資料的“防火牆”,隻允許符合業務規則的資料進入內建流程。要使用該方法有效地確定資料品質,您首先要在源對象上定義一個或多個限制,然後使用檢查知識子產品來識别不符合這些限制的所有行,并将它們複制到錯誤表中。

Oracle Data Integrator 介紹

這樣,在您以後從這些源對象中提取資料并在接口中使用它們時,可以確定僅加載了符合這些限制的資料,并且您可以單獨處理錯誤表中的髒資料。

    盡可能縮短資料加載時間的另一種有用的方法是,僅加載新的或經過更改的資料。幸運的話,應用程式設計人員會提供訓示器和日期來幫助确定新的或經過更改的資料,但是大多數情況下不會提供該資訊,這需要您自己來确定感興趣的資料。

    由于這是一個相當普遍的要求,是以 Oracle Data Integrator 提供了日志記錄知識子產品來監視源資料庫,并将新的和經過更改的記錄複制到日志中,然後可以從日志中而非原始的源表中讀取這些記錄。如果 Oracle 之類的資料庫供應商提供更改資料捕獲的本機支援,就會使用這些功能;否則,日志記錄知識子產品會使用觸發器之類的技術來捕獲資料操作語言 (DML) 活動并使更改可用。在本文的後面部分,您将看到 Oracle Data Integrator 如何提供 Oracle 更改資料捕獲功能,以及如何使用它以增量方式将資料庫實時加載到其他資料庫平台上。

    這時,Oracle Warehouse Builder 的正常使用者可能想知道它與 Oracle Data Integrator 的關系,以及它在其他 Oracle 資料倉庫技術産品中的适用情況。我們的回答是,Oracle Data Integrator 是一個工具,是對 Oracle Warehouse Builder 的補充,如果涉及在 Oracle 資料倉庫中建立分段層和內建層的工作很重要或者涉及 SOA 或非 Oracle 資料庫源,它将尤為有用。

    對于建構 Oracle 資料倉庫的人來說,Oracle Warehouse Builder 有一組功能強大的特定于 Oracle 的資料倉庫功能,例如,支援關系和多元資料結構的模組化、與 Oracle Business Intelligence Discoverer 內建、支援加載漸變次元,以及用于了解資料結構和語義的資料分析器。

    從源資料的最初準備和內建一直到資料倉庫的分段存儲區,Oracle Data Integrator 都起着重要作用。

Oracle Data Integrator 介紹

    Oracle Data Integrator 可以內建和同步大量不同資料源(包括 Web 服務和基于事件的體系結構)中的資料,并且如上圖所示,還可以為特定于 Oracle 資料庫的功能(如 Oracle 更改資料捕獲)提供友善的圖形界面。将資料內建并複制到資料倉庫分段存儲區後,Oracle Warehouse Builder 會接替後續工作,建立并填充操作資料存儲和次元倉庫層。

    現在大家對 Oracle Data Integrator 已經有所了解,本文将重點關注如何在實際的資料內建案例中使用它。

    在該案例中,您的任務是從 Oracle 資料庫中提取一些訂單和客戶資料,将其與檔案中儲存的一些員工資料組合到一起,然後将內建的資料載入 Microsoft SQL Server 2000 資料庫。由于訂單到達時需要進行分析,是以您希望以盡可能接近實時的速度将它們直接傳遞到目标資料庫,并僅提取新的和經過更改的資料以保持盡可能小的負載。您已經在 Oracle 技術網上了解了 Oracle Data Integrator 的相關資訊,并希望使用這一新工具來提取和加載資料。

您首先登入到 Oracle Data Integrator 并啟動 Topology Manager,如下圖所示。

Oracle Data Integrator 介紹

在 Oracle Data Integrator 中,實體資料庫、服務或基于事件的資料源均稱為資料伺服器。使用 Topology Manager 建立三個新的資料伺服器:

一個 Oracle 資料庫資料伺服器,使用 SYSTEM 使用者的憑證設定,映射到資料庫上的 ORDERS 和 ORDERS_WORKAREA 模式。ORDERS 模式包含您要提取的訂單資料,而 ORDERS_WORKAREA 模式是您專門設定的一個空模式,用來存放 Oracle Data Integrator 建立的工作表。使用 Oracle JDBC 驅動程式建立該連接配接。 

一個檔案資料伺服器,映射到以逗号分隔的檔案(其中包含員工詳細資訊)。使用 Sunopsis 檔案 JDBC 驅動程式建立該連接配接。 

一個 Microsoft SQL Server 資料伺服器,映射到名為 ORDERS_DATA_MART 的資料庫。使用 Sun JDBC-ODBC 橋接 JDBC 驅動程式建立該連接配接,或者使用 Microsoft JDBC 驅動程式(可以從 Microsoft Web 站點下載下傳)。 

定義資料伺服器之後,您可以退出 Topology Manager 并啟動 Designer。使用 Designer,您可以建立代表 Oracle、檔案以及 Microsoft SQL Server 表和檔案的資料模型,這在 Oracle Data Integrator 中稱為資料存儲。首先建立 Oracle 和 Microsoft SQL Server 模型,然後使用反向功能将表的中繼資料導入 Oracle Data Integrator 的資訊庫中,如下圖所示。

Oracle Data Integrator 介紹

如果已經定義了所有資料模型,并且已經手動輸入源以及目标表和檔案的詳細資訊或對其進行反向工程,Designer 将顯示您目前在項目中使用的所有資料存儲的清單,如下圖所示。

Oracle Data Integrator 介紹

确定基礎源表是否未定義主鍵,您可以使用 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 流以異步方式在隊列中傳播更改。

Oracle Data Integrator 介紹

該知識子產品提供了三個配置選項。您可以選擇下列值來配置該子產品:

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 Data Integrator 介紹

如果該過程遇到錯誤,通常是由于您使用了不具有所需權限的使用者帳戶定義 Oracle 連接配接。檢視您提供的使用者詳細資訊和 Oracle Data Integrator 文檔以解決所有問題,然後再繼續該練習的其餘部分。

接下來,您要向日志中添加一個使用者,方法是:傳回 Designer 應用程式,右鍵單擊 Oracle 源資料伺服器,并選擇 Changed Data Capture ->Subscriber->Subscribe。添加一個新使用者,并在本地執行代碼以確定代碼正确執行(某些操作可能會發出警告,因為在前面的步驟中已經建立了所需的表)。該步驟完成後,您已經建立了更改資料捕獲過程,可以開始建構接口了。

該項目需要兩個接口,第一個接口用于從 Oracle 源資料庫中提取現有的資料集,将其與源檔案中的資料聯合到一起,然後将組合資料載入目标 Microsoft SQL Server 資料庫,如下圖所示。

Oracle Data Integrator 介紹

注意,目标表中的某些列已經自動映射,但 SALES_PERSON_ID、SALES_PERSON_NAME 和 CUSTOMER_NAME 等其他列最初并未映射,因為映射過程找不到比對的源列。現在,您将手動映射這些列,使用表達式編輯器輸入使用源或目标資料庫文法的 SQL 表達式,具體取決于發生轉換的位置。

如果單擊 Flow 頁籤,您将看到用于加載和內建資料的實際知識子產品,如下圖所示。

Oracle Data Integrator 介紹

Oracle Data Integrator 已經選擇了預設知識子產品來實作從任何資料庫和檔案中提取資料,然後以增量方式載入任何資料庫。稍後,您可以将這些知識子產品更改為更适合您的特定資料庫和版本的子產品,但現在請保留這些子產品的預設設定。

最後,如下圖所示,單擊 Control 頁籤,以選擇用于處理目标表的限制錯誤的控制知識子產品。選擇 CKM SQL Knowledge Module 以處理符合 ISO-92 的資料庫中的錯誤資料。

Oracle Data Integrator 介紹

現在,您可以測試接口了。為此,單擊接口對話框右下角的 Execute,然後打開 Operator 應用程式檢查接口進度,如下圖所示。

Oracle Data Integrator 介紹

由于接口的執行未出現錯誤,您可以在 Designer 應用程式中導航到目标資料存儲并檢視加載的資料,如下圖所示。

Oracle Data Integrator 介紹

現在,您已經設定了初始負載,下面可以定義通過先前建立的日志表加載新的和經過更改的資料的接口了。

為此,再建立一個接口,但這次,當您添加 CUSTOMERS 和 ORDERS 源表時,單擊表明使用日志記錄的資料而非資料存儲内容的複選框。為一個日志記錄表選擇該複選框後,系統将自動為一緻集合中的所有其他表選中該複選框,如下圖所示。

Oracle Data Integrator 介紹

将日志記錄表添加到接口後,您可以按照與先前完全相同的方式建構接口的其餘部分,唯一的差別是,第二個接口以日志記錄的資料而非源表内容作為源資料。

要測試第二個接口,您可以将一些新記錄插入 ORDERS 和 CUSTOMERS 表,然後使用 Designer 接口來擴充日志視窗;稍後,您将自動擴充該視窗,并将其作為 Oracle Data Integrator 程式包的一部分進行清除。但現在,右鍵單擊 Oracle 資料模型,并從上下文菜單中選擇 Changed Data->Consumption->Extend Window,使新的和經過更改的資料的最新集合可用于第二個接口,如下圖所示。

Oracle Data Integrator 介紹

您可以快速檢查哪些行在表日志中(右鍵單擊相關的資料存儲,選擇 Changed Data Capture,然後選擇 Journal Data…),也可以執行接口(在編輯器中再次打開它,并單擊螢幕右下角的 Execute)。

由于您已經使用所建立的第一個接口将最初的資料集合載入目标資料中心,現在可以建立一個 Oracle Data Integrator 程式包來執行下列步驟:

檢查 ORDERS 和 CUSTOMER 日志記錄資料,以檢視是否已添加新的或經過更改的資料記錄。如果檢測到預定義數量的日志記錄,運作程式包的其餘部分或跳到最後一步,無需加載任何資料。 

如果檢測到日志記錄資料,擴充日志視窗。 

執行該接口,以讀取日志記錄資料,将其與檔案聯合,并加載目标資料存儲。 

清除日志視窗。 

再次啟動該程式包。 

建立該程式包然後将其作為 Oracle Data Integrator 案例部署可有效地建立一個實時、連續運作的 ETL 過程。使用 Oracle Data Integrator 的事件檢測功能,該程式包将在檢測到預先設定的更改資料記錄數或經過指定的毫秒數後自行啟動。通過為日志記錄資料的數量和逾時設定相應的門檻值,您可以建立一個延遲最小的實時內建過程。

要建立該程式包,導航到 Designer 應用程式的 Projects 頁籤,找到包含您先前定義的接口的檔案夾,找到 Packages 項,右鍵單擊該項,然後選擇 Insert Package。為該程式包指定一個名稱,然後導航到程式包詳細資訊對話框的 Diagram 頁籤。

使用右側的工具箱,轉至 Event Detection 檔案夾并将 OdiWaitForLogData 工具添加到程式包畫布中,如下圖所示。該工具将定期輪詢日志記錄資料,如果未找到任何行,該工具将失敗,如果在日志中檢測到預先設定的行數,該工具将進入程式包的下一個步驟。

Oracle Data Integrator 介紹

您可以将工具屬性設定為檢查先前定義的更改資料捕獲集合,并在發現 3 個日志行或檢查開始一分鐘後退出。

現在,您可以添加一個擴充日志視窗以讀入新資料的步驟。為此,導航到模型清單,并将 Oracle 模型拖放到畫布上。選擇該模型,檢視屬性,然後将 Model Type 清單更改為 Journalizing Model,如下圖所示。

Oracle Data Integrator 介紹

然後,單擊 Extend Window 複選框,以表明該日志步驟将擴充日志視窗。

接下來,将從日志提取資料的接口添加到映射,然後将 Oracle 模型再次添加到程式包中,但這次選擇 Purge Window 選項,以便在讀取日志後将其清除。最後,将 Utilities 檔案夾中的 OdiStartScen 工具添加到工具箱,以便在其完成後再次重新開機,您還可以添加顯示步驟流程的連接配接器(如下圖所示),具體取決于第一個步驟是否檢測到日志行。

Oracle Data Integrator 介紹

由于最後的 OdiStartScen 步驟指的是程式包生産版本中的情況,您可以在 Designer 應用程式的 Project 頁籤中找到要使用的程式包,右鍵單擊該程式包,并選擇 Generate Scenario。建立了案例之後,您可以編輯 OdiStartScen 步驟的屬性,使其引用您剛剛生成的案例名稱。将這最後一步添加到程式包之後,您就可以確定它連續運作,并以實時方式将 Oracle 源表中新的和經過更改的資料傳播到目标資料庫。

總結

Oracle Data Integrator 是 Oracle 融合中間件産品系列的一個新成員,您可以利用它跨衆多平台執行面向資料、事件和服務的內建。它對 Oracle Warehouse Builder 進行了補充,并為特定于 Oracle 資料庫的功能(例如,批量資料加載和 Oracle 更改資料捕獲)提供了圖形界面。本文探究了如何使用 Oracle Data Integrator 跨不同的平台建立實時資料內建過程,還探究了內建過程的聲明式方法,該方法可讓您集中精力定義業務規則,而不用考慮實作細節。

Mark Rittman [http://www.rittmanmead.com/blog] 是一位 Oracle ACE,并且是 Rittman Mead Consulting 的創始人之一,Rittman Mead Consulting 是 Oracle 的專業合作夥伴,總部設在英國,并緻力于 Oracle 商務智能和資料倉庫。他定期向 OTN 和 OTN 論壇投稿,并且是 Oracle Press 即将在 2008 年出版的《Oracle 商務智能套件開發人員指南》一書的作者之一