简介:这份 SAP ECC6.0 安装操作手册以单一 doc 文档交付,面向准备在个人笔记本上搭建 SAP ECC6.0 学习环境的 BASIS 初学者与运维人员,重点解决安装流程复杂、环节多、容易中途失败的问题。压缩包内共 1 个 doc 文件,约 6.49MB,文档按章节整理了软硬件要求、虚拟内存配置、虚拟网卡设置、Java 虚拟机与环境变量、Oracle 10g 及补丁安装、SAP 主体安装、授权破解和语言包部署等内容,并配有逐步截图与路径说明,基本覆盖从环境准备到系统可用的完整链路。已有 1429 人学习,说明其对入门实践具有一定参考价值。读者可据此按顺序准备环境、核对配置项,并借助截图定位安装中的关键节点,减少重复试错,适合作为搭建本地练习系统时的流程清单和排错参考。
1. 装 SAP ECC6.0 之前:先算清这台机器的账
很多人第一次接触 SAP ECC6.0 安装,都是从一台私人笔记本开始的——白天在公司系统上只能看不能动,想自己配个专有系统练手,只能回家折腾。真正装起来才发现,卡住人的通常不是 SAP 本身,而是它前面那两层:一个版本不对的 JDK,或者一块装错了顺序的虚拟网卡。SAP ECC6.0 安装是个典型的长链路工程,虚拟内存、虚拟网卡、Java 环境变量、Oracle 10g 建库,任何一环顺序错了,安装器就停在某个进度条上再也不动。这篇笔记按一套已经装通的笔记本环境,从硬件底线一路写到装完怎么验证,新手能照着走,熟手能看清版本和参数的取舍。
2. 落地前的环境清单:Windows Server 2003 SP2 与 4G 内存怎么分配
2.1 硬件与操作系统的底线配置
先说明这套环境的原型:一台 T 系列商务本,原装 2G 内存,自己加了一条 2G 凑到 4G;硬盘 320G、7200 转,给 SAP 单独分了一个 200G 的 D 盘。操作系统是 Windows Server 2003 SP2,装完 SAP 加 Oracle,硬盘吃掉接近 100G。这个配置放在今天是古董,但它说明了一件事:ECC6.0 的瓶颈在内存和磁盘 IO,不在 CPU 主频。当年很多人拿 XP 装,装到 Oracle 建库阶段就各种报错,因为 XP 的单进程地址空间和服务管理模型跟 Server 版差别不小,Server 2003 是当年 BASIS 圈子里最省心的选择。
我把这套环境的几个关键指标列成一张表,照着对齐就行,超出下限没必要追高,低于下限基本会翻车:
| 项目 | 这套环境的值 | 说明 |
|---|---|---|
| 操作系统 | Windows Server 2003 SP2 | 32 位,需单独打 SP2 补丁 |
| 内存 | 4G(2G+2G) | 32 位系统实际可用约 3.2G,够跑一套 IDES |
| 硬盘 | 320G / 7200 转 | 机械盘也能装,SSD 会快很多 |
| SAP 所在分区 | D 盘,200G | 装完实际占用接近 100G |
| 虚拟内存 | 全部放 D 盘 | 见 2.2,这是最容易漏的一步 |
需要提前说清楚的是,32 位系统认不满 4G,实际可用在 3.2G 上下,剩下的要靠虚拟内存补。所以内存条加到 4G 不是浪费,是给虚拟内存留出调度空间。如果你手上只有 2G 内存,也能装,但安装过程中的解包和建库阶段会明显变慢,中途超时中断的概率上升。
2.2 虚拟内存:把 C 盘让出来,D 盘吃掉十几 G
SAP 在安装阶段会把大量数据读进内存做缓存,物理内存不够时全部压到分页文件上。原文的操作是:桌面 → 我的电脑 → 属性 → 高级 → 性能设置 → 高级 → 更改,然后把 C 盘设为“无分页文件”,所有虚拟内存集中放到 D 盘。图形界面点起来步骤多,我用命令行复现一遍,以后重装能省不少点击:
:: 先看一眼当前分页文件在哪些盘、多大 wmic pagefileset get Name,InitialSize,MaximumSize :: 删掉 C 盘的分页文件(对应界面里选 C 盘点“无分页文件”) wmic pagefileset where name="C:\\pagefile.sys" delete :: 在 D 盘新建分页文件,初始 12G、最大 20G wmic pagefileset create name="D:\\pagefile.sys",InitialSize=12288,MaximumSize=20480第一条是查询现状,确认 C 盘那条记录的Name到底是C:\pagefile.sys还是别的写法,写错了后面两条都会空跑。第二条删除 C 盘分页文件,注意这是“取消该盘的分页文件”,不是“缩小”,删完必须重启才真正释放。第三条在 D 盘建立分页文件,InitialSize和MaximumSize单位是 MB,12288 就是 12G。如果 D 盘已经存在分页文件记录,create会报错,改用set覆盖:
:: 记录已存在时用 set,不要用 create wmic pagefileset where name="D:\\pagefile.sys" set InitialSize=12288,MaximumSize=20480参数怎么定:初始值不要低于物理内存的 2 倍,最大值给到初始值的 1.5 倍左右。这套环境 4G 内存,初始 12G、最大 20G 是够的。如果你同时还要装语言包、做 client copy,最大值可以再往上抬,D 盘空间留足就行。
提示:把 C 盘分页文件完全删掉,系统蓝屏时就没法生成完整的内存转储文件,排查蓝屏原因会变难。这是取舍,学习环境可以接受,生产环境别这么干。
改完必须重启,重启后用第一条命令再查一遍,确认只剩 D 盘那条记录,并且InitialSize不是你写的默认值,才继续往下走。这一步跳过的人非常多,表现是 SAP 安装器跑到一半报内存相关的错误然后回滚,白等几个小时。
2.3 装 SAP 前把系统做一次清理:别先装一堆辅助软件
系统装完的第一件事不是装驱动装杀软,而是保持干净。原文里明确写了“在笔记本安装上操作系统后,先不要安装其它辅助软件,以便有更大的资源供 SAP 安装时使用”。这条不是洁癖,是实打实的经验:杀毒软件会实时扫描 SAP 安装器解压出来的几万个文件,安装时间直接翻倍,个别情况下还会把安装器释放的 DLL 锁住,导致解包失败。
我一般会做四件事,都在装 SAP 之前完成。第一,关掉系统的自动更新,避免安装到一半系统自己重启;第二,电源管理里把睡眠、休眠、硬盘休眠全部设为“从不”,屏幕保护程序关掉,笔记本合盖动作设为“不采取任何操作”,否则合上盖子跑一夜,回来发现安装停在半路;第三,关闭系统还原,它能吃掉好几个 G 的磁盘空间;第四,把系统时间校准,SAP 安装器建库时会校验时间戳,时间偏差太大会报一些很难懂的错。
另外提醒一句,这套环境的系统盘和 SAP 盘是分开的,SAP 装 D 盘、Oracle 也装 D 盘,C 盘只放系统。分区隔离的好处是万一装崩了,重装系统不用连带清掉安装包和解压出来的中间文件。原文里 D 盘给了 200G,这个数字不是拍脑袋来的:SAP 程序目录、Oracle 的oradata、安装过程中的临时解压目录,加起来接近 100G,留一倍余量是合理的。
3. 虚拟网卡与 Java 环境:两个最容易被跳过的前置件
3.1 Loopback 适配器:SAP GUI 连不上时的第一嫌疑人
虚拟网卡这一步,原文作者自己都写了“本步骤不是很必须”,理由是如果你的机器每次都插着网线,本来就有 IP,不需要额外造一块。但反过来讲,笔记本一旦断网、或者 IP 变成 169.254 开头的自动地址,SAP GUI 连服务器就会失败,服务器状态在 SAP MMC 里变成黄色。这就是为什么学习环境建议装一块 Loopback 网卡,把 IP 钉死在一个固定的私网地址上。
图形界面的路径是:开始 → 控制面板 → 添加硬件 → 下一步 → 厂商选 Microsoft → 网卡选 Microsoft Loopback Adapter → 完成。走一遍大概七八次点击,重装系统的时候容易点错。命令行更快:
:: 用 devcon 直接装回环网卡,netloop.inf 是系统自带的 devcon install %windir%\inf\netloop.inf *MSLOOP :: 装完确认网卡出来了,名字一般是“本地连接 2” netsh interface show interface第一条命令里,devcon不是系统自带工具,需要提前放到 PATH 里;%windir%\inf\netloop.inf是回环网卡的驱动信息文件,Windows Server 2003 自带的;*MSLOOP是硬件 ID,写错会提示找不到驱动。第二条列出所有网络连接,记下新网卡的名字,下一步要用。如果手上没有 devcon,就老老实实走图形向导,效果一样。
网卡装好后设置静态 IP,地址用192.168.x.x这种私网段,掩码255.255.255.0,网关和 DNS 留空:
:: 网卡名按上一条命令查到的实际名字替换 netsh interface ip set address name="本地连接 2" static 192.168.10.10 255.255.255.0static后面依次是 IP、掩码、网关,网关省略就表示不设。地址段选 192.168.10.x 还是 192.168.1.x 看你自己,只要不和真实网卡同段就行。同段会出现路由冲突,表现是 SAP GUI 能 ping 通但连不上,或者连上几秒就掉。
注意:这一步要在装 Oracle 之前做。原文里提到,如果虚拟网卡在 Oracle 之前装好,Oracle 安装器的网络配置自检就不会报警。顺序反了,Oracle 装到一半会因为检测不到可用网卡而中断。
3.2 JDK 版本:安装包自带的 1.4.2 与官网下的 1.6
这一节是整篇里版本差异最大的地方,也是原文表述有点绕的地方:SAP ECC6.0 的安装包里自带一份 Java 虚拟机 1.4.2,作者又从官网下了新版,行文里 1.5 和 1.6 都出现过。我的取舍是:主环境用官网的 1.6,并单独保留一份备用。理由很直接,安装包自带的 1.4.2 太老,装完 Oracle 之后跑一些辅助工具会报UnsupportedClassVersionError,而 1.6 在 Windows Server 2003 SP2 上兼容性稳定,装 SAP 安装器、Oracle 的 Universal Installer 都能过。
安装的时候有个细节需要注意:JDK 和 JRE 是两回事。JDK 面向 C/S 结构的开发调用,JRE 面向 B/S 的浏览器插件场景,SAP 自身的安装和配置主要吃 JDK,但浏览器里跑 SAP 的一些 Web 组件会用到 JRE。安装向导会在中间问一次 JRE 的路径,让它和 JDK 装在一起,别分散到两个盘。
安装路径我建议满足两个条件:不要放在Program Files这种带空格的目录下,不要用中文路径。老版本的安装器对带空格的路径处理得不好,JAVA_HOME展开后会在空格处断掉,后面调java命令报“不是内部或外部命令”就是这么来的。这套环境放在 D 盘根目录下,比如D:\jdk1.6,一眼能记住。
3.3 JAVA_HOME 与 PATH:写用户变量还是系统变量
环境变量这一步,图形界面路径是:我的电脑右键 → 属性 → 高级 → 环境变量,在“Administrator 的用户变量”里新建JAVA_HOME,变量值填安装路径。原文写的是“变量值为 JRE 的本机安装路径”,这里我要打个岔:JAVA_HOME应该指向 JDK 的根目录,不是 JRE 目录,也不是bin目录。指向 JRE 时java命令能用,但javac和一些依赖JAVA_HOME推断路径的工具会找不到东西。
命令行同样可以写,但有个限制得记住,setx的值最多 1024 个字符,PATH 一长就会被截断:
:: /M 表示写系统变量,不加 /M 就是写当前用户变量 setx JAVA_HOME "D:\jdk1.6" /M :: 把 JDK 的 bin 追加到 PATH 队尾 setx PATH "%PATH%;%JAVA_HOME%\bin" /M第一条setx加/M写进系统变量,对所有用户生效;不加/M只写当前用户,换账号登录就没了。第二条把%JAVA_HOME%\bin追加到 PATH 末尾,注意这里是用当前的%PATH%展开后再写回,如果当前 PATH 已经接近 1024 字符,写回时会被静默截断,后面的路径全丢。这是setx的黑匣子,翻车了还看不出来。
提示:PATH 很长的时候别用 setx,直接在“环境变量”图形界面里编辑,界面没有 1024 字符限制。
写完之后新开一个命令行窗口验证,不要用已经开着的窗口,那个窗口读的还是旧环境变量:
echo %JAVA_HOME% java -version两条命令都对上,JAVA_HOME输出 D 盘那个路径,java -version输出 1.6 的版本号,这一步才算过。java -version报“不是内部或外部命令”,八成是 PATH 没生效或者被截断;报的是 1.4.2,说明安装包自带的版本抢先被系统找到了 PATH 靠前的位置,把顺序调过来。
4. Oracle 10g 安装:先装框架,再建库
4.1 基本安装与路径:为什么不要装在带空格的目录
SAP ECC6.0 的底层数据库是 Oracle 10g,安装入口在 SAP 安装包的 Oracle 目录下,双击setup执行文件。第一个界面选“基本安装”,然后指定安装路径。路径规则和 JDK 一样:不要空格、不要中文、不要装到 C 盘。这套环境统一放 D 盘,SAP、Oracle、安装包各占一块,互不干扰。
选完路径之后安装器会做一次系统自检。原文里特别提了一句:如果虚拟网卡的安装在 Oracle 之前完成,自检时就不会出现网络配置报警。反过来说,自检界面上出现网络相关的警告,先别急着点继续,回去确认 3.1 节那块回环网卡是不是装好、IP 是不是配了。报警带着走,后面建库阶段一样会卡。
接下来选“用户验证”,也就是由安装器自己管数据库账号密码,不接入操作系统的域认证。学习环境选这个最省事,密码规则自己定,不用担心域策略。安装清单页会列出即将安装的组件和占用的磁盘空间,扫一眼空间够不够,然后开始安装。这一轮装完的只是 Oracle 的软件框架,数据库实例还没建,所以结束页点“退出”的时候会弹框问是否确认,点“是”。
4.2 Universal Installer 建库:SID、字符集与密码规则
框架装完,回到桌面,从开始菜单进:程序 → Oracle-OraDb10g_home → Oracle Installation Products → Universal Installer。这一步是真正建库,路径和参数大部分由安装器自动填好,不用手动维护,一路下一步,中间有几项必须自己盯:
第一项是数据库名。原文给的是一个自定义的名字,我这里用<SID>占位,实际起名建议三个字符、全大写、字母开头,因为 SAP 的目录结构里 SID 会出现在路径中,太长或者带特殊字符后期做 client copy 会很难受。
第二项是字符集。这一项千万别用 Oracle 的默认值,必须跟 SAP 安装手册里给出的选项保持一致。字符集选错,装的时候一切正常,等到导语言包、导中文数据的时候才出乱码,那时候改字符集等于重建整个库。这是典型的“装的时候十分钟,救的时候十小时”的坑。
第三项是密码。规则是字母和数字混合,不能纯数字,不能以数字开头,老版本对特殊符号的支持也有限。SAP 安装器稍后会拿这个密码去连库,密码里带了它不认的符号,SAP 安装阶段会报连接失败,报错信息还不会指向密码。
数据库文件路径按原文的做法放在 D 盘,和软件目录分开。放在一起也能跑,但后期做备份、扩容、迁移的时候,分开的目录结构好处理得多。
4.3 Oracle 补丁包与 OPatch:为什么必须在 SAP 安装之前打完
SAP 对底层 Oracle 的补丁版本有明确要求,版本低了 SAP 安装器会直接拒绝继续,或者装完跑起来报一些底层错误。所以补丁包必须在 SAP 安装之前打完,顺序不能反。打完补丁验证的方法是用 OPatch 查一遍清单:
:: 进到 OPatch 目录执行,路径按实际安装位置替换 cd /d D:\oracle\product\10.2.0\db_1\OPatch :: 列出当前已打的所有补丁 opatch lsinventory :: 打完新补丁后确认补丁集版本 opatch lspatcheslsinventory输出的是当前实例已经应用的全部补丁列表,包括补丁号和应用时间;lspatches更简洁,只列补丁号和描述。两边的结果要和你手上的补丁包对得上,缺一个就补。执行前必须先停掉所有 Oracle 服务,补丁过程会替换二进制文件,服务在跑的时候替换会失败,报文件被占用。
注意:补丁打完要重新编译失效对象,这一步漏掉的话,SAP 安装时调用存储过程会报无效对象。命令行里跑一遍
utlrp.sql,或者用图形工具执行等价的重新编译操作。
顺便说一句,安装顺序这件事在 ECC6.0 上是硬约束:操作系统 → 虚拟内存 → 虚拟网卡 → JDK 与环境变量 → Oracle 框架 → 建库 → Oracle 补丁 → SAP。任何一步提前或者延后,后面都要返工。我见过有人先装了 SAP 再回头补 Oracle 补丁,结果整个 SAP 实例得重装。
5. 避坑与排查:五条装 ECC6.0 时最容易翻车的记录
5.1 安装阶段的三条:内存、网卡、JDK 版本
现象一:SAP 安装器跑到解包或建库阶段,进度条停住,最后报内存不足然后回滚。原因:虚拟内存没配,或者配了但没重启,系统还在用 C 盘那份小的分页文件。ECC6.0 安装峰值内存需求远超 4G 物理内存,全靠分页文件扛。 解决:回到 2.2 节,用命令确认 D 盘分页文件已经建立、C 盘记录已删除,然后重启再装。重启这一步不能省,改完不重启,注册表里的配置不会生效。
现象二:Oracle 安装自检阶段报网络配置错误,或者 SAP GUI 连服务器几秒就断。原因:回环网卡没装,或者装了但 IP 没配成静态,或者是和真实网卡撞了同一网段。 解决:netsh interface show interface看网卡列表,确认回环网卡在;再看 IP 是不是 169.254 开头的自动地址,是的话重新netsh设置静态地址。撞网段的话换一个段,比如从 192.168.1.x 换成 192.168.10.x。
现象三:命令行里java -version报“不是内部或外部命令”,或者版本号是 1.4.2。原因:JAVA_HOME指向了 JRE 目录而不是 JDK 根目录;PATH 追加时被setx的 1024 字符限制截断;安装包自带的 1.4.2 在 PATH 里排在前面。 解决:echo %JAVA_HOME%先看值对不对,指向D:\jdk1.6这种根目录;PATH 用图形界面重新编辑,别用 setx;把%JAVA_HOME%\bin挪到 PATH 最前面。改完必须新开窗口。
5.2 运行阶段的两条:服务没起、许可到期
现象四:SAP 装完了,SAP MMC 里实例状态是灰色或者黄色,GUI 登录报连接不上。原因:机器重启之后 Oracle 的监听服务和实例服务没起来,SAP 起不来是因为底层数据库没起;或者 SAP 自己的服务启动顺序乱了。 解决:先手动起 Oracle 服务,确认监听在,再起 SAP。命令行验证用:
:: 先确认 Oracle 监听在监听 lsnrctl status :: 再查 SAP 实例进程状态,00 是实例编号 sapcontrol -nr 00 -function GetProcessListsapcontrol返回的列表里,disp+work和msg_server的状态应该是GREEN或YELLOW。全是GRAY说明进程根本没起来,去看work目录下的dev_disp日志,里面会写清楚是连不上库还是端口被占。
现象五:装完能用,过了一段时间再登录,提示许可过期,系统进入只读。原因:安装完成后系统给的是临时许可,有效期有限,到期不会自动续。这不是安装失败,是许可机制本身的设计。 解决:用事务码SLICENSE查看当前许可状态和到期时间,按正规途径申请正式的开发或测试许可,导入后重启实例。别用来路不明的补丁文件去改系统,那会把整个实例的完整性搞坏,后面打补丁、升级全部走不通,属于没有后悔药的操作。
6. 装完怎么验证:从 sapcontrol 到 GUI 登录的一条检查链
装完不等于装通。我一般按一条固定链路验,从底层往上层走,哪一层断了一眼就能定位。先验数据库,再验 SAP 实例进程,再验 GUI 连接,最后验语言和数据。
第一步,数据库连通性:
:: 用 SAP 自带的传输工具测数据库连接,正常返回 0000 cd /d D:\usr\sap\ER1\SYS\exe\run R3trans -dR3trans -d是最省事的连通性测试,它用 SAP 自己的连接配置去连库,不依赖 Oracle 的客户端工具。返回码0000表示连接正常;返回2EETW169 no connect possible就是连不上,问题在监听、密码或者TNS配置上,回去验 5.2 的那条。
第二步,实例进程状态:
:: 00 换成你自己的实例编号,ER1 对应 00 sapcontrol -nr 00 -function GetProcessList关注disp+work和msg_server两个进程。两个都GREEN,说明应用层起来了;disp+work是YELLOW,通常是还在初始化,等两分钟再看;一直是GRAY,去work目录翻dev_disp。
第三步,GUI 登录。新建连接,应用服务器填 3.1 节配的那个 192.168.x.x 地址,系统编号填实例号,客户端填000,用安装时设的管理员账号登录。能进到 SAP Easy Access 主界面,第一层验证就过了。
第四步,语言包和数据。语言包的导入用事务码SMLT,图形界面里能看到已安装的语言列表和每种语言的补丁级别。中文语言包导入后,登录时客户端语言选ZH,进系统看菜单是不是中文。乱码的话回到 4.2 节,字符集是根源,这时候改代价很大。
把这条链路整理成一张对照表,出问题的时候按层查,别一上来就重装:
| 验证层 | 检查项 | 异常时的第一反应 |
|---|---|---|
| 数据库 | R3trans -d返回码 | 查监听、查密码、查服务是否启动 |
| 实例进程 | sapcontrol GetProcessList | 看dev_disp日志 |
| 网络 | Ping 回环网卡 IP | 查回环网卡与静态 IP |
| GUI 登录 | 客户端 000 能否进主界面 | 查实例号、系统编号是否对上 |
| 语言 | SMLT 列表与中文菜单 | 查字符集,别急着导数据 |
这套流程我从第一次装 ECC6.0 一直沿用到今天。当年那次装到 Oracle 建库阶段失败,我在虚拟内存和字符集之间反复怀疑了两天才定位到网卡顺序,白熬了两个通宵。从那以后我每次重装,都强制在装 SAP 之前把这五步走一遍,一条一条打勾,不跳步。希望帮到你。
本文还有配套的精品资源,点击获取