简介《用友NC65安装操作手册》是一份面向用友NC65及NCC高版本新手顾问、测试人员的实操指南针对安装部署流程繁琐、环境配置易错等痛点提供一条可以直接跟随的完整操作路径。资源仅为单个doc文档压缩包约933KB虽无配套视频但文档步骤非常详细涵盖Oracle、SQL*Plus和命令行操作说明足以支撑初学者按图索骥。目前已有3428人学习适合入职初期或自学测试阶段的实施顾问。内容覆盖了Oracle数据库安装要点、表空间创建SQL及数据文件路径设置、用户授权以及NC65安装、数据源配置、安全日志数据源初始化、EJB部署和系统初始化建库等关键环节同时单独提醒了安装目录不可含中文、全局数据库名和口令要牢记、许可激活前需运行license获取授权等容易踩坑的细节。整体结构按安装顺序编排一步步对照操作可在测试环境快速完成从零到可登录后台的部署少走弯路。1. 用友NC65安装操作手册自己编一份比翻官方文档值得多谈到用友NC65安装操作手册我第一反应不是去翻安装包里的说明文档而是先问三件事这台服务器上以前装过什么数据库字符集定的哪一档中间件端口会不会和现有业务冲突NC65的安装从来不是“双击安装包一路下一步”的事它涉及操作系统、JDK、数据库、中间件四层联动任何一层不匹配后面全是坑。自己编制一份操作手册的价值恰恰在于把官方文档没写的现场差异补上哪些参数在你这套环境必须改哪些步骤可以跳过哪些报错是你特有的。这份手册不追求覆盖所有场景只追求一件事——照着它能复现一套能登录的NC65环境。适合谁企业IT、实施顾问、以及要给测试环境快速搭一套NC65的开发者。2. 部署前规划把服务器、系统与数据库选型定死在纸面上2.1 服务器与操作系统先满足这三项硬指标再动手NC65的技术栈决定了它对服务器的要求不是“能用”而是“够稳”。我见过不少项目在低配虚拟机上跑NC65启动花半小时登录后打开单据都卡最后把问题归结为软件不行其实是资源没给够。建议先按下面的基准做一次硬件体检别急着解压安装包。# 查看CPU核数NC65的中间件和数据库都吃多核 nproc # 查看内存总量单位GB32GB以下要谨慎 free -g # 查看根分区和挂载点情况NC65建议独立挂载目录不要放在系统盘 df -h # 确认操作系统是64位32位系统直接放弃 uname -m这四条命令分别对应四件事CPU核数决定中间件能否并行处理并发请求内存大小决定JVM堆和数据库SGA/PGA能不能同时吃饱磁盘挂载点决定日志和物理文件会不会撑爆系统盘系统架构决定JDK和数据库驱动能不能匹配上。建议把这三项数据记在手册开头后面所有参数调整都以它为基准。我自己习惯是内存低于32GB的机器不开图形化安装全程命令行操作减少桌面进程抢占资源。操作系统层面常见做法是选RHEL或CentOS 7.x以上版本内核够新对JDK 8和Oracle的兼容性验证比较充分。Windows Server也能跑但生产环境不建议原因很实在中间件在Windows上长时间运行后句柄泄漏问题比Linux多而且计划任务、防火墙策略都不如系统层面好管控。如果团队只熟悉Windows建议至少在测试环境先用Linux跑一遍后面运维会省心很多。JDK版本也是这里的重点。NC65官方要求JDK 1.8且必须是64位。很多翻车现场是装了一个8u251之后的版本或者系统自带OpenJDK版本不对导致中间件启动时直接报UnsupportedClassVersionError。我一般会在服务器上只保留一个JDK卸载掉系统中其他的Java环境再用java -version确认版本避免多个JDK互相干扰。2.2 数据库选型为什么Oracle是NC65最省心的搭档NC65支持多种数据库但“支持”和“好用”是两回事。从实际项目反馈看Oracle是部署文档最全、问题最少的选择SQL Server能跑但导入初始数据时偶尔会因为字符集或排序规则报错DB2用得少遇到问题可参考资料少。国产数据库近年也在逐步兼容但仍建议先确认厂商发布的版本兼容列表别拿生产环境给文档缺口做验证。下面是我常用于选型的一张对比表方便你对照现场情况做判断数据库部署难度字符集兼容初始化脚本成熟度排错资料Oracle 11g/19c中好AL32UTF8高多SQL Server 2016低中需调排序规则中中等DB2 10.5中中中少国产库各品牌中高需逐项验证低少选完数据库后还有一个经常被忽略的点数据库服务器和应用服务器要不要分开。测试环境为了省资源可以装在一起生产环境强烈建议分开。原因不复杂NC65的中间件启动后默认JVM堆会占到4GB至8GB数据库实例的SGA/PGA再来8GB一台16GB的机器直接见底。分开部署后至少能单独给数据库扩内存而不影响应用进程排查性能问题时也更容易定位瓶颈。数据库版本建议写死在手册里不要写“建议最新版本”因为最新不代表验证过。NC65很多用户停在Oracle 11g看重的是稳定和资料齐全新项目用19c的也很多关键在于你要在手册里明确本环境用哪个版本、字符集是什么、为什么选它。这个决策在前期花十分钟写下后面能少踩两小时的坑。3. 数据库地基实例参数、表空间与初始化数据导入3.1 实例参数与字符集预先设好避免后期翻车数据库实例的参数设置决定了NC65启动时能不能顺利建连、跑批时会不会卡死。很多人以为装好数据库软件就算完事结果启动NC65时看到ORA-12505、ORA-01034这类错误才回头看实例状态。这里的关键参数是内存和字符集必须在建库时定下来实例建完再改字符集属于大手术能不动就不动。-- 查看当前数据库字符集和排序规则AL32UTF8才是NC65的正常配置 SELECT parameter, value FROM nls_database_parameters WHERE parameter IN (NLS_CHARACTERSET, NLS_NCHAR_CHARACTERSET, NLS_COMP, NLS_SORT);执行这条SQL如果NLS_CHARACTERSET不是AL32UTF8后面导入初始数据极有可能出现中文乱码或长度报错。原因是NC65的元数据字典是按AL32UTF8设计的其他字符集在中文环境下会遇到“列长度超限”或“无法插入NULL”之类的诡异报错这时排查的方向很容易走偏。建议建库命令里直接加上CHARACTER SET AL32UTF8这是最省事的路径。如果现有实例已经不是这个字符集建议重新建库不要尝试在线切换字符集切换过程会破坏数据而且Oracle官方也不建议在生产环境做这种操作。内存参数方面我在手册里会给出一个基于物理内存的估算方式而不是死数字SGA目标值在物理内存的40%左右PGA在15%左右剩下留给操作系统和中间件。如果数据库和应用装在同一台机器两者加起来控制在物理内存的70%以内否则会出现系统Swap吃紧最终表现为服务偶尔无响应翻日志却看不到明显报错。3.2 表空间、用户与授权一份能直接抄的建库脚本数据库层面需要准备的不只是一个空实例还要有对应的表空间、业务用户和授权。NC65的初始数据会写入这些表空间如果表空间大小不够或自动扩展没开导入过程中直接ORA-01653报错中止。我第一次部署时就吃过这个亏初始数据导入到一半失败排查了半小时发现就是数据文件不够大。下面这份脚本是我整理过的适合大多数NC65环境表空间大小按实际磁盘调整-- 创建NC65主表空间数据文件放独立目录开启自动扩展 CREATE TABLESPACE NNC_DATA01 DATAFILE /u01/app/oracle/oradata/NNC/NNC_DATA01.dbf SIZE 8G AUTOEXTEND ON NEXT 1G MAXSIZE 32G; -- 创建索引表空间和主表空间分开放方便后期维护 CREATE TABLESPACE NNC_INDEX01 DATAFILE /u01/app/oracle/oradata/NNC/NNC_INDEX01.dbf SIZE 4G AUTOEXTEND ON NEXT 512M MAXSIZE 16G; -- 创建临时表空间注意是TEMPORARY类型 CREATE TEMPORARY TABLESPACE NNC_TEMP TEMPFILE /u01/app/oracle/oradata/NNC/NNC_TEMP.dbf SIZE 2G AUTOEXTEND ON NEXT 256M MAXSIZE 8G; -- 创建NC65专用用户密码复杂度按企业要求设 CREATE USER nc65 IDENTIFIED BY 此处替换为强密码 DEFAULT TABLESPACE NNC_DATA01 TEMPORARY TABLESPACE NNC_TEMP QUOTA UNLIMITED ON NNC_DATA01 QUOTA UNLIMITED ON NNC_INDEX01; -- 授权connect/resource是基础create session必须要有 GRANT CONNECT, RESOURCE TO nc65; ALTER USER nc65 DEFAULT ROLE ALL; -- 额外授予大数据量操作的权限避免导入中报权限不足 GRANT UNLIMITED TABLESPACE TO nc65;脚本里三条核心逻辑表空间分数据、索引、临时三类数据文件和索引文件分开存放用户默认表空间指向数据表空间配额设为无限制权限上除了常规的connect/resource额外给UNLIMITED TABLESPACE否则导入大数据量时会频繁报“表空间配额不足”。权限给太多有安全隐患但这里是数据库内部业务用户且NC65运行期需要建临时表、排序给足空间权限是务实选择。表空间大小不建议照抄优先看服务器磁盘剩余量。我用df -h确认过再定大小免得到时数据文件写满磁盘导致数据库挂掉。数据文件路径也别照抄先确认Oracle的ORACLE_BASE和ORACLE_HOME路径再把数据文件放到对应实例的oradata目录下这个路径建错会导致CREATE TABLESPACE直接失败。3.3 初始化数据导入把空白库变成能启动的账套库数据库实例和用户建好后下一步是把NC65的初始数据导入。这一步很多人卡住不是SQL语法问题而是不清楚导入的完整流程。常见做法是安装包中会带一个初始数据库备份文件或一系列脚本通过Oracle的impdp工具导入。具体文件和导入入口不同版本有差异我第一次做的时候按照安装包目录去找带dmp后缀的文件再看看有没有导入说明找到后用下面的命令执行。# 用impdp导入初始数据directory指向dmp文件所在目录schema要替换成实际用户名 impdp nc65/密码orcl \ directoryDATA_PUMP_DIR \ dumpfileNC65_INIT.dmp \ remap_schemaNC65_SRC:nc65 \ remap_tablespaceNNC_DATA01_SRC:NNC_DATA01,NNC_INDEX01_SRC:NNC_INDEX01 \ logfileimpdp_nc65.log \ parallel4参数里关键的是remap_schema和remap_tablespace。源库的schema和表空间名如果和你建的不一致不指定这两个参数就会导入到错误的用户或表空间下甚至直接报错。parallel4可以让导入并发执行但前提是服务器CPU有富余否则并行反而拖慢速度。我一般先用parallel2观察IO和CPU占用再决定是否调高。导入完成后别急着进入下一步先做最小验证查一下用户下有哪些表再确认关键表是否有数据。-- 验证导入是否完整统计业务用户下表的数量 SELECT COUNT(*) FROM all_tables WHERE owner NC65; -- 抽查一张核心表确认行数大于0 SELECT COUNT(*) FROM nc65.sm_user;如果表数量为0或核心表为空说明导入过程没有真正生效。常见原因是dmp文件路径不对或directory对象没建好此时去翻impdp日志文件里面会写明是文件找不到还是权限不够。这一步别跳过等装完应用再发现数据库是空的排查链路会拉长好几倍。4. 应用服务部署从解压安装包到浏览器能打开首页4.1 安装包目录结构先看懂nchome里有什么数据库就绪后进入应用部署阶段。NC65的应用服务装在nchome目录下这是整个中间件运行的核心目录配置、日志、部署包、缓存全在里面。刚拿到安装介质时先别急着执行安装脚本花几分钟看一下目录结构后面配置文件和日志的定位会快很多。# 解压安装包到指定目录nchome是约定名称不要改成中文路径 mkdir -p /u01/nc65 tar -zxvf NC65_LINUX64.tar.gz -C /u01/nc65 # 确认解压后的目录结构 ls -l /u01/nc65/nchome解压后你会看到几个关键目录bin目录存放启动和停止脚本resources目录存放配置文件数据源配置就在这里lib目录是中间件的依赖库logs目录运行时生成日志。我在手册里会单独给出一页把这些目录名和用途列清楚因为后续排查问题时80%的情况是先要去logs目录找线索。安装包的获取渠道一般是企业采购后由实施方提供不同渠道的压缩包命名可能不同。解压时注意文件属主建议新建专用系统用户比如ncuser统一管理应用目录不要用root直接跑NC65服务否则启动时会因为写日志权限不足或文件属主混乱出现奇怪的错误。4.2 配置数据源与中间件sysConfig这一步决定成败NC65把数据源和中间件的初始配置集中在sysConfig工具里。它既可以在图形界面操作也支持通过bin目录下的配置脚本生成配置文件。我平时在服务器上用命令行居多因为生产服务器一般不装图形桌面而且命令行模式更容易把配置内容记录到手册里。下面是一份数据源配置的参考表里面对应你需要在sysConfig里填写的关键项配置项推荐值说明数据库类型Oracle对应选型阶段定下的数据库数据库地址数据库服务器IP:端口/服务名不要用localhost用实际IP或主机名用户名nc65与建库时创建的业务用户一致密码建库时设置的强密码脱敏记录不要写明文到手册中间件端口80被占用则改8080或自定义端口JVM堆内存-Xms4g -Xmx8g按物理内存调整测试环境可适当调低配置完成后sysConfig会写出resources目录下的数据源配置文件。我用命令行方式时界面工具生成了配置文件后会手工检查一下生成的配置是否正确特别是IP和端口经常有人手误把数据库端口填成应用端口。这一步出的问题属于“启动时报错但报错信息很初级”的类型看着像低错实际很耗时间。4.3 首次启动与日志验证怎么判断服务是真的起来了配置文件写好后启动服务。NC65的启动脚本在nchome/bin目录下常见做法是用startup.sh启动但需要注意第一次启动不要用nohup直接丢后台先前台跑起来观察日志输出确认没有异常后再改用后台方式运行。# 切到专用用户启动不要用root su - ncuser -c /u01/nc65/nchome/bin/startup.sh # 启动后立即跟踪日志观察是否出现启动成功的标志 tail -f /u01/nc65/nchome/logs/startup.log启动成功的标志有两类日志里出现“Server startup in xxx seconds”或“监听端口xxx”以及浏览器能访问到登录页。只有其中一个都不算完全成功。我见过日志显示启动完成但页面打不开的情况原因是端口没监听成功此时用netstat -tlnp | grep 80确认端口状态端口没起来就去翻logs下的中间件运行日志里面会有具体的Bind异常。启动过程中如果出现JVM内存相关报错回看4.2节配置的JVM参数把-Xms和-Xmx调大或调小。这里有个容易被忽略的地方-Xms和-Xmx设置成一样的值可以避免JVM动态伸缩导致的性能抖动这也是生产环境推荐的做法。5. NC65安装避坑五个反复出现的现场问题与排查5.1 端口被占用启动日志反复报错服务却显示活着现象执行startup.sh后日志里显示启动流程正常但浏览器访问页面始终打不开netstat查看端口发现80端口被另一进程占用。原因NC65默认端口与服务器上已有的HTTP服务冲突最常见的是Nginx或Apache先占用了80端口导致中间件实际没有绑定成功。解决修改中间件端口配置把默认端口改成8080或其他未被占用的端口同时把sysConfig里的端口配置一并改掉两处不一致会导致配置被覆盖回默认值启动后又是同样问题。5.2 数据库连接超时配置对了启动还是连不上现象启动日志出现Connection refused或ORA-12541但数据库明明在运行用sqlplus也能连上。原因数据库服务器的防火墙没有放行应用服务器的IP或者是listener.ora里配置的监听地址限定了本机IP应用服务器从远程访问时被拒。解决先检查数据库服务器上lsnrctl status看监听地址再确认防火墙策略测试环境的数据库服务器经常只开了22和1521端口但没有放行应用服务器的网段。这个排查顺序很重要别一上来就怀疑数据源密码。5.3 启动后内存溢出默认堆参数根本不够用现象服务能启动登录后操作几个菜单就报OutOfMemoryError日志里出现java.lang.OutOfMemoryError: Java heap space。原因sysConfig里的默认堆内存设置是按最小配置给的测试环境如果用默认值叠加操作系统和数据库占用JVM堆很容易被榨干。解决按第2章做好的内存规划来设定JVM参数生产环境建议-Xms4g -Xmx4g起步并加上-XX:HeapDumpOnOutOfMemoryError这样下次内存溢出时会自动生成堆转储文件后续分析是对象泄漏还是配置不足会方便得多。5.4 页面中文乱码数据库字符集不一致的连锁反应现象NC65登录页正常但单据上的中文变成问号或乱码而且只在部分客户端出现。原因数据库字符集不是AL32UTF8或者客户端连接时NLS_LANG环境变量和数据库字符集不匹配导致JDBC写入数据时编码转换出错。解决如果数据库还没初始化数据立刻重建库用前面提到的AL32UTF8字符集如果已经在跑先确认NLS_LANG设置成AMERICAN_AMERICA.AL32UTF8然后测试写入一条中文数据看是否正常。字符集问题属于前期不处理、后期代价极高的类型这也正是第3章把字符集单独列一节的原因。5.5 客户端白屏浏览器与插件版本不匹配现象服务端一切正常但某些电脑浏览器访问NC65页面一直白屏控制台报脚本错误。原因NC65前端依赖的组件与新版浏览器不兼容常见于Chrome和Edge自动更新后小版本跨度过大造成的兼容性问题。解决在验证通过前固定使用推荐的浏览器版本并将自动更新关闭如果页面已经白屏换个老版本浏览器或换一台电脑交叉验证确认是不是客户端环境问题。这个坑不属于服务端安装问题但现场排查时最容易误导方向用户以为是服务挂了反复重启机器其实问题是浏览器。6. 上线前做两件事验证清单与备份恢复脚本6.1 五分钟验证清单从登录到建账套部署完成后别直接宣布“装好了”按下面几步做一次功能验证每步通过再进入下一步浏览器打开登录页并登录进入系统节点创建一套测试账套在测试账套中新增一个用户并分配角色打开一张常见单据完成一次保存和查询最后重启一次中间件确认数据不丢失。这五步能覆盖从Web层、应用层到数据库层的完整链路任何一层有问题都会在这个过程里暴露出来。6.2 把安装参数固化成自己的安装操作手册验证通过后最重要的一件事是把你实际用到的参数固化下来。我在这次安装过程中会给每台服务器保留一份参数记录内容包括服务器IP、操作系统版本、JDK版本、数据库版本与字符集、表空间文件路径、中间件端口、JVM参数、各配置文件的修改位置。这份记录不只是给别人看的更是给自己留的后悔药——下次升级或重建环境时照着这份手册做而不是重新去翻每个配置文件。数据库备份是另一个不能等上线后才做的事。我习惯在部署完成后立刻写一个最小备份脚本配合crontab定时执行这不是NC65部署的必要步骤但没有它前面所有安装动作都是脆弱的。# 数据库每日备份脚本expdp按用户导出保留最近7天文件 #!/bin/bash export ORACLE_SIDorcl export PATH$ORACLE_HOME/bin:$PATH BACKUP_DIR/u01/backup/nc65 DATE$(date %Y%m%d) expdp nc65/密码orcl directoryDATA_PUMP_DIR dumpfilenc65_$DATE.dmp logfilenc65_$DATE.log find $BACKUP_DIR -name nc65_*.dmp -mtime 7 -delete这个脚本的重点是目录和保留策略。备份目录要放到独立磁盘或挂载点避免和数据库数据文件在同一块盘上否则磁盘一满备份没做成数据库也一起挂掉。保留7天是底线生产环境建议保留更长时间或做异地拷贝。脚本写完先手动执行一遍确认能生成dmp文件和日志再放进crontab别直接信任第一次写出来的脚本。回到最开始说的话题。自己编制一份NC65安装操作手册核心不是把官方文档抄一遍而是把你在这套环境下验证过的每一条命令、每一个参数、每一个坑记录在案。我第一次部署时端口冲突、字符集不一致、内存不足这几个坑都踩了一遍重新查资料花的时间远超安装本身。后来养成习惯每台环境一份参数表每次踩坑一条记录积累到第三套环境时部署时间已经从两天缩短到半天。希望这份思路能帮到你让你下一次部署不再从头摸黑。本文还有配套的精品资源点击获取