數據倉庫(七):Oracle Warehouse Builder(OWB)創建數據倉庫


本文簡述使用OWB創建數據倉庫的一般過程。Oracle的OWB是目前最好的三大ETL產品之一。OWB不但可以可以完成數據的抽取、轉換和加 載,還能幫助用戶在Oracle數據庫中創建ROLAP(Relational Online Analysis Process)和MOLAP(Multidimensional Online Analysis Process)數據倉庫對象,數據質量管理,商務智能定義等。

1 環境配置

建議直接安裝Oracle 11g(如Oracle 11.2.0.1.0),其安裝包中直接包含了OWB和依賴的組件。若使用Oracle 10g(如Oracle 10.2.0.1)則需要下載Oracle數據庫安裝包和Oracle Database 10g Companion CD Release 2 (10.2.0.1.0),后者包含OWB所必須的Oracle Workflow Server和Oracle HTTP Server。

安裝Oracle Workflow(針對Oracle 10g)

注意:不要通過執行companion目錄下的setup.exe文件來安裝,而是通過選擇你本機上已經安裝好 的oracle 10g R2的Universal Installer來安裝,在Oracle Universal Installer: 指定源位置界面中,點擊“瀏覽”按鈕,定位companion\stage\products.xml文件,然后點擊“下一步”按鈕,選擇“Oracle Database 10g Products 10.2.0.1.0”即可正常安裝這些組件。步驟如下:

安裝了oracle10g,在D:\oracle\product\10.2.0下。
安裝了OWB10g2,在D:\oracle\product\10.2.0\OWB下。
下載了Oracle Workflow 2.6.4。安裝時候,指定主目錄詳細信息如下:
名稱:OraDb10g_home1
路徑:D:\oracle\product\10.2.0\db_1
安裝Oracle Workflow 2.6.4的過程,在“選擇要安裝的產品”窗口,選擇了第二項,即“Oracle Database 10g Products 10.2.0.1.0”。此時已包括了HTTP Server的安裝。

Oracle Workflow 2.6.4安裝后,配置 Workflow Configuration Assistant。



最后,你需要賦予owf_mgr “EXECUTE ANY PROCEDURE” 的權限,用sys 賬號連到SQL Plus,並賦予owf_mgr 如下權限. 
grant execute any procedure to owf_mgr; 

(*)若要單獨安裝Oracle Workflow,則選擇Oracle Database10g Companion Product;若要安裝HTTP Server則選擇Oracle HTML DB 10.2.0.1.0。

Repository Assistant創建資料庫

使用OWB進行ETL設計和部署前,需要先通過Repository Assistant的向導創建資料庫和用戶(包括資料庫所有者和資料庫使用者)。

2 OWB數據處理流程

(1)進入“Design Center”

  • 新建“控制中心(Control Center)”
  • 新建“項目(Project)”
  • 定義“數據源模塊(Module)”
  • 定義“目標數據模塊(Module)”
  • 設計“映射(Mapping)”
  • 設計“進程流(Process Flow)”確定映射運行的先后順序
  • 設計“計划(Schedule)”
  • “配置(Configure)”映射和工作流,添加不同映射和工作流的“計划”,部署后會形成“工作(Job)”

(2)在Design Center中創建Control Center,並且將其配置為缺省的Control Center

(3)打開“控制中心管理器(Control Center Manager)”

  • 確定數據源和目標數據庫的實際物理配置,“注冊(Register)”“位置(Location)”為部署和執行打下基礎
  • “部 署(Deploy)”某個項目、位置、模塊下所有對象,這些操作完成了如下工作:DDL、DML、Control File、Workflow代碼、Job生成代碼或者ABAP等代碼在目標用戶所在數據庫上的生成,DDL語句的部署同時完成了對象在目標用戶所在數據庫 上的生成,DML、Control File、Workflow、Job需要下一步的執行才可以真正完成
  • “執行(Execute)”工作,實現周期ETL

3 在Design Center中設計ETL

Design Center負責設計工作,這些設計工作都會自動地存儲到OWB資料庫中。

3.1 進入Design Center

開始->程序->Oracle - OWBHOME名稱->Warehouse Builder->Design Center

