本文简述使用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

数据仓库(七):Oracle Warehouse Builder(OWB)创建数据仓库的更多相关文章

  1. Oracle Warehouse Builder(OWB) 安装报seeding owbsys错误的解决

    今天在RHEL6.4上安装Oracle Warehouse Builder 11.2时在最后一步报错,打开日志查看有例如以下信息: main.TaskScheduler timer[5]2014052 ...

  2. 《Oracle Database 12c DBA指南》第二章 - 安装Oracle和创建数据库(2.1 安装Oracle数据库软件和创建数据库概览)

    当前关于12c的中文资料比较少,本人将关于DBA的一部分官方文档翻译为中文,很多地方为了帮助中国网友看懂文章,没有按照原文句式翻译,翻译不足之处难免,望多多指正. 2.1 安装Oracle数据库软件和 ...

  3. Oracle基于学习3--Oracle创建用户和授权

    Oracleserver端的操作,如以下一般: 1)       安装Oracleserver软件 2)       创建数据库(安装时自己主动创建) 3)       配置监听(安装时自己主动配置) ...

  4. oracle 数据库中(创建、解锁、授权、删除)用户

    上文我们已经建立了名为orcl66的数据库. 想要在数据库中创建.修改用户需要我们以管理员权限登录到数据库中. 首先我们通过sqlplus命令登录连接数据库. 输入sqlplus命令--用户名: sy ...

  5. Oracle物化视图的创建及使用(一

    Oracle物化视图的创建及使用 http://blog.csdn.net/tegwy/article/details/8935058 先看简单创建语句: create   materialized  ...

  6. (转)Maven学习总结(七)——eclipse中使用Maven创建Web项目

    孤傲苍狼只为成功找方法,不为失败找借口! Maven学习总结(七)——eclipse中使用Maven创建Web项目 一.创建Web项目 1.1 选择建立Maven Project 选择File -&g ...

  7. Oracle 表单的创建

    1.-- 连接 conn hu/aaa; -- 创建表空间 Create tablespace computer2005 nologging datafile 'd:/Oracle/product/1 ...

  8. Oracle Form Builder

    Oracle Form Builder 是Oracle的一个开发工具,可以针对Oracle公司的E-Business Suit的ERP系统开发的.对应的还有reports builder. Oracl ...

  9. oracle 非sys用户创建新用户 授权后 plsql看不到视图

     问题: oracle 非sys用户创建新用户 授权后  plsql看不到视图 答案: 新用户查询视图时,视图名称前需要添加 视图所属用户. 如user用户新建newUser用户,newUser用户查 ...

随机推荐

  1. n多边形面积

    “ 改革春风吹满地,不会AC没关系;实在不行回老家,还有一亩三分地.谢谢!(乐队奏乐)” 话说部分学生心态极好,每天就知道游戏,这次考试如此简单的题目,也是云里雾里,而且,还竟然来这么几句打油诗.好呀 ...

  2. linux自旋锁

    一.前言 在linux kernel的实现中,经常会遇到这样的场景:共享数据被中断上下文和进程上下文访问,该如何保护呢?如果只有进程上下文的访问,那么可以考虑使用semaphore或者mutex的锁机 ...

  3. Three.js基础

    Three.js基础探寻一 Three.js基础探寻一   1.webGL 一种网络标准,定义了一些较底层的图形接口. 2.Three.js 一个3Djs库,webGL开源框架中比较优秀的一个.除了w ...

  4. Linux02--文件系统与磁盘管理

    1.文件默认权限umask    umask命令用于指定新建文件和目录时的默认权限.    root的umask默认值是022,普通用户的umask值为002.    新建文件的默认权限=666 - ...

  5. Oracle 导出HTML

    http://www.linuxidc.com/Linux/2010-10/29133.htm Oracle 执行计划: http://czmmiao.iteye.com/blog/1471756 h ...

  6. wchar_t 、UTF-8、UTF-16的转换方法 - luketty的专栏 - 博客频道 - CSDN.NET

    wchar_t .UTF-8.UTF-16的转换方法 - luketty的专栏 - 博客频道 - CSDN.NET wchar_t .UTF-8.UTF-16的转换方法

  7. poj - 1228 - Grandpa's Estate

    题意:原来一个凸多边形删去一些点后剩n个点,问这个n个点能否确定原来的凸包(1 <= 测试组数t <= 10,1 <= n <= 1000). 题目链接:http://poj. ...

  8. libc++abi.dylib handler threw exception

    在iOS开发时,有时候遇到libc++abi.dylib handler threw exception这样的异常,  虽然在断点出加上了All Exceptions,也断到相应的代码了,但是没打印对 ...

  9. Ignatius and the Princess II(全排列)

    Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K ( ...

  10. n!的近似值 (stirling approximation)与 大O记法(big -O- notation)

    參考wiki: 1.n!的近似值 (stirling approximation) (中文) http://zh.wikipedia.org/wiki/%E6%96%AF%E7%89%B9%E9%9D ...