ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

ODI 12cR1安装实战:JEE模式必须先装Infrastructure,附避坑指南

ODI 12cR1安装实战:JEE模式必须先装Infrastructure,附避坑指南

简介:这是一份自编的 Oracle Data Integrator 12cR1(12.1.3.0.0)安装全流程文档,适合需要独立搭建 ODI 环境的运维、数据开发及中间件实施人员。文档以实操为主线,先厘清企业版 JEE 安装与独立安装的边界,强调 JEE 安装前必须部署 Oracle Fusion Middleware Infrastructure,也提示 JDK 版本、odi64.exe 首次启动时的 JDK 主目录设置等常见陷阱,能显著减少安装失败概率。资源包为单个 docx 文档,大小 2.23MB,内容按安装顺序分步撰写,配以界面说明,读者可对照操作。文档覆盖两个核心安装文件的获取与解压、以 java -jar 启动安装向导、按序安装基础组件与 ODI 本体,并延伸到 ODI Studio 中操作员、拓扑、接口、映射和知识模块的基本配置思路。目前已有 264 人学习下载。对初次接触 Oracle 中间件或需要快速搭建实验环境的人来说,这份文档把分散的知识点整理成一份可随查的安装手册,兼具步骤解释和避坑提示,实用性较强。

1. ODI 12cR1 安装其实栽在第一步:JEE 必须先过 Infrastructure

第一次装 ODI 12cR1,我犯了个蠢错:下载了fmw_12.1.3.0.0_odi_Disk1_1of1.zip,解压后直接java -jar启动,安装向导走到一半就报错退出,日志里写着找不到合理的 Middleware Home。查了一圈才明白,ODI 的企业级 JEE 安装必须先装 Oracle Fusion Middleware Infrastructure,两个安装包缺一不可,安装顺序本身就反直觉。ODI 12cR1(12.1.3.0.0)是数据集成场景里最常用的 ETL 工具版本,部署前对 JDK 版本、安装顺序、目录规划没数,装完往往卡在最后一步:odi64.exe 起来后一直提示找不到 JDK home。这篇文章把我复现过的一套安装流程完整记下来,从两个 zip 的解压、Infrastructure 安装、ODI 二次安装到装完验证跑通,适合正在搭数据仓库、做数据迁移的开发者照着一步步走。

2. 安装前的环境准备:JDK 版本、两个安装包和目录规划

ODI 12cR1 的安装不是下载一个 zip 就能跑完的,前置依赖里最容易忽视的是 JDK、两个安装包的关系、Middleware Home 目录这三种东西。这个阶段多花十分钟,后面能少折腾一小时。我把每一项拆开讲清楚。

2.1 JDK 版本判断:为什么我只用 1.8

ODI 12.1.3 的安装器本质是个 Java 程序,启动、解压、写 Oracle Home 全靠它,所以 JDK 环境是最先要确认的。项目文档要求 1.7 以上,这些年我装下来的经验是:直接上 1.8,别用 1.7 的老补丁版本,也别上 11/17 这种太新的版本——老安装器对太新的 JDK 兼容并不好,图形界面刚弹出来就闪退是常态。这里有个判断技巧:安装器实际用的是JAVA_HOME指向的 JDK,而不是 PATH 里随便哪个 java。所以打开 cmd,先看一眼java -version和JAVA_HOME到底指向哪:

:: 检查当前 Java 版本 java -version echo %JAVA_HOME% :: 临时把 JDK 1.8 放到 PATH 最前 set PATH=C:\jdk1.8.0_202\bin;%PATH%

第一行用来确认实际生效的 Java 版本;echo %JAVA_HOME%用于检查环境变量是否配置,注意JAVA_HOME的值只写到 JDK 根目录,不要带 bin。如果JAVA_HOME没配或指错,安装器会自己去 PATH 里找,这时你很难判断它到底用的哪个 JDK,所以我习惯在跑安装前把目标 JDK 的 bin 目录临时放到 PATH 最前面,保证安装器拿到的就是我想要的 1.8。看到java version输出带1.8.0_202这样的字样,就可以继续了。