3.2 新建“項目(Project)”

  • “項目瀏覽器”空白處右鍵,選擇“新建”
  • 按照向導,輸入項目名稱,如test_project,“確定”

3.3 新建“數據源模塊”和導入數據源

  • 建立一個Oracle表的數據源,在剛才建立的“項目名稱-數據庫-Oracle”上,右鍵“新建”
  • 按照向導創建數據源Oracle模塊
  • 輸入模塊名稱,注意選擇“數據源”單選按鈕
  • 點擊“位置”右側的“編輯”按鈕,進入連接信息編輯界面

數據源位置名稱為:HR_LOCATION

用戶名(User Name):連接數據源的表的數據庫用戶名稱

口令(Password):連接數據源的表的數據庫用戶的密碼

主機(Host):作為數據源的表所在的數據庫服務器的IP地址(注意,要與數據庫服務器.../network/admin目錄下的listener.ora中的IP一致)

端口(Port):作為數據源的表所在的數據庫服務器的端口

服務名(Service Name):作為數據源的表所在的數據庫的Service Name

注意:版本(Version)選擇10.2,若登錄Design Center的用戶不具有訪問上述用戶表的權限,則需要執行賦權語句:

  1. select 'grant select on user2.'||t.table_name||' to user1;' from dba_tables t where t.owner='user2';  
  2. '或者賦給所有表的select權限  
  3. 'grant select any table to user2  
  • 導入表結構

一種方式是“新建”模塊后,選中“完成后導入”復選框,自動進入“導入”向導;另一種方式是選擇剛才建立的數據源模塊,單擊右鍵“導入”

  • 按照導入向導導入作為數據源的表

3.4 新建“目標數據模塊”

  • 建立目標數據模塊,“項目名稱-數據庫-Oracle”上右鍵“新建”
  • 按照向導輸入模塊名,選中“數據倉庫目標”單選按鈕
  • 點擊“位置”右側的“編輯”,進入連接信息編輯窗口,輸入目標表所在數據庫服務器的IP、端口、用戶名、口令
  • 目標表可以用DDL腳本在數據庫中建立;也可以在OWB中“項目名稱-數據庫-Oracle-目標數據模塊名稱-表”右鍵,“新建”通過圖形化界面建立;也可以直接在映射中建立(本例采用這種方式)。

3.5 設計“映射”

  • “<項目名稱>-數據庫-Oracle-<目標數據模塊名稱>-映射”,右鍵“新建”,輸入映射名稱,“確定”后進入映射編輯器;從左上角的“瀏覽器”導航窗體中選“可用對象”標簽,找到數據源模塊下的表,拖拽到右邊的“映射”框中
  • 從 “調色板(Palette)”框的“全部(All)”視圖中找到“表運算符(Table)”,拖拽到右邊的“映射”框中,此時彈出“添加表運算符(Add Table Operator)”對話框,選擇“創建未綁定的運算符(不具有屬性)(Create Unbound operator with no attributes)”,含義是在OWB的資料庫中還沒有這張表的定義(即還沒有采用3.4中建立目標表的另外兩種方法創建所需的目標表),輸入表的名 稱
  • “確定(OK)”后,進入映射設計階段,選中數據源JQ_CJJL表中的某個屬性拖拽都目標表T_JQ_CJJL的“INOUTGRP1”上即可,如下圖

  • “創建和綁定(Create and Bind)”T_JQ_CJJL表到“目標數據模塊”,這一步的作用是在OWB資料庫中“目標數據模塊”的“表”中添加T_JQ_CJJL,以便以后可以 部署這個表,也就是在目標數據庫的目標用戶下生成此表。“右鍵”T_JQ_CJJL表,選擇“創建和綁定”

  • “保存”,關閉“映射編輯器”
  • 在Design Center的“項目瀏覽器”下,找到“<項目名稱>-數據庫-Oracle-<目標數據模塊名稱>-表”,可以看到T_JQ_CJJL,這樣“創建和綁定”就成功了。

