Oracle EBS R12.1生产环境部署全流程:从OS配置到应用验证
简介面向具备 Linux 与 Oracle 数据库基础的技术人员尤其是负责 Oracle EBS 系统安装、配置与维护的 IT 专业人员这份资料聚焦生产环境下 Oracle EBS R12.1.1 至 R12.1.3 的完整部署链路覆盖操作系统准备、EBS 安装升级、数据库升级以及 AS 10g 应用服务器部署等关键环节并针对常见问题给出解决思路帮助读者在生产环境中少走弯路。资源包共 1 个 PDF 文件约 844KB内容按 Linux OS 安装与配置、在线升级与软件安装、环境配置、EBS 与数据库升级、应用服务器部署等模块组织目录结构清晰便于按阶段查阅。目前已有 953 人学习下载。文档步骤详尽、技术性强读者可据此对照完成系统安装与升级并在关键环节反复验证降低部署风险。1. 一次装反顺序的 EBS 部署让我在机房熬到凌晨四点Oracle EBS R12.1 这套环境装过的人都懂它不是“下一步下一步”就能完事的软件而是一整套 Linux OS、数据库、应用层、应用服务器四层咬合的生产系统。我第一次在客户现场部署 R12.1.1 时图省事先跑了 Rapid Install结果 OS 的 sysctl 参数没调、limits.conf 没改、LocalPort 范围没扩安装到 78% 直接卡死日志里全是 TNS 超时和共享内存报错。那一晚我从头重装把 Oracle Linux 6.8 的每一处内核参数重新过了一遍才明白这套东西的顺序不能乱OS 先立住EBS 才站得稳。这篇笔记就是把我踩过的坑按安装顺序摊开从 Oracle Linux 6.8 的包和内核参数到 R12.1.1 安装、R12.1.3 补丁升级、DB 11.2.0.4 迁移再到装完怎么验证跑通。适合正在生产环境部署 EBS 的运维和 DBA新手能照着走熟手能对版本和参数取舍。2. 先把 Oracle Linux 6.8 立住系统层配置决定后面能不能装EBS R12.1 对 OS 的挑剔程度装过一次就有体会。官方认证的 Oracle Linux 6.8 是这套组合里最稳的底座RedHat 6.x 和 SUSE 也能跑但包依赖和内核参数得自己对齐。这一章的目标很明确把 OS 装完、把在线升级和基础软件补齐、把 EBS 需要的系统参数一次性配到位。顺序上我一般按“装系统 → 挂盘格式化 → 在线升级 → 装 vnc/vsftpd → 配 IP 和主机名 → 调内核参数 → 建用户和目录 → 装 OS 包和 Oracle 专用补丁”走中间任何一步跳过后面 Rapid Install 都会用报错提醒你。2.1 Oracle Linux 6.8 安装与 iso 加载安装源用 Oracle Linux 6.8 的 iso虚拟机场景直接把 iso 挂到光驱启动物理机刻盘或走 PXE 都行。安装类型选“Basic Server”就够别选最小化否则后面缺一堆编译工具还得补。分区上我习惯给/u01单独留一块盘EBS 的 apps 和 db 文件都往这放方便后面扩容和克隆。# 查看新挂载的磁盘确认设备名 fdisk -l # 对新盘分区以 /dev/sdb 为例全部给一个主分区 fdisk /dev/sdb # 交互里依次输入n - p - 1 - 回车 - 回车 - w # 格式化并挂载 mkfs.ext4 /dev/sdb1 mkdir -p /u01 mount /dev/sdb1 /u01fdisk -l先确认设备名别对着系统盘下手这是血泪经验。mkfs.ext4是 R12.1 时代最稳的文件系统选择xfs 也能用但部分补丁脚本对 ext4 更友好。挂载完先别急着写 fstab等确认设备名稳定后再加自动挂载否则重启后盘没挂上EBS 直接起不来。2.2 在线升级与 vnc、vsftpd 安装OS 装完第一件事是在线升级把基础包拉到最新减少后面 Oracle 专用补丁的冲突。# 配置 Oracle Linux 的 yum 源后执行在线升级 yum -y update # 安装 vnc 服务端方便图形化跑 Rapid Install yum -y install tigervnc-server # 安装 vsftpd后面传安装介质和补丁用 yum -y install vsftpd chkconfig vsftpd on service vsftpd startyum -y update会更新内核升级完建议重启一次再继续避免运行中的内核和头文件版本不一致导致后面编译补丁失败。vnc 是跑 Rapid Install 图形界面的刚需EBS 安装器不支持纯字符界面。vsftpd 用来把 R12.1.1 的安装源和补丁包传上服务器比 scp 批量传省事注意防火墙和 SELinux 对 FTP 的影响后面关防火墙那节会一起处理。2.3 内核参数与资源限制sysctl.conf 和 limits.conf这是最容易翻车的一节。EBS 对共享内存、信号量、文件句柄、进程数的要求都写在官方文档里但很多人装完 OS 直接跑安装器到数据库建库阶段才报共享内存不足。# 编辑 /etc/sysctl.conf追加 EBS 需要的参数 cat /etc/sysctl.conf EOF kernel.shmall 1073741824 kernel.shmmax 4398046511104 kernel.shmmni 4096 kernel.sem 250 32000 100 128 fs.file-max 6815744 net.ipv4.ip_local_port_range 9000 65500 net.core.rmem_default 262144 net.core.rmem_max 4194304 net.core.wmem_default 262144 net.core.wmem_max 1048576 fs.aio-max-nr 1048576 EOF # 生效 sysctl -pkernel.shmmax和kernel.shmall是共享内存的上限按物理内存的实际情况调别照抄一个超大值把内存吃光。kernel.sem四个值分别是信号量集合数、每集合信号量数、可同时操作数和系统级上限EBS 并发一高信号量不够就报 ORA-27154。ip_local_port_range从默认的 32768 起改成 9000 起是为了给 EBS 的并发连接留足端口这个坑我在客户现场踩过应用层连数据库时随机报 TNS 超时查了半天是端口耗尽。# 编辑 /etc/security/limits.conf追加资源限制 cat /etc/security/limits.conf EOF * soft nproc 2047 * hard nproc 16384 * soft nofile 4096 * hard nofile 65536 EOFnofile和nproc是文件句柄和进程数上限EBS 的并发进程多软限制给 4096、硬限制给 65536 是常见做法。改完 limits.conf 要重新登录才生效别在当前会话里测测出来还是旧值。2.4 主机名、IP、防火墙与用户目录主机名和域名在 EBS 里是写死的装完再改要走 AutoConfig代价很大。装之前就把/etc/hosts和/etc/sysconfig/network定死。# 设置主机名格式建议 erp.prod.local 这种带域名的 hostname erp.prod.local echo HOSTNAMEerp.prod.local /etc/sysconfig/network # /etc/hosts 里绑定 IP 和主机名 echo 192.168.10.20 erp.prod.local erp /etc/hosts # 关闭防火墙和 SELinux生产环境按安全策略另行处理 service iptables stop chkconfig iptables off setenforce 0 sed -i s/SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config主机名带域名是为了后面 TNS 和监听器解析不出岔子/etc/hosts里 IP 和主机名必须对得上否则 Rapid Install 检查网络那步就过不去。防火墙和 SELinux 在安装阶段建议先关装完再按安全要求逐条放行端口别在安装中途跟它较劲。# 创建 EBS 用户组和用户 groupadd dba groupadd oinstall useradd -g oinstall -G dba -d /home/oracle oracle useradd -g oinstall -G dba -d /home/applmgr applmgr passwd oracle passwd applmgr # 创建 oraInventory 目录并授权 mkdir -p /u01/app/oraInventory chown -R oracle:oinstall /u01/app/oraInventory chmod -R 775 /u01/app/oraInventoryoracle用户管数据库applmgr管应用层两个用户都归oinstall主组、dba附加组这是 EBS 的标准用户模型。oraInventory目录权限给 775属主 oracle后面 DB 安装器要往里写清单权限不对会报 INS-30011。2.5 OS 包与 Oracle 专用补丁R12.1 依赖一批 32 位兼容库和编译工具缺一个 Rapid Install 就可能在链接阶段失败。# 安装 EBS 依赖的基础包 yum -y install gcc gcc-c make binutils compat-libstdc-33 \ glibc-devel libaio libaio-devel libgcc libstdc sysstat unzip \ compat-libcap1 elfutils-libelf-devel # 安装 Oracle 专用补丁包按介质里的 rpm 实际文件名替换 rpm -ivh oraclelinux-release-6-*.rpmcompat-libstdc-33和libaio是数据库和应用层都依赖的sysstat用来后面监控性能。Oracle 专用补丁按安装介质里带的 rpm 装别从网上随便找版本补丁和 OS 小版本对不上会引入新的依赖冲突。装完用rpm -qa | grep核对一遍关键包确认没有漏。3. 安装 R12.1.1 并升到 R12.1.3补丁顺序错了就得重来EBS 的安装和升级是一条单向链先装 R12.1.1 打底再通过 Patch 9239090 升到 R12.1.3中间还要打多语言加速包、编译 APPS schema、跑 AutoConfig。这一章我按实际执行顺序拆开每一步都给出关键命令和参数取舍重点说清楚哪些补丁必须先打、哪些操作必须在维护模式下做。3.1 R12.1.1 安装前的准备与 Rapid Install安装源解压后先别急着点下一步把 IP、主机名、域名再确认一遍Rapid Install 会把它们写进配置文件。# 以 applmgr 用户解压安装源到指定目录 su - applmgr cd /u01/stage unzip R12.1.1_install.zip -d /u01/stage/r1211 # 启动 Rapid Install 图形安装器 cd /u01/stage/r1211/startCD/Disk1/rapidwiz ./rapidwizrapidwiz是 EBS 的图形安装入口必须在有 X 显示的环境下跑vnc 就是为它准备的。安装类型选“Create a new system”数据库选“Fresh database”端口按规划填别用默认的 1521 和 8000 跟别的服务撞。安装过程中会多次提示换盘或确认参数每一步的日志都在$APPLRGF下卡住先看日志最后 50 行比瞎猜快。安装完成后DB 和 Apps 用户的环境变量要分别配好。# oracle 用户的 .bash_profile 追加 export ORACLE_BASE/u01/app/oracle export ORACLE_HOME/u01/app/oracle/product/11.1.0/db_1 export ORACLE_SIDPROD export PATH$ORACLE_HOME/bin:$PATH # applmgr 用户的 .bash_profile 追加 export APPL_TOP/u01/app/applmgr/PROD_erp export APPSORA$APPL_TOP export PATH$APPL_TOP/admin/scripts:$PATHORACLE_SID和APPL_TOP的路径要和安装时填的一致路径写错后面所有脚本都找不到文件。环境变量配完source一下用env | grep核对别在旧会话里直接跑。3.2 升级到 R12.1.3Patch 9239090 与多语言加速包从 R12.1.1 到 R12.1.3 的核心是 Patch 9239090打之前要先做几件事在initPROD.ora里加disable_fast_validate参数、授权中文语言、关应用开数据库、启用维护模式。# 启用维护模式以 applmgr 用户执行 cd $ADMIN_SCRIPTS_HOME admsi.pl -modemaintenance # 关闭应用层保留数据库运行 adstpall.sh apps/apps_password维护模式下应用层停掉、数据库继续跑这是打大补丁的标准姿势别在应用运行中直接打否则补丁脚本改表结构时会锁冲突。disable_fast_validate参数加在initPROD.ora里是为了绕过补丁期间某些校验打完补丁记得评估是否移除。# 打多语言加速包 8576725 adop phaseapply patches8576725 # 打主补丁 9239089ADPatch adop phaseapply patches9239089adop是 R12.1.3 之后的补丁工具phaseapply表示应用补丁patches后面跟补丁号。补丁过程要盯adop的日志和adpatch的 worker 状态有 worker 失败先看对应日志别直接重跑重跑前要清理失败的 worker。3.3 编译 APPS schema 与扩展表空间补丁打完后 APPS schema 处于失效状态必须编译。# 编译 APPS schema cd $ADMIN_SCRIPTS_HOME adadmin # 菜单里选 Compile/Reload Applications Database Entities - Compile APPS schemaadadmin是交互式菜单编译 APPS schema 耗时较长建议在业务低峰跑。编译前先确认表空间够用补丁会往 SYSTEM 和 APPS_TS_TX_DATA 里写不少东西。-- 查看表空间使用率超过 85% 先扩 SELECT tablespace_name, ROUND(SUM(bytes)/1024/1024/1024, 2) AS used_gb FROM dba_data_files GROUP BY tablespace_name;表空间不够就加数据文件别等编译到一半报 ORA-01653 再回头扩那时候回滚更麻烦。扩表空间用ALTER TABLESPACE ... ADD DATAFILE ... SIZE ... AUTOEXTEND ON自动扩展打开但设个上限防止把盘吃满。3.4 AutoConfig 与补丁后的收尾补丁和编译完成后跑 AutoConfig把配置文件同步到所有节点。# 以 applmgr 用户跑 AutoConfig cd $ADMIN_SCRIPTS_HOME adautocfg.shadautocfg.sh会读上下文文件重新生成所有配置文件跑之前确认APPL_TOP/admin下的上下文文件是最新的。AutoConfig 报错多半是上下文文件里的路径或端口和实际不符按报错行号去改上下文文件再重跑别手动改生成出来的配置文件下次 AutoConfig 会覆盖。4. 数据库升级到 11.2.0.4DBUA 迁移与监听器重建R12.1.3 配套的数据库要升到 11.2.0.4这一步是整个部署里风险最高的环节因为要动的是生产数据。我的做法是先装 11.2.0.4 软件、打 DB 补丁、再用 DBUA 升级升级前必须有一次可回退的备份。4.1 安装 DB 11.2.0.4 软件与补丁# 以 oracle 用户解压 11.2.0.4 安装介质 cd /u01/stage unzip p13390677_112040_Linux-x86-64_1of7.zip unzip p13390677_112040_Linux-x86-64_2of7.zip # 启动 OUI 安装数据库软件只装软件不建库 cd database ./runInstaller安装类型选“Install database software only”因为库要用 DBUA 从旧版本升上来不是新建。ORACLE_HOME指向新目录比如/u01/app/oracle/product/11.2.0/dbhome_1和旧库的 home 分开方便回退。# 安装 11.2.0.4 的 DB 补丁按实际补丁号替换 cd /u01/stage/patch_112040 opatch applyopatch apply前先opatch lsinventory确认 OPatch 版本够新老版本 OPatch 打新补丁会报版本不兼容。补丁打完用opatch lspatches核对确认补丁号对得上。4.2 DBUA 升级与监听器、TNS 重建# 停旧库启动 DBUA sqlplus / as sysdba shutdown immediate exit cd $ORACLE_HOME/bin ./dbuaDBUA 图形界面里选要升级的源库和目标 home升级前它会做一次预检查检查项里有共享内存、表空间、无效对象任何一项红叉都先解决再往下。升级过程会重建数据字典耗时按库大小算别中途打断。# 升级完成后重建监听器和 TNS netca # 图形界面里新建监听器端口按规划填 # 或用命令行配置监听器 lsnrctl startnetca建监听器时端口别和旧库冲突TNS 描述里的主机名要和/etc/hosts一致。监听器起来后用tnsping PROD验证解析通了再继续。4.3 升级后的 DB 层收尾-- 更新 initPROD.ora 后重启库收集 SYS 统计信息 EXEC DBMS_STATS.GATHER_SCHEMA_STATS(SYS);GATHER_SCHEMA_STATS收集 SYS 统计信息升级后优化器需要新的统计信息才能生成合理执行计划。接着重建 apps 授权和同义词再同步工作流视图。# 重建 apps 授权和同义词以 applmgr 用户执行 cd $ADMIN_SCRIPTS_HOME adadmin # 选 Maintain Applications Database Entities - Recreate grants and synonyms授权和同义词重建完应用层才能正常访问 DB 对象。最后重启应用和数据库用adstrtal.sh起应用确认所有服务状态正常。5. 装完怎么验证跑通三层检查与一次登录闭环装完不等于跑通EBS 的验证要分三层看OS 层参数是否生效、DB 层监听和实例是否正常、应用层能否登录并打开表单。我一般按下面这个顺序走一遍任何一层不过都不算完。# 第一层OS 参数核对 sysctl kernel.shmmax kernel.sem fs.file-max ulimit -n ulimit -usysctl输出的值要和sysctl.conf里写的一致ulimit -n要看到 4096 以上ulimit -u看到 2047 以上。不一致说明 limits.conf 没生效重新登录再测。# 第二层DB 层检查 su - oracle lsnrctl status sqlplus / as sysdba SQL select status from v$instance; SQL select count(*) from dba_invalid_objects;lsnrctl status要看到监听器 READY、服务名注册正常。v$instance状态是 OPENdba_invalid_objects数量为 0 或极少无效对象多说明编译没跑完或补丁没打全。# 第三层应用层检查 su - applmgr cd $ADMIN_SCRIPTS_HOME adop phasefs_clone statusadop phasefs_clone status看补丁文件系统状态是否一致再用浏览器访问 EBS 登录页用SYSADMIN登录能打开“系统管理员”职责下的表单就算跑通。登录报 FRM-92050 多半是 forms 服务没起或端口不对查$APPL_TOP/admin下的日志。检查层关键命令通过标准OS 层sysctl、ulimit参数与配置一致DB 层lsnrctl status、v$instance监听 READY、实例 OPEN应用层adop status、浏览器登录表单可打开有一次我在客户现场验证时前两层全过应用层登录一直转圈最后发现是/etc/hosts里主机名和 IP 对不上forms 服务解析不到自己。从那以后我每次装完 EBS都强制把这三层检查走一遍尤其是/etc/hosts和监听器解析宁可多花十分钟也不在业务上线后返工。希望这套顺序和检查清单能帮到你少熬一个凌晨四点。本文还有配套的精品资源点击获取