本文简述使用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: 指定源位置界面中,点击“浏览”按钮,定位companionstageproducts.xml文件,然后点击“下一步”按钮,选择“Oracle Database 10g Products 10.2.0.1.0”即可正常安装这些组件。步骤如下:
安装了oracle10g,在D:oracleproduct10.2.0下。
安装了OWB10g2,在D:oracleproduct10.2.0OWB下。
下载了Oracle Workflow 2.6.4。安装时候,指定主目录详细信息如下:
名称:OraDb10g_home1
路径:D:oracleproduct10.2.0db_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的用户不具有访问上述用户表的权限,则需要执行赋权语句:
- select 'grant select on user2.'||t.table_name||' to user1;' from dba_tables t where t.owner='user2';
- '或者赋给所有表的select权限
- '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 服务器端脚本启用该语言。
- C:oracleproduct10.2.0db_1wfadminsql>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