3.6 設計“進程流”

  • “<項目名稱>-進程流-進程流模塊”右鍵“新建”,輸入“進程流模塊”名稱如WF1,點擊“位置”右側的“編輯”,輸入Workflow管理員所在數據庫服務器IP、端口、用戶名和口令;如果數據庫是10gR2,Workflow版本是2.6.4。

  • "確定"后自動彈出“新建進程流包”窗口,輸入名稱
  • “確定”后自動彈出“新建進程流”窗口,輸入名稱。也可右鍵“進程流包”新建進程流。進入“進程流編輯器”
  • 進程流的作用是將映射串聯起來,確定映射的執行順序,映射可以串行,也可以並行。簡單起見,只加入一個映射。左上角“瀏覽器”選中“可用對象”找到目標數據模塊中的映射MAPPING_JOB,拖拽到右邊的“進程流(Process Flow)”框中
  • 在“START1”圖標和“MAPPING_JOB”圖標間畫連線,在MAPPING_JOB和END_SUCCESS之間畫連線,如下圖:

3.7 設計“計划”

  • 不同的“工作流模塊”和“目標數據模塊”需要設計不同的“計划”,下面介紹為“工作流模塊”建立“計划”
  • “<項目名稱>-計划”右鍵“新建”,輸入“計划模塊”名稱如SCH_WF,點擊“位置”右側的“編輯”,輸入Workflow管理員所在數據庫服務器的IP、端口、用戶名和口令
  • “<項目名稱>-計划-<計划模塊名稱>”右鍵“新建”,按照向導設置即可
  • 更改設置的“計划”,“<項目名稱>-計划-<計划模塊名稱>-<計划名稱>”右鍵“打開編輯器”,即可更改先前的設置

3.8 “配置”“工作流”的“計划”

通過這個步驟將上面兩個步驟中創建的工作流和計划進行關聯,即“工作流”將按“計划”執行。

  • “<項目名稱>-工作流-<工作流模塊名稱>-<工作流包名稱>-<工作流名稱>”右鍵“配置”,如下圖:

  • 點擊“引用的日歷(Referred Calendar)”右邊的空格,從下拉框中選擇3.7中創建的“計划”SCH_WF_DAY

至此,我們完成了Design Center中的設計工作,下面進入Control Center中部署和運行剛才所作的設計,完成整個ETL流程。

4 在Design Center中創建Control Center並設為缺省的Control Center

4.1 創建Control Center

  • 在Design Center的“連接瀏覽器”中,“控制中心”右鍵“新建”
  • 輸入CONTROL CENTER名稱,“編輯”CONTROL CENTER位置,輸入OWB資料庫所有者(注意是所有者owner,而不是一般用戶,一般用戶則需要設置其方案為所有者的方案方可)的用戶名、口令、所在數據庫服務器IP、端口
  • 雙擊剛才創建的CONTROL CENTER,進入“編輯控制中心”窗口,選擇“數據位置”標簽,從左邊的“可用位置”將需要的選到右邊“所選位置”中:數據源模塊位置、目標數據模塊位置、進程流模塊位置、計划模塊位置

4.2 將創建的Control Center設置為缺省

  • “<項目名稱>-配置-DEFAULT_CONFIGURATION”右鍵“打開編輯器”,選擇“詳細資料”標簽,下拉框中選擇剛才創建的

5 在Control Center Manager中部署和執行ETL

5.1 進入Control Center Manager

在Design Center中,選擇菜單“工具”-“控制中心管理器(Control Center Manager)”,輸入OWB資料庫所有者口令,即可進入控制中心窗口

5.2 注冊所有位置

在控制中心窗口左側列出了項目下的所有位置。

在本文的例子中,由於實際的目標數據庫和設計時的目標數據庫是同一個,並且在Design Center設計ETL過程時,我們編輯了所有的位置,因此不必在控制中心管理器注冊位置。但在實際應用中,一般地,開發設計時的目標數據庫、數據源、進 程流、計划所在的數據庫和實際使用的不同,因此在部署上線時需要重新注冊位置。這是OWB設計一次、部署多次的特性。

