ODI 定时任务

chkang0710

贡献于2013-07-07

字数:7721 关键词:

我当时就是按照这个文章学会如何配置ODI的定时任务的。具体地址:http://www.dbform.com/html/2008/516.html 对于设置ODI的定时执行场景,需要启动Scheduler Agent,在一个新的ODI安装完毕之后,默认的odiparams.bat文件中设置的是连接DEMO环境的数据库连接配置,如果我们在自己的数据库里创建了Master Repository和Work Repository,那么需要修改连接参数。 在我的测试环境中,我使用的是自己机器上Oracle 11g数据库,实例名是orcl11g,则需要做如下修改: set ODI_SECU_DRIVER=oracle.jdbc.driver.OracleDriver set ODI_SECU_URL=jdbc:oracle:thin:@localhost:1521:orcl11g set ODI_SECU_USER=snpm set ODI_SECU_ENCODED_PASS=b9yX4CpBkdmaP8Y3mYbaoye2p set ODI_SECU_WORK_REP=WORKREP1 set ODI_USER=SUPERVISOR set ODI_ENCODED_PASS=hZypfAZQf.Yo8VWVI6HZzc 其中: ODI_SECU_USER需要设置为创建Master Repository时候的用户名,在这里是snpm。 ODI_SECU_ENCODED_PASS需要用agent实用程序加密一下,用法是agent encode %PASSWORD%。 ODI_SECU_WORK_REP设置为创建Work Repository时候起的名字。 ODI_USER默认是SUPERVISOR,这是连接ODI的用户名。 ODI_ENCODED_PASS默认是SUNOPSIS,也需要用agent encode加密之后的值。 设置完毕,启动Scheduler Agent,会遇到下面的错误: java.lang.Exception: Agent is not declared in Topology Manager 我们还需要在Topology Manager -> Physical Architecture -> Agents里面创建一个Agent,填写Agent的名字,监听的机器,端口。如果需要设置Schedule,还需要在Topology Manager -> Logical Architecture -> Agents里面再创建一个Agent,将刚才创建的Physical Agent和此Logical Agent绑定在一起。 然后,在Designer -> Projects -> Scenarios -> Scheduling中创建一个执行计划,之后再次启动Scheduler Agent就OK了。 C:\OraODI\oracledi\bin>agentscheduler “-port=20910″ “-NAME=myFirstAgent” A JDK is required to execute Web Services with OracleDI. You are currently using a JRE. OracleDI: Starting Scheduler Agent … Starting Oracle Data Integrator Agent… Version : 10.1.3.4.0 – 30/10/2007 Agent in scheduling mode Number of items  for scheduled executions:0 08/17/2008 02:58:09 PM(main): Server Launched Aug 17, 2008 3:06:27 PM com.sunopsis.j.s a INFO: Start Thread[1001@2008/08/17_03:06:27:000,5,main] @ Aug 17, 2008 3:06:27 PM 最后一行显示了在Schedule中定义的计划被执行成功。 在Windows操作系统中可以把Agent程序设置为Service,通过以下命令设置,其中倒数两个参数分别为Physical Agent Name和Agent Port: agentservice.bat -i -s myFirstAgent 20910 运行成功之后,将会产生OracleDI Agent Scheduler myFirstAgent这样命名的Windows服务。 通过以下命令可以删除创建的服务: agentservice.bat -r -s myFirstAgent 对于设置ODI的定时执行场景,需要启动Scheduler Agent,在一个新的ODI安装完毕之后,默认的odiparams.bat文件中设置的是连接DEMO环境的数据库连接配置,如果我们在自己的数据库里创建了Master Repository和Work Repository,那么需要修改连接参数。 在我的测试环境中,我使用的是自己机器上Oracle 11g数据库,实例名是orcl11g,则需要做如下修改: set ODI_SECU_DRIVER=oracle.jdbc.driver.OracleDriver set ODI_SECU_URL=jdbc:oracle:thin:@localhost:1521:orcl11g set ODI_SECU_USER=snpm set ODI_SECU_ENCODED_PASS=b9yX4CpBkdmaP8Y3mYbaoye2p set ODI_SECU_WORK_REP=WORKREP1 set ODI_USER=SUPERVISOR set ODI_ENCODED_PASS=hZypfAZQf.Yo8VWVI6HZzc 其中: ODI_SECU_USER需要设置为创建Master Repository时候的用户名,在这里是snpm。 ODI_SECU_ENCODED_PASS需要用agent实用程序加密一下,用法是agent encode %PASSWORD%。 ODI_SECU_WORK_REP设置为创建Work Repository时候起的名字。 ODI_USER默认是SUPERVISOR,这是连接ODI的用户名。 ODI_ENCODED_PASS默认是SUNOPSIS,也需要用agent encode加密之后的值。 设置完毕,启动Scheduler Agent,会遇到下面的错误: java.lang.Exception: Agent is not declared in Topology Manager 我们还需要在Topology Manager -> Physical Architecture -> Agents里面创建一个Agent,填写Agent的名字,监听的机器,端口。如果需要设置Schedule,还需要在Topology Manager -> Logical Architecture -> Agents里面再创建一个Agent,将刚才创建的Physical Agent和此Logical Agent绑定在一起。 然后,在Designer -> Projects -> Scenarios -> Scheduling中创建一个执行计划,之后再次启动Scheduler Agent就OK了。 C:\OraODI\oracledi\bin>agentscheduler “-port=20910″ “-NAME=myFirstAgent” A JDK is required to execute Web Services with OracleDI. You are currently using a JRE. OracleDI: Starting Scheduler Agent … Starting Oracle Data Integrator Agent… Version : 10.1.3.4.0 – 30/10/2007 Agent in scheduling mode Number of items for scheduled executions:0 08/17/2008 02:58:09 PM(main): Server Launched Aug 17, 2008 3:06:27 PM com.sunopsis.j.s a INFO: Start Thread[1001@2008/08/17_03:06:27:000,5,main] @ Aug 17, 2008 3:06:27 PM 最后一行显示了在Schedule中定义的计划被执行成功。 在Windows操作系统中可以把Agent程序设置为Service,通过以下命令设置,其中倒数两个参数分别为Physical Agent Name和Agent Port: agentservice.bat -i -s myFirstAgent 20910 运行成功之后,将会产生OracleDI Agent Scheduler myFirstAgent这样命名的Windows服务。 通过以下命令可以删除创建的服务: agentservice.bat -r -s myFirstAgent ETL 控制中心 2009年3月3日 没有评论 不少ETL工具为了控制复杂的元数据,都有一个中央的控制台,像是OWB 的Control Center 应该每个使用OWB 的开发人员都见过了, Informatica 特有一个Matadata Manager 作为它的一个附加组件,ODI 同样也有一个基于WEB 的控制台oracledimn 可以让你连接到ODI 的repository 查看元数据. ETL 的控制中心都是为了方便开发人员能在众多的元数据中更好的管理ETL ,其中有3个主要的目的是每个ETL 工具都想达到的, 调度,执行报告和可视化的数据流 (或者叫专业一点Data Lineage). 调度就是让开发人员能够定时的执行ETL 任务,或者手工的启动一个ETL 任务, 现在定时框架这么多(比如java 的quartz), 这个功能算是最基本的. 执行报告则是报告每个ETL 任务的执行次数,执行时间,执行者,执行结果,输入的参数,输出的参数,成功装载多少条,更新多少条,失败多少条,删除多少条等等. Data Lineage 则是搞清楚整个数据的流向问题,某个转换数据源有哪些字段,输出到哪里,这可以帮助ETL 开发人员更好的理清ETL 开发的思路。   OWB 的控制台 在OWB 里面,你执行一个ETL 任务之后,你可以查看执行的结果,上图中的Row Activity 显示了数据的插入数,更新数,删除数,如果执行失败了,当然也会在下面面板的Job Summary 里面显示.   OWB 的data lineage 图形可视化做的非常标准,里面可以非常清楚的看到对象与对象之间的关系,你想要查看任何一个转换使用了那些数据源字段和目标字段都一清二楚.   ODI 的控制台 ODI 在安装包内也提供了一个WEB 的控制台,在oracledimn 文件夹下,你可以把它放到任何一个java web 容器里埋你比如tomcat 的webapp 目录下就算部署好了, 它需要能够连接你的ODI 使用的repository 的数据库. 比如它默认环境的demo repository (hsqldb) , 然后进入http://localhost:8080/oradimn , 选择repository 就是OracleDI local repository , 默认的用户名密码就是ODI 的demo repository 的admin 用户名和密码( SUPERVISOR和SUNOPSIS ) , 如果你使用的是自己建立的repository , 修改它WEB-INF 目录下的snps_login_work.xml 文件就可以了. 登录进去之后的界面差不多就上图, 左边导航栏包含了所有ODI 的元数据管理项了, 其中 执行菜单 下面的计划程序里面就可以安排定时执行的任务, 而 元数据菜单 下的 数据沿袭 就是展现ETL 任务的数据流的 (Data Lineage 翻译成沿袭还真是不太习惯)   Informatica Matadata Manager informatica 的元数据控制台是matadata manager , 默认是不包含在powercenter 里面的,跟它的Data Analysis 是属于额外组件,需要另外的license . 如果谁有informatica data analysis/matadata manager 的license 请给我一份(8.1.1 sp4 的)               informatica 的控制台可以说是做的最好的一个,其中它的metadata report 就有不少,从各个角度报告元数据的使用情况,而且查询条件非常细. 它的data lineage 也是非常的强,一个字段,一个字段都计算的非常的细, 最后一个图还显示了它的workflow 的其中一个transformation 的数据流动(浅黄颜色表示),字段,输入,输出,表达式.     最后 ETL 的元数据管理已经越来越重要,而且不少公司都已经认识到了不光要做好ETL工具的使用,而且管理元数据也同样重要. 商业的ETL 工具在这方面已经做得非常好了, 上面介绍的3种算是非常优秀的, 相比之下,开源的ETL 工具在这方面就要差很多. 不过成本也是另外一个非常重要的考虑方面,就看各自的需求了. 除了使用成熟的ETL工具之外, 不少公司对于ETL 也有自己的一套架构,比如使用ETL 编程框架 或是手工代码+sql 类型, 不太清楚这方面如果公司需要管理元数据会有怎么样的一个思路,感觉上如果使用ETL 编程框架或者手工代码+sql 的方式,元数据产生的过程不容易收集,如果只是调度还比较简单, 但是执行报告 尤其是 data lineage 怎么做就……  ,  如果哪位有这方面经验不妨交流交流. ETL control center, ETL, metadata, odi OWB 与ODI Data Profiling and Quality 比较 2009年3月2日 没有评论 数据质量已经成为企业数据信息最重要的一部分, 而ETL工具提供的数据质量控制工具一直都是比较ETL工具强弱的重要部分. 数据质量的控制一般分为两个阶段,Data Profile 和Data Quality , Data Profile 简单来说就是计算出数据的各种统计值,比如唯一值,频率等等, 然后我们通过Profile 出来的结果判断出那些是有质量问题的数据,然后选择相应的解决方式. Data Quality 指的就是在我们知道了Data Profile 的结果之后,通过ETL过程清理掉那些有质量问题的数据. Oracle 提供的两款ETL 工具OWB 和 ODI 都已经提供了数据质量控制的组件 , 现在来看一下这两个工具的功能如何. 分析的都是oracle 自带的示例方案, sh schema 里面的 OWB 的Data Profile 组件: OWB 的界面布局和操作更加紧凑一些,喜欢所有东西放一起. OWB 的Aggregation面板, 里面显示的是每一列的总体信息,最大值,最小值,唯一值个数, 其中上面的Six-sigma 是OWB 特有的, 数值为1-6 ,越高表示质量越好. 上面全部是7 , 表示完美,因为这个示例数据本身已经过滤过了的.     OWB 默认的配置选项是探测数据类型的,上图还显示了每一列符合它所属的数据类型的百分比.     OWB 最重要的一个界面.Domain 面板,Domain 在OWB 里面表示每一列的唯一值,上图就是显示了sales 表的PROD_ID 的Domain 统计情况, 注意左边设置里面的 "Domain Value Compliance Min Rows Percentage" 选的是1 ,  所以右边的PROD_ID 的唯一值的频率如果小于1% 就认为是有问题的数据(红色表示),     ODI 的Data Profile 组件: ODI 的操作界面和操作方式简单而高效, 基本所有的方式都是点击下转. 而且界面响应速度要比OWB 快很多,整体的运行速度也比OWB 快, OWB 使用java swing 做的界面虽然摆脱了swing 做出的默认比较丑的样子,但是界面响应速度上总是感觉有延时. ODI 则响应速度快多了. 默认ODI 安装的时候不让选择安装语言,它会根据你的操作系统的语言安装相应语言, 而且进入ODI 后也不能设置语言环境,OWB 这点则好多了, 可以选择自己想要显示的语言.   想要进行Profile 项目首先创建Entity (实体), 里面分析的仍然是sh 的sales 表. 上面ODI 显示了, 总行数,最长行,最短行等.   在左边项目里点击Entity 的属性,列出当前实体的所有属性总的统计信息. 之后在你想要看的某一列上右键点击,就可以选择下转到对应列的详细信息了.   上图中就列出了sh 的sales 表Amount Sold 列的信息, 其中列出唯一值,最小值,最大值,空值等.   你可以在列的唯一值上右键单击, 选择下转到详细的唯一值数据   在选择的唯一值数据中,可以继续下转,细化到真正数据库中满足这些唯一值的数据   ODI 的一大特色就是可以分析两表之间连接列的属性, 上图就显示了sales 表的PROD_ID 列和Products 表的PROD_ID 列的连接属性, 左侧匹配行,右侧匹配行,内部连接行等等. 你还可以点击连接属性选择生成维恩图. (维恩图大概从离开初中之后就没听过了,这是第一次听到,看来我初中的东西还没忘光,嘿嘿!!!)     ODI Quality Project 设定: OWB 和ODI 都可以即时从Profile 结果中创建Quality Project ,  上图中看到的就是ODI 设置Quality Project  里面转换的属性,比如对Products 表不容许空值超过多少个,不容许某些特定列的特定值出现等.   你也可以设置更细致的ODI 属性, 默认的ODI 是不进行数据类型检查的,OWB 会默认检查. 你也可以修改这些设定.   OWB 和 ODI 的性能 从操作上来说,OWB 的操作更为麻烦一些,任何东西都要先部署到Control Center , 然后还要编译, 然后才能运行使用。 ODI 的操作相对简单, 它不在一个界面显示过多的东西,任何信息都是一步一步点击, 界面的响应速度也很快. 从OWB 和ODI 运行Profile 的速度来看,ODI 也具有明显优势, 上面同样分析的是sh 的sales 表,OWB 即使已经编译部署到了Control Center , 对于92万条记录的数据量还是使用了180多秒, 而ODI 即使包括操作时间在内也只花了不到15秒时间,整个运行的速度还是差距很大.   OWB 和 ODI 在Data Quality Project 上比较 OWB 在数据清理上基本按照如下流程: 从Profile –> Data Rules –> Corrections –> Mappings –> Load Cleanse 一条直线,其中Profile 之后可以选择自动让OWB 生成Data Rules, 它的Corrections 和 Mappings 也基本上都是向导操作,比较简单。而ODI 则没有类似功能,你要自己创建Quality Project, 然后手工创建ETL操作清理操作,不过好在速度很快,使用起来也很简单. 另外一个ODI 特有的功能则是ODI 有Time Series Data Quality Project, 它可以针对随着时间变化而持续跟踪数据质量的变化,这个功能主要针对对时间要求比较严的数据质量项目,可以提供更准确的随着时间变化数据质量是变好还是变坏的报告.

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 3 金币 [ 分享文档获得金币 ]
0 人已下载

下载文档

相关文档