64 位的问题在这里单独提醒一次:ODI 的安装器在 Windows 上默认按 64 位检测,只装了 32 位 JDK 时,向导可能在初期检查就卡住,报错也不直观。安装前在 cmd 里用java -d64 -version试一下,报错就说明没有 64 位 JDK,先去换一个。很多文档说 1.7 以上就行,实际操作里 1.7 装完 ODI,后面建 WebLogic 域和启动 Agent 坑更多;我一般会装 1.8 的最新小版本,配置路径时注意别把安装目录名写错。如果机器上已经装了多个 JDK,建议把环境变量统一指到 1.8,省得安装器和 odi64.exe 各找一个版本,玄学报错不断。

2.2 安装包下载与解压:JEE 和 Standalone 的区别

这次安装需要两个 zip,命名的规律很清晰:带infrastructure的是基础件,带odi的是 ODI 本体。企业级 JEE 安装必须两个都下,先装 Infrastructure 再装 ODI;如果只是个人开发、不需要部署到 WebLogic,可以只下 odi 那个 zip 做 Standalone 安装。先给一张对照表,方便你判断自己该走哪条路:

安装形态需要的安装包适用场景
JEE 企业级安装Infrastructure + ODI 两个 zip生产环境、需要 WebLogic 域、多 Agent 协调、与 FMW 其它组件一起部署
Standalone 独立安装仅 ODI 一个 zip个人开发、学习 ETL、不做企业级部署

JEE 是必须的:ODI 自带的管理服务、调度、安全模块,在 JEE 模式下依托 WebLogic 容器运行。如果跳过 Infrastructure 直接装 ODI,即使装完,odi64.exe 启动也只是半个 Studio,后面连不上 Agent。这一点在项目原文里写得很清楚,我只补充一句:判断错误通常是安装完成后发现 Supervisor 连接失败才反应过来。

两个 zip 解压后各出一个 jar:fmw_12.1.3.0.0_infrastructure.jar和fmw_12.1.3.0.0_odi.jar。解压时放到同一个临时目录,比如D:\download\odi_install,命令如下:

cd D:\download :: 解压两个安装包 jar xf fmw_12.1.3.0.0_infrastructure_Disk1_1of1.zip jar xf fmw_12.1.3.0.0_odi_Disk1_1of1.zip

jar命令来自 JDK,比第三方压缩工具更省事,也不用额外装 unzip。解压完成后,目录里应该同时存在两个 jar 文件;看不到的话说明 zip 没解压完整,重新解压一次。下载过程不建议用下载工具断点续传,zip 容易损坏,安装器解压时报 CRC 错误最常见就是这个原因。一个可行的校验技巧:下载后看文件大小是否与下载页标注一致,解压时如果报“已损坏”就重新下载。两个 zip 解压后都接近 1GB 量级,磁盘要预留至少 10GB。

2.3 目录规划:Middleware Home 和安装盘空间

安装路径在 FMW 家族里是一环扣一环的:Infrastructure 安装时输入的那个目录叫 Middleware Home,后面 ODI 安装器识别到它之后,会把 ODI 装到同一家目录的odi子目录下。我的习惯是找一个空间足够的盘,整段路径全部英文、不加空格,例如D:\oracle\products\12.1.3。Windows 下中文路径是 ODI 安装的大坑,安装器对中文编码处理不可靠,装完 Studio 可能连日志都写不出来。

空间方面,两个安装包解压加安装本体,磁盘预留至少 10GB 比较保险;内存建议 8GB 起步,图形安装器本身不占多少,但后面如果还要建 WebLogic 域,内存吃紧会把安装过程拖慢。目录确定后,把解压目录、安装目录、JDK 路径三样写在一个文本里,装到哪一步都不至于回去翻下载记录,这是我在服务器上装中间件养成的习惯。

提示:Middleware Home 这个名字不要自作主张改掉,它是安装器识别安装位置的关键;目录选择界面里它显示的默认路径来自系统 Inventory,如果发现默认路径不是你要的,宁可先重置 Inventory 也不要硬填。

3. 安装 Oracle Fusion Middleware Infrastructure:fmw_12.1.3.0.0_infrastructure.jar 的前置流程

Infrastructure 装不明白,ODI 的 JEE 安装就无从谈起。这一章按图形安装的步骤走一遍,再补一个静默安装的写法,覆盖有桌面和没桌面两类场景。

3.1 启动安装器:java -jar 命令和它的隐藏参数

