Learning ODI – Start Scheduler Agent

对于设置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

Learning ODI – Set user interface language

在中文版的操作系统上,或者是英文版的操作系统但是设置了”Language for non-Unicode program”为”Chinese(PRC)” 的情况下,ODI的界面始终是中文的,这给学习过程造成了很大的困惑,因为所有的文档都是英文的,在文档中提到的名词我需要去猜测在ODI的中文界面中是哪个词。

如果说Model翻译成“模型”,DataStore翻译成“数据存储”还可以简单地对应上,那么Controls翻译成“控制”,Flow翻译成“流”,Scenario翻译成“方案”就不得不花费一些时间去对照了。

所以,为了加快学习进程,需要把ODI的界面设置成英文的。

编辑ODI安装目录中bin目录下的odiparams.bat文件,设置如下一行,然后重新启动ODI即可:

set ODI_ADDITIONAL_JAVA_OPTIONS=”-Duser.language=en” “-Duser.region=US”

英文版界面清爽多了。:)

附加修改Oracle SQL Developer的界面语言方法:
编辑sqldeveloper\sqldeveloper\bin\sqldeveloper.conf文件,加入

AddVMOption -Duser.language=EN
AddVMOption -Duser.region=US

Learning ODI – Set ODI_JAVA_HOME

项目需要,所以正在学习使用Oracle Data Integrator,一个收购了Sunopsis之后整合的Oracle BI产品。

ODI + CDC可以实现异构数据库之间的数据抽取和数据同步,至少到目前看来是一个强大的工具。目前在测试使用的是Windows版本的Oracle Data Integrator 10.1.3.4.0

简单记录一下学习过程中发现的问题以及解决方法。

发布过程中,在创建了一个Scenario之后,可以通过操作系统命令行的方式调用这个Scenario。但是可能会出现以下的问题:

C:\OraODI\oracledi\bin>startscen LOAD_SALES_ADMINISTRATION 001 GLOBAL “-v=2”
The Java Virtual Machine was not found at the following location:
The ODI_JAVA_HOME environment variable is not defined correctly.
Please set this variable in odiparams.bat.
OracleDI: Starting scenario LOAD_SALES_ADMINISTRATION 001 in context GLOBAL …
The system cannot find the path specified.

简单的解决方法就是使用安装ODI时自带的JVM,设置操作系统的环境变量ODI_JAVA_HOME即可。

C:\OraODI\oracledi\bin>set ODI_JAVA_HOME=C:\OraODI\jre\1.4.2

C:\OraODI\oracledi\bin>echo %ODI_JAVA_HOME%
C:\OraODI\jre\1.4.2

C:\OraODI\oracledi\bin>startscen LOAD_SALES_ADMINISTRATION 001 GLOBAL “-v=2”
A JDK is required to execute Web Services with OracleDI. You are currently using
a JRE.
OracleDI: Starting scenario LOAD_SALES_ADMINISTRATION 001 in context GLOBAL …
08/15/2008 08:05:59 下午(main): 正在为方案创建会话 :LOAD_SALES_ADMINISTRATION –
001
08/15/2008 08:05:59 下午(main): Session : 8005 is running
08/15/2008 08:06:05 下午(main): Session : 8005 finished with return code : 0
DwgJv.main: 退出。 返回代码:0