5.3 部署某個項目下所有對象

  • 選中“<項目名稱>”,右側的“對象詳細資料(Object Detail)”會列出所有對象,如表、映射、進程流、工作(配置了計划的進程流或映射)
  • 點 擊“默認操作(Default Actions)”,所有對象的“部署操作(Deploy Action)”列就會有“無(None)”變為“創建(Create)”,但是存在一些表是數據源表,無需部署,可以點擊“創建(Create)”改為 “無(None)”。然后點擊左上角的第四個小圖標“部署”。(對於表、外部表、物化視圖、隊列等對象,部署代表着生成DDL腳本,並且將這些腳本在注冊 位置的數據庫用戶下執行,這樣來創建上述對象。但數據源中已經有這些表了,如果再部署,就會報錯)

  • 注意查看下方的“控制中心作業(Control Center Jobs)”的第三列“Status”,如果都是綠色的對勾,說明部署成功;也可以查看上方所有對象的“部署狀態(Deploy Status)”列,變為“成功”,說明部署成功。“警告”可先忽略。

常見錯誤

(1)RPE-02072: 在 Oracle Workflow 資料檔案庫中尚未啟用 Oracle Workflow NLS 語言 ZHS。請使用 Oracle Workflow wfnlena.sql 服務器端腳本啟用該語言。

  1. C:\oracle\product\10.2.0\db_1\wf\admin\sql>sqlplus owf_mgr/owf_mgr @wfnlena.sql ZHS Y  

注意路徑。

(2)RPE-02260: Database User OWF_MGR must be a Control Center User. Please use the OWB Design Client against the Control Center repository to grant the Control Center User role.

您需要授予 Oracle Workflow (OWF) 用戶 owf_mgr 特定角色,使其具有在 Control Center 中執行進程流的權限。
您不必將 Control Center 的口令嵌入 OWF 用戶所擁有的數據庫鏈接中。Control Center 用戶具有高特權,其口令受到嚴格控制。
要注冊 OWF 用戶,可以從 Global Explorer 面板中的 Security > Users 節點使用 Register Warehouse Builder Users 向導。要訪問 Security 節點,請確保以信息庫所有者的身份登錄到 Design Center。
1)
如果尚未登錄,以用戶名/口令 rep_owner/rep_owner 登錄 Design Center。
在 Global Explorer 面板中展開 Security 節點。右鍵單擊 Users 節點並選擇 New。
注:在創建新用戶之前,您必須先保存或恢復您的更改。要保存以前的更改,請從 Design 菜單中選擇 Save All,或者單擊工具欄中的
此時出現 Create User 對話框。

2)
在 Create User 對話框中,您可以從可用數據庫用戶列表中進行選擇,也可以創建一個新用戶,該用戶將自動注冊為 Warehouse Builder 用戶。

在本教程前面的部分中,我們說明了如何安裝 Oracle Workflow Server,如何使用 Oracle Workflow Configuration Assistant,以及如何將 owf_mgr 指定為工作流帳戶。其結果是將 owf_mgr 創建為數據庫用戶。從 Available DB Users 列表中選擇 owf_mgr,單擊 > 將其移至 Selected Users 列表。單擊 OK。

注意,owf_mgr 用戶已添加到 Global Explorer 面板的 Security > Users 節點中。

5.4 執行“作業”

  • 如果“部署”全部成功,可以選擇右下方“已調度(Scheduled)”,選擇WF_JOB1_JOB,右鍵“開始”
  • 在“計划”的指定運行時間此“作業”就會開始運行

5.5 檢查結果是否正確

查看“目標用戶”下的目標表T_JQ_CJJL,是否記錄了從數據源表映射過來的數據。

推薦閱讀:

強烈推薦:http://pan.baidu.com/share/link?shareid=513304&uk=1476405502
比較簡單:http://download.csdn.net/detail/kingzone_2008/5492245
官方文檔:http://pan.baidu.com/share/link?shareid=513296&uk=1476405502

參考資料:

Oracle Corporation 2006.Oracle BI Warehouse Builder 10g Release 2自學教程

http://www.oracle.com/ocom/groups/public/@otn/documents/webcontent/229051_zhs.htm

http://doc.chinaunix.net/oracle/200802/159388_7.shtml


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM