关于ODI agent的配置部署
分类: Linux
最近,做了几个ODI项目的部署,发现ODI agent所在的位置对整个E-LT工作的影响还是比较大的,根据Oracle的官方说法,agent一般需要部署在目标端的数据库服务器上,或者repository数据库服务器上(如果repository直接采用目标服务器就更简单了),但在实际的使用中,建议尽量还是将agent部署在目标端所在的服务器上。
一、agent的分类
在ODI中,有三类agent,一是/bin目录下直接运行agent.sh或agent.bat,该类agent只能被动调用。
二是/bin目录下的agentscheduler.sh/agentscheduler.bat,从名字可以看出,它可以自动执行计划好的工作,第三类是designer.bat设计界面,该界面在调试时可以自己作为一个agent来运行。其中第一类和第三类agent不需要修改任何东西。第一类直接运行agent.sh/agent.bat就可以了,第三类什么都不用起,只是在测试interface或者package时才会用到。
二、agent不同部署方式带来的区别

如上图所示,如果agent部署在repository(以下简称元数据服务器)上,而元数据服务器又和目标数据库不在一个服务器上,那么命令的流向(途中红色线)为:agent首先登录到源数据库,抽取数据,取到元数据库所在的服务器,然后agent再登录到目标服务器,将数据加载到目标数据库。数据的流向为:源数据库到元数据服务器到目标数据库。
如果我们将agent部署在目标服务器,如下图所示,此时,数据流会从源直接流向目标,agent在目标端可以利用目标端数据库的内置客户端工具直接将数据加载到数据库,从而避开JDBC调用。

Agent说白了就是一个java小程序,既可以通过jdbc driver作为源和目标数据库的客户端登录到数据库服务器操作,也可以调用本地操作系统的命令,因此odi在数据的E-LT过程中,最简单但效率最低的方法是完全采用JDBC方式抽取、加载数据。最快的方式是采用数据库的内置客户端命令抽取加载数据,如DB2的load,sqlserver的bcp,oracle的sqlloader。当然要调用数据库客户端,agent所在的机器必须有相应数据库的客户端软件。下面是几个agent部署的例子:
- 1. AS400上文件加载到DB2:

具体解释请参见上面的英文,这是在oracle openworld的pdf里面截出来的。
- 2. 远程文件入库:

此时agent应该安装在文件所在的服务器,而且该机器需要安装目标端数据库的客户端。
- 3. 远程同构数据库,该方式下,数据一般是在数据库内部流动,如oracle的dblink,sqlserver的linked server,sybase的CIS,agent的位置无所谓,但仍建议在目标端。

- 4. 远程异构数据库集成,此时agent的配置是比较讲究的,如果数据的抽取和加载都采用数据库的内置客户端,那么如果agent在源数据库端,则源数据库端需要安装目标数据库的客户端,反之亦然。当然ODI内置了一个基于JDBC数据库抽取工具sqlunload,如果目标端是生产系统,客户不允许部署任何东西,建议采用该工具,效率还是不错的。

