Oracle数据仓储DBA的MetaBase脚本

日期: 2008-08-21 作者:Donald K. Burleson翻译:April 来源:TechTarget中国 英文

对于任何Oracle DBA来说,一个最有挑战性的领域就是对复杂的job stream进行管理。幸运的是,Oracle已经有dbms_scheduler包和Oracle Warehouse Builder MetaBase Plus (OMB)脚本语言可用来对它进行管理。 就Oracle数据仓库管理而言,Oracle Warehouse Builder产品提供一种能够整合抽取、转换和装载等命令的OMB脚本,这种整合要依靠能进行错误检测、确认以及数据配置的内部工具才能进行。对OWB环境来说,它就是一种类似TP的检测器(CICS)。

一方面Oracle公司在Oracle 10g Enterpris……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

对于任何Oracle DBA来说,一个最有挑战性的领域就是对复杂的job stream进行管理。幸运的是,Oracle已经有dbms_scheduler包和Oracle Warehouse Builder MetaBase Plus (OMB)脚本语言可用来对它进行管理。

就Oracle数据仓库管理而言,Oracle Warehouse Builder产品提供一种能够整合抽取、转换和装载等命令的OMB脚本,这种整合要依靠能进行错误检测、确认以及数据配置的内部工具才能进行。对OWB环境来说,它就是一种类似TP的检测器(CICS)。

一方面Oracle公司在Oracle 10g Enterprise Manager图形用户界面(GUI)方面取得重大进展,另一方面一些高级Oracle专家仍然觉得有必要利用更加活跃的脚本环境。一个图形用户界面不能完成所有的任务,并且有些高级操作需要更加灵活、精确的工作控制逻辑:

预定执行——工作流在预先确定的时间、先决条件下完成。确保“遗漏”工作都是预先确定的。

条件执行——在已完成任务情况的基础上执行新的任务。

对错误警告和工作流的确认——Oracle DBA需要确定所有可能出错的范围并创建用户退出窗口终止执行直到解决所有重要事情。

Oracle数据仓库专家在管理ETL时有两种方法:

亲自动手(DIY)——如果Oracle DBA已经懂得怎样创建batch stream、检测错误和进行有条件执行,那么写ETL就是一种方法。Oracle10g dbms_scheduler包能够用来安排job-stream,或用习惯做法:OS shell脚本。DIY方法更加灵活,这样你就可以选择最佳的处理方法和技术,而不是依靠OWB提供的工具。Tim Hall在这方面撰写了一本很好的书,书名为Oracle Job Scheduling,它是在Oracle环境中执行复杂工作任务的最全面的参考书。

使用OracleMetaBase脚本——OMB是Tcl语言的扩展(全称为tickle),它具有下列强有力的特性:程序设计语言,包括复杂的布尔运算符、变量支持和loop循环(FOR, WHILE, REPEAT-UNTIL)。Oracle数据仓库Tcl扩展是为OMB定做的,所以进行复杂的数据配置以及规划job stream。跟Java一样,OMB有独立的平台而且在Mainframe或者Macintosh上运行MetaBase时不需要做任何的改变。

当然,MetaBase需要你额外购买Oracle Warehouse Builder来处理ETL,但是OWB OMB的脚本语言是一种具有吸引力、并能代替“亲自动手”的方法,这种方法取决于你ETL处理的经验水平。

内部OMB语句

让我们更仔细地观察OMB环境。OMB跟SQL*Plus很相似,它可以调用内部命令目录来处理OWB数据映射。这些数据映射能嵌入(一个层级结构),并且OMB给出命令允许你从Tcl程序中调用这些映射。以下是两种OMB命令:

元数据定义语言(MDL)——如DDL一样,通过它你能创建和下拉OMB对象。MDL对象类型包括项目、模块、表、映射以及工作流程步骤。

OMBalter——用来为Warehouse Builder元件改变元数据。在下列的示例中,要注意类似UNIX反斜线符号命令延续字符:


ombalter mapping ’MAP_NAME’ modify operator ’join’ 
set properties join_condition) 
values (’fact.empno = emp.empno) 

OMBcreate——用这一命令在OWB中创建一个元件,也许是一个项目、模块、表、映射或者工作流程步骤。

OMBdrop——用来下拉存放中的命名对象。

元数据维护语言(MML)——类似Oralce DML,MML命令允许我们改变(增加、更新、删除)命名对象。一些MML命令还包括:

OMBCC——这是“更改内容”命令,其用法和UNIX以及DOS "cd"命令一样,都是用于更改OWB目录。

OMBCOMMIT——负责业务办理。

OMBCOPY——这是一个手动命令,用于复制和该命令同以类型的一个或者多个对象。


ombcopy ’AN_EXTSTING_MAP’ to ’A_NW_MAP’ replacement

OMBDEPLOY——它通过OWB运算时间表给具体的数据库部署一个具体的对象。

OMBLIST——OMBLIST命令包含在目录命令内,该目录在具体的子目录结构中列出了所有OWB对象。

OMBRECONCILE——用于协调OWB元数据定义和数据库元数据定义。

ODTUG文件明确提出“用Oracle的MetaBase Plus语言创建和部署映射和工作流”,使用Oracle的MetaBase对传统工作流应用软件来说确实是个很不错的选择,下面是MetaBase范围Tcl工作范例:下面的例子同样说明部署OWB流程指向Oracle Workflow引擎。首先,它连接存储库,改变了STUDENT_YEAR_4模块内容。然后开始用一个特殊的命名模式找回所有的工作流包,内部loop循环还能对该部署什么样的工作流进行控制。


proc owb_deploy_workflows_all {} {
 OMBCONNECT OWB_DEV/XXX@SERVER:1521:DBPROD
 OMBCC ’STUDENT_YEAR_4’
 OMBCONNECT RUNTIME ’SASI_CURR_RT’ USE PASSWORD ’XXX’
 set ModList [ OMBLIST PROCESS_FLOW_MODULES ’CURR_W.*.’]
 set i 1
 foreach ModName $ModList {
    puts "Accessing WF package: $ModName"
    OMBCC ’$ModName’
    set mapList [ OMBLIST PROCESS_FLOW_PACKAGES ’LD_ACNR.*.’ ]
    set J 1
    foreach mapName $mapList {
       puts " deploying: $mapName"
       OMBcreate TRANSIENT DEPLOYMENT_ACTION_PLAN
       ’DEPLOY_PLAN’ ADD ACTION ’WORK_FLOW_DEPLOY’
       SET PROPERTIES (OPERATION)
       VALUES (’create’) SET REFERENCE PROCESS_FLOW_PACKAGE
       ’$mapName’
       OMBDEPLOY DEPLOYMENT_ACTION_PLAN ’DEPLOY_PLAN’
       OMBdrop DEPLOYMENT_ACTION_PLAN ’DEPLOY_PLAN’
       OMBCOMMIT
       incr J
       }
OMBCC ’..’

小结

Oracle数据仓库DBA能否像选择ETL脚本语言一样选择OMB脚本? 由于OWB通常带有数据仓库许可证,因此它一般都是免费工具,任何数据仓库DBA都想希望能够在非GUI环境中处理OWB。唯一的缺点就是需要学习Tcl语言。

翻译

April
April

相关推荐