Infrastructure 的安装器是fmw_12.1.3.0.0_infrastructure.jar,启动方式很直接,但有个细节值得记:进入 JDK 的 bin 目录再运行命令。这里是原文里明确写过的操作方式,原因在于执行 java 命令时,如果不在 JDK bin 目录下,系统可能用 PATH 里先找到的其它 Java,而那个 Java 未必是 1.8。命令如下:

cd C:\jdk1.8.0_202\bin java -jar D:\download\odi_install\fmw_12.1.3.0.0_infrastructure.jar

cd进 bin 目录一是让 java 命令必然命中 JDK,二是防止安装器读取到 JRE。如果是在 Linux 服务器上安装同版本,我一般会在这个命令前加一个参数:java -Djava.security.egd=file:/dev/urandom -jar ...,避免系统熵源不足导致界面长时间黑屏,这是服务器端最常见的一个等待坑,Windows 上就不需要加。命令执行后,安装器会先弹出一个控制台窗口输出日志若干行,然后跳图形向导,这个过程等待几十秒属正常,不要因为“看起来没反应”就反复执行。

3.2 安装位置与安装类型:Middleware Home 填写要点

图形向导从欢迎页开始,第一页“Configure Security Updates”直接取消勾选并留空邮箱,点 Next 会二次确认一次,确认即可。接着是“Installation Location”,这里就是前面说的 Middleware Home。我的输入示例:D:\oracle\products\12.1.3。安装类型选择页面里,Infrastructure 安装提供多个类型选项,ODI JEE 依赖的是 Infrastructure,所以选与“Infrastructure”对应的那一项。不同版本界面文案略有差异,但核心是一致:让安装器把 WebLogic 相关的中间件基础层写进这个 Middleware Home。

安装完成后,向导会展示 Summary,日志位置一般就在 Middleware Home 附近的 inventory/logs 里。这里把安装过程比作盖楼:Middleware Home 是地基,ODI 是上层建筑,地基不对,上层建筑不可能对。如果这一步完成后你在目标目录里找不到inventory和logs两个文件夹,说明安装并未真正落盘,不要往下走。

3.3 静默安装:写一个 rsp 响应文件

图形向导方便,但如果你是第一次在无桌面环境的服务器上装,或者需要重复部署多台机器,我更推荐静默安装。安装器支持-silent -responseFile参数,核心是把图形界面里要填的内容提前写进一个文本文件。下面是一个最小可用的 rsp 文件:

[ENGINE] Response File Version=1.0.0.0.0 [GENERIC] ORACLE_HOME=D:/oracle/products/12.1.3 INSTALL_TYPE=JEE DECLINE_SECURITY_UPDATES=true

然后执行:

java -jar D:\download\odi_install\fmw_12.1.3.0.0_infrastructure.jar -silent -responseFile D:\download\odi_install\infra.rsp

参数说明:ORACLE_HOME写的是 Middleware Home 的实际路径,安装器会把它登记进 Inventory;INSTALL_TYPE对应图形界面里安装类型的选择,这里按 JEE 形态写,实际值要和图形界面里看到的安装类型项保持一致;DECLINE_SECURITY_UPDATES=true对应首页取消勾选更新。静默模式不会弹图形界面,进度全看命令行输出,跑的过程中不要关窗口。判断是否成功:最后一段输出包含Installation completed successfully或类似的 Success 字样;出现 Failed 就看同目录下生成的日志文件,日志路径会直接打印在窗口里。

4. 安装 ODI 本体:fmw_12.1.3.0.0_odi.jar 与 JEE/Standalone 取舍

Infrastructure 装完,Middleware Home 里已经有了一套 Inventory 登记。这一章处理 ODI 自身的安装,重点在第二次java -jar的识别机制,以及 JEE 和 Standalone 的选择对后续使用的影响。

4.1 二次启动安装器:让 ODI 认领已有的 Middleware Home

现在运行fmw_12.1.3.0.0_odi.jar,安装器启动时会自动读取 Inventory,在“Installation Location”界面直接把 Middleware Home 路径带出来,不需要手敲:

cd C:\jdk1.8.0_202\bin java -jar D:\download\odi_install\fmw_12.1.3.0.0_odi.jar