三、如何安装agent
ODI的agent安装比较简单:
- 1. 将安装ODI机器设计界面的服务器上ODI目录下/bin,/drivers和/lib目录直接拷贝到目标或者源服务器上。
- 2. 在服务器上如果没有jdk1.5或以上,建议安装jdk1.5或以上。
- 3. 指定ODI_JAVA_HOME环境变量,或者修改odiparams.bat/odiparams.sh到JDK的安装目录。
- 4. 如果不需要schedule的工作,直接执行 /bin目录下的agent.sh/agent.bat即可,该程序默认端口为20910,如果需要指定别的端口,则运行agent.bat –name= -port=
- 5. 如果需要运行schedule的工作,则首先需要修改odiparams.bat/odiparams.sh文件,把其中连接master repository的一段修改成您自己的driver和url,如下所示:
JDBC driver to access the Master Repository:
set ODI_SECU_DRIVER=oracle.jdbc.driver.OracleDriver
JDBC URL to access the Master Repository:
set ODI_SECU_URL=jdbc:oracle:thin:@1.128.5.52:1521:ORADB
Database Username to access the Master Repository:
set ODI_SECU_USER=odi1013m
Database Password to access the Master Repository:
set ODI_SECU_ENCODED_PASS=b9yHYSNunqZvoreC6aoF0Vhef
Name of the Work Repository:
set ODI_SECU_WORK_REP=WORKREP1
ODI Username for ODI Security:
set ODI_USER=SUPERVISOR
ODI Password for ODI Security:
set ODI_ENCODED_PASS=LELKIELGLJMDLKMGHEHJDBGBGFDGGH
特别注意这是链接master repository的信息,和您启动designer登录时的信息一模一样,您可以从designer的登录界面里面copy过来。
这些参数中有两个加密过的密码,具体的加密方法为,到您刚才copy过来的/bin目录下,运行 ./agent.sh encode <您的密码>,然后将加密过的字符copy到odiparams.sh中相应的位置即可。
另外要特别注意的是copy的/drivers目录下是连接所有源、目标以及元数据库服务器的jdbc driver,如果您的整个架构中加入了新的数据源,千万别忘了把相应的jdbc文件copy到所有agent所在服务器的drivers目录下。
在一个ODI生产环境中,可以根据需要配置多个agent,不一定是一个。
关于ODI agent的配置部署的更多相关文章
- 【WCF全析(二)】--服务配置部署详解
上篇文章主要讨论了WCF的基本内容,其中包括WCF的术语.创建方法及WCF在开发过程中使用的意义,它不仅能够提供程序之间的通信,而且还能提供程序和数据间的通信,WCF提供了多样化的程序 ...
- aways on 配置部署(二)——配置域
前一篇中我们基本了解了配置aways on的三个步骤,本篇就具体讲解如何配置域. DNS的配置 上篇可以看到三台服务器的ip地址,网关,DNS等配置,其中sqlDNS服务器的dns为自己的ip地址,s ...
- zabbix3.0 agent安装配置
zabbix3.0 agent安装配置wget http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-agent-3.0.0-2.el6.x86 ...
- 3-3 Hadoop集群完全分布式配置部署
Hadoop集群完全分布式配置部署 下面的部署步骤,除非说明是在哪个服务器上操作,否则默认为在所有服务器上都要操作.为了方便,使用root用户. 1.准备工作 1.1 centOS6服务器3台 手动指 ...
- 3-2 Hadoop集群伪分布模式配置部署
Hadoop伪分布模式配置部署 一.实验介绍 1.1 实验内容 hadoop配置文件介绍及修改 hdfs格式化 启动hadoop进程,验证安装 1.2 实验知识点 hadoop核心配置文件 文件系统的 ...
- zabbix agent监控主机配置
zabbix agent监控主机配置 环境说明 系统版本 CentOS 7.2 x86_64 软件版本 zabbix 3.0.18 1.监控zabbix服务器端 1.1 安装zabbi ...
- Zabbix agent端 配置
Zabbix agent端 配置 agent端环境 zabbix-client:RHEL8 IP:192.168.121.11 一.安装 Zabbix 源 [root@zabbix-client ~] ...
- SQLServer 复制和数据库镜像 具体配置部署
SQLserver 能够把镜像和复制同一时候部署,结合了两方的高可用性.能够使数据库得到更好的高可用性和容灾的保证. 关于镜像:f=255&MSPPError=-2147217396" ...
- Oracle 12c(12.1.0.5)OEM server agent 安装配置
注意: 此文档为生产上操作文档,省略了IP,oracle用户server,agent 端至少需要sudo,ping,ssh,创建目录权限. 一.安装要求 1.1. 系统情况一览 IP 数据库 OEM ...
随机推荐
- Spring随笔 - 事务隔离级别
Spring提供5中事务隔离级别: ISOLATION_DEFAULT:使用数据库后端的默认隔离级别. ISOLATION_READ_UNCOMMITTED:允许读取尚未提交的数据变更.可能会导致脏读 ...
- sublime前端编辑器入门与个人使用经验分享
Sublime Text(以下简称sublime)是一款很好用的代码编辑器,小巧且很灵敏,几乎可以编写大部分主流的计算机语言代码,更是堪称前端代码编辑神器. 你百度一下会发现许多sublime的安装和 ...
- Android_CodeWiki_03
1.发送不重复的通知(Notification) public static void sendNotification(Context context, String title, String m ...
- distance.c
#include "stdio.h" #include "string.h" #include "math.h" #include &quo ...
- AutoItLibrary库入门
一.AutoItLibrary入门 1. 为什么要使用AutoItLibrary Selenium2library在我们实际测试web页面的时候基本上已经够用了,不过还是会有部分情况下会脱离Selen ...
- listview优化
http://www.2cto.com/kf/201108/99928.html 项目用到ListView,由于要用到ImageView,图片源不是在资源里面的,没法使用资源ID,因此无法直接使用Si ...
- perl 继承写法
use base (Critter); 和 BEGIN{ require Critter; @ISA=qw/Critter/; } 这两种写法是等价
- C语言入门(17)——C语言数组应用的一个实例
本篇通过一个实例介绍使用数组的一些基本模式.问题是这样的:首先生成一列0-9的随机数保存在数组中,然后统计其中每个数字出现的次数并打印,检查这些数字的随机性如何.随机数在某些场合(例如游戏程序)中是非 ...
- RHEL与Centos
一直在用centos,但对他的由来以及与RHEL的关系不是很明白,查些资料,小记一番. 倘若一说到Red Hat这个大名,大家似乎都听过. Qustion1:Red Hat家族中有哪些产品呢? Red ...
- 学习Java这几个快捷键你得知道(不断更新中)
java中的System.out.println();的快捷键 --------先输入sysout 在按 alt + /