和前一个 jar 启动方式完全一致。如果界面里 Middleware Home 是空的,或者显示的路径不是你刚装好的那个,先别急着继续——退回 cmd,检查一下D:\oracle\products\12.1.3下有没有inventory目录,缺了说明 Infrastructure 没装完整,回头重装,不要在本次安装里硬填路径。

安装器识别了既有环境,后续的写入动作会把 ODI 的 modules、client、agent 等目录放到 Middleware Home 下。识别失败时最典型的原因有两个:一是环境变量JAVA_HOME在两次安装之间被改过,Install 记录的是旧 JDK;二是第一次安装虽然显示成功,但最后的 Inventory 配置没写完。碰到第二种情况,我一般直接卸载重装 Infrastructure,在这上面硬调的时间成本远高于重装。

4.2 安装类型取舍:JEE 和 Standalone 怎么选

ODI 安装器的类型选择页是官方文档反复强调的地方。项目资料原话是:企业安装(JEE)必须之前装 Infrastructure,独立安装不需要。翻译成落地建议就是两句话:要走生产、要建 WebLogic 域、要接多 Agent,选 JEE;只想本机写映射练手,选 Standalone。区别用一张表说清:

对比项JEE 企业级安装Standalone 独立安装
对 Infrastructure 的依赖必须提前安装不需要
运行容器依赖 WebLogic 域自带小规模 Runtime
适用环境生产、团队协作个人开发、学习
需下载的安装包两个 zip仅 ODI 一个

我之前犯过的错是拿 Standalone 的方式去搭生产环境,结果连调度功能都要自己补一堆东西。选 JEE 意味着安装完成后会多出 WebLogic 相关的中间件层,这是 ODI 服务端和 Agent 的宿体;选 Standalone 则没有这层依赖,但也就失去了企业级部署能力。初学者我建议直接选 JEE,走一遍完整链路,后面转到生产环境不会有认知断层。

4.3 安装后的目录结构和资源确认

安装过程走到最后,向导会展示 Summary 页,列出 ODI Home 的完整路径和组件清单。我习惯在点 Finish 前,先在另一个 cmd 里确认磁盘剩余空间还有余量,因为最后写文件那几十秒最容易因为空间不足中途退出。安装完成后目录结构大致是这样:

D:\oracle\products\12.1.3\odi ├─ bin ├─ client │ └─ odi64.exe ├─ modules ├─ agent └─ studio

Windows 下实际是普通目录结构,这里用树状只是方便看层级。检查要点:确认odi\client\odi64.exe存在,这个是 ODI Studio 的启动入口;agent目录对应执行引擎。如果安装了 JEE 形态,还会看到wlserver相关的目录,它属于基础设施部分。空间、内存、端口三项需要再次确认:端口没有被占用,避免 Agent 默认端口被占导致启动失败。

提示:安装器在最终完成前会有一次“正在配置组件”阶段,时长 5~10 分钟,看起来像卡住,实际在写配置。强制关掉窗口是常见的翻车操作,耐心等进度条走完。

5. 避坑与常见问题:ODI 安装里五个高频翻车点

以下问题都是我按安装顺序实际撞过或看同事撞过的,每条按现象、原因、解决拆开,遇到直接对号入座。前三个集中在安装启动阶段,后两个在安装完成后的启动验证阶段。

5.1 现象一:java -jar 没反应或闪退

现象:cmd 里执行java -jar后,窗口一闪而过,或者停了十几秒没有任何反应。

原因:绝大多数是JAVA_HOME指向了 JRE 而不是 JDK,安装器是 Java 程序但需要 JDK 完整能力;另一类是 PATH 里有多个 Java,当前生效版本是 11/17,老安装器兼容不了。

解决:先java -version确认真实版本;再临时把 PATH 指到 JDK 1.8。确定要用的版本后,用如下命令锁定:

set JAVA_HOME=C:\jdk1.8.0_202 set PATH=C:\jdk1.8.0_202\bin;%PATH% java -jar D:\download\odi_install\fmw_12.1.3.0.0_odi.jar

这几个 set 让当前 cmd 会话彻底使用 JDK 1.8,不改变系统环境变量,测试完关掉窗口即可恢复。如果闪退前有一行报错提到UnsatisfiedLinkError,则是 32 位 JDK 导致,换 64 位 JDK 重试。

5.2 现象二:安装器报“JDK 版本不满足”或找不到 JDK

现象:安装向导进入检查页就停住,提示当前 Java 版本低于要求或未找到 64 位 JDK,可java -version明明显示 1.8。

原因:安装器检测的是JAVA_HOME,不是 PATH。很多机器JAVA_HOME指向一个旧目录,PATH 里的 java 却是新装的 1.8,两个信息打架。

解决:把JAVA_HOME改成实际 1.8 路径,注意只写到 JDK 根目录,不带 bin。改完后新开一个 cmd,echo%JAVA_HOME%\bin能访问到,再启动安装器。这一步做完一般就过了,如果还卡在检查页,看安装日志里记录的 Java Home 是哪一项,直接对症处理。

5.3 现象三:odi64.exe 第一次启动就提示指定 JDK home

现象:双击 odi64.exe,弹出一个界面要你指定 JDK home,填了路径还是报错。

原因:Studio 首次运行需要绑定一个 JDK,常见错误是填到 bin 目录,或填了 JRE 目录,安装器校验不过。

解决:路径填到 JDK 根目录,例如C:\jdk1.8.0_202,不包含 bin。如果之前填错过,ODI 会把错误配置写在用户目录下的.odi配置文件里,删掉对应配置后重开,界面会再次弹出。我用的是 Browse 方式直接选择,比手敲路径更稳。

5.4 现象四:中文用户名或中文安装路径导致装完起不来

现象:安装全程顺利,但第一次启动 Agent 或 Studio 连接失败,日志里出现大量编码乱码。

原因:安装路径或系统用户名含中文,安装器写入的配置文件和脚本对编码敏感,Windows 下还会出现路径带中文空格的问题。

解决:安装前就把 Middleware Home 定为纯英文路径,用户目录也尽量是英文。已装在中文路径下的,最省事的后悔药是卸载重装,路径改英文,不要试图通过改系统区域设置补救,改完更容易出别的乱象。

5.5 现象五:安装完成后 odi64.exe 双击没有任何反应

现象:双击 odi64.exe 屏幕无反应,任务管理器里也看不到进程。

原因:常见两类——odi64.exe 依赖的 Java 路径写死在了安装时的 JDK 上,而那个 JDK 已被卸载或移动;另一类是内存参数配置过大,启动即失败。

解决:重装同名版本 JDK 到原路径最省事;或者检查 ODI 安装配置里的 Java home 参数,把它改成现有 JDK 路径。内存参数一般在 studio 启动脚本或配置文件里,确认设置不超过机器实际内存的一半。安装完成后的第一件事建议先跑 odi64.exe 验证,不要直接去配连接,把环境问题和配置问题混在一起只会更难排查。

6. 装完验证跑通:三步确认 ODI 12cR1 能干活

装完还不算完,不验证的环境等于没装。我的验证顺序固定为三步:Java 匹配、Studio 启动、映射跑通,每步都控制在几分钟内。

6.1 第一步:确认 Java 环境仍是 1.8

java -version

确认输出 1.8.x,然后双击 odi64.exe,观察是否仍要求指定 JDK home。如果要求,填C:\jdk1.8.0_202根目录即可。这一步过了,环境问题基本排除。

6.2 第二步:创建测试连接

在 Studio 的拓扑 Navigator 里,打开 Topologies 管理,确认本地 Agent 已列出并处于启动状态。然后新建一个物理连接指向本机数据库,填好驱动和账号,测试连接。这一步主要验证 Agent、驱动和数据库连通性都正常,连接不通的问题早暴露在这里,比拖到映射阶段好处理。

6.3 第三步:跑通第一个映射

建两张临时表:SOURCE 表放两行数据,TARGET 表为空。新建 Mapping,挂上一个加载用的 Knowledge Modules(KM)知识模块,执行后到 Operator 里看日志:Session 状态为 Success,TARGET 能查到数据,说明安装、JDK、Agent、KM 全链路都是通的,可以放心进入正式开发。

从那以后我每次装完 ODI 都会强制走一遍这三步:不需要建复杂流程,两张临时表就够了。环境问题早暴露一分钟,后面省一小时。这个习惯帮我避掉了不少玄学故障,希望帮到你。

本文还有配套的精品资源,点击获取

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进