简介:本资源是一份面向用友NC65初学者与实施顾问的实操型安装指南,专为自我学习、沙箱测试及NCC高版本环境搭建设计,有效解决数据库配置、中间件部署与系统初始化等关键实施难点。压缩包为单文件DOC文档(933KB),内容结构清晰,完整覆盖Oracle数据库安装(含管理员权限操作、全局数据库名与口令设定)、表空间与用户授权SQL脚本、NC65产品安装路径规范、sysconfig.bat数据源配置与EJB部署、admin.jsp后台初始化建库全流程,以及License授权提示等核心环节。已有3436人学习下载,手册步骤详尽、命令可直接复用,附带典型路径示例与参数说明,特别适合零基础顾问快速掌握NC65本地部署全链路,规避中文路径、密码不一致、权限缺失等高频实操陷阱。
1. 用友NC65本地测试环境搭建:为什么新手实施顾问必须亲手跑通这整套 Oracle+NC65 链路?
你不是在部署生产系统,而是在构建一个可反复拆解、验证逻辑、理解数据流向的「最小可信沙盒」——这就是这份《用友NC65安装操作手册》的真实定位。它不教你怎么签单、怎么写蓝图,只解决一个卡住90%新人的硬骨头:在自己笔记本上,从零拉起一个能登录/admin.jsp、能进建库向导、能执行SQL脚本的NC65可交互环境。很多人卡在第一步:Oracle装完连不上,sys密码记混了,表空间路径带中文报错,或者setup.bat双击没反应——这些都不是配置问题,是环境链路断裂。手册里写的“取消勾选”“默认即可”“存放路径(例 D:\NCDATA...)”,背后全是血泪经验凝结的边界条件:比如Oracle 12c以上版本对Windows服务名大小写的敏感、NC65对JDK 1.8.0_202+的硬性依赖、以及sysconfig.bat启动时CMD窗口一闪而过的CLASSPATH加载失败。它面向的是刚接手模拟项目X的实施顾问A同学,目标明确:3小时内完成本地可访问的NC65基础容器,为后续UAP开发、工作流调试、凭证模板验证打下不可绕过的地基。这不是理论推演,是把安装包、数据库、中间件、配置文件四者拧成一股绳的实操契约。
2. Oracle数据库安装:从管理员权限到sys/system密码的四层校验闭环
2.1 为什么必须用Oracle?NC65底层数据契约的刚性约束
用友NC65并非抽象兼容所有RDBMS。其UAP平台元数据引擎、多租户隔离机制、以及核心财务模块的事务一致性保障,深度绑定Oracle的PL/SQL语法特性、ROWID物理寻址能力、以及ASM存储管理逻辑。某高校实验室曾用MySQL 8.0强行适配NC65 6.5.1,结果在“期末结账”场景触发死锁检测超时,根源在于MySQL的间隙锁(Gap Lock)与NC65自定义锁表逻辑冲突。因此,手册开篇强调Oracle,不是偏好,而是技术栈契约——就像Java程序不能脱离JVM运行一样。当前主流适配版本为Oracle 11g R2(11.2.0.4)和Oracle 12c R1(12.1.0.2),后者需额外关闭CDB/PDB模式以兼容NC65的单实例连接模型。
2.2 管理员身份运行:Windows UAC策略下的服务注入关键点
右键选择“以管理员身份运行”并非形式主义。Oracle安装程序在setup.exe阶段需向Windows注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\写入OracleServiceORCL服务项,并在HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\KEY_OraDB12Home1下创建实例参数。若权限不足,服务注册失败,后续sqlplus / as sysdba将提示ORA-12560: TNS:protocol adapter error。实测发现:Win10 20H2之后版本,即使用户属Administrators组,未显式勾选“以管理员身份运行”,服务项仅写入当前用户配置单元(HKCU),导致服务管理器中不可见。解决方案:在快捷方式属性中勾选“高级→以管理员身份运行”,或直接在PowerShell中执行Start-Process setup.exe -Verb RunAs。
2.3 全局数据库名与管理口令:贯穿NC65全生命周期的密钥链
步骤1.6要求的“全局数据库名”(如orcl.example.com)和“管理口令”(即sys/system密码),是NC65数据源配置的根证书。它被硬编码在三个位置:
- Oracle监听器配置文件
listener.ora中的SID_LIST_LISTENER段; - NC65
home/config/ncserver.properties的jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:orcl; - 建库向导执行SQL脚本时,
@connect username/password@orcl中的TNS别名。
若全局数据库名含下划线(如nc_orcl),Oracle 12c会拒绝创建服务;若口令含特殊字符#或$,sysconfig.bat读取时因CMD变量解析规则导致截断。血泪经验:口令强制使用Nc65Test2024!格式(大写+数字+符号),全局数据库名严格采用小写字母+数字组合(如ncdb65),避免任何分隔符。
2.4 安装完成后的密码二次确认:Oracle密码策略与NC65连接池的隐式耦合
安装末尾弹出的密码设置窗口,本质是执行ALTER USER sys IDENTIFIED BY "xxx";和ALTER USER system IDENTIFIED BY "xxx";。此处存在双重陷阱:
- Oracle密码复杂度策略:12c默认启用
VERIFY_FUNCTION_11G,要求密码至少8位、含大小写字母、数字、特殊字符。若设为12345678,安装程序会静默失败,日志位于%ORACLE_HOME%\cfgtoollogs\dbca\orcl\trace.log; - NC65连接池预检机制:
sysconfig.bat在“测试连接”时,会用sys用户尝试建立连接并执行SELECT 1 FROM DUAL。若密码与1.6步不一致,测试必然失败,但错误提示仅为“连接超时”,实际是ORA-01017(用户名/密码无效)。
提示:安装完成后立即验证,打开CMD,执行
sqlplus /nolog→CONNECT sys/"Nc65Test2024!" AS SYSDBA→SELECT name FROM v$database;。返回NCDB65即成功。
3. 表空间与用户创建:用SQL*Plus精准控制NC65数据物理布局
3.1 表空间路径的绝对化陷阱:Windows路径分隔符与Oracle数据文件解析差异
创建表空间语句中'D:\NCDATA\NNC_DATA01.DBF'看似简单,实则暗藏玄机。Oracle在Windows下解析数据文件路径时,将反斜杠\视为转义字符。若路径写为'D:\NCDATA\NNC_DATA01.DBF',Oracle实际识别为D:[NCDATA[NNC_DATA01.DBF([为ASCII 27),导致ORA-01119: error in creating database file。正确写法必须使用双反斜杠\\或正斜杠/:
CREATE TABLESPACE NNC_DATA01 DATAFILE 'D:\\NCDATA\\NNC_DATA01.DBF' SIZE 500M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K; -- 或 CREATE TABLESPACE NNC_DATA01 DATAFILE 'D:/NCDATA/NNC_DATA01.DBF' SIZE 500M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K;实测发现:D:/NCDATA/比D:\\NCDATA\\更稳定,因Oracle内部路径解析器对正斜杠兼容性更强。同时,D:\NCDATA\目录必须由管理员手动创建,且Oracle服务账户(如NT AUTHORITY\SYSTEM)需对该目录有完全控制权限,否则数据文件初始化失败。
3.2 数据与索引表空间分离:NC65性能基线的物理层设计
NC65要求NNC_DATA01(数据)与NNC_INDEX01(索引)物理分离,这并非教条,而是应对高并发事务的IO优化策略。当财务凭证批量生成时,GL_VOUCHER主表写入与IDX_GL_VOUCHER_BILLNO索引更新产生磁盘争用。分离后,Windows磁盘调度器可将数据文件IO与索引文件IO分配至不同物理扇区。关键参数解读:
SIZE 500M:初始分配500MB,避免频繁扩展影响性能;AUTOEXTEND ON NEXT 50M:每次自动扩展50MB,平衡碎片与空间浪费;UNIFORM SIZE 256K:数据表空间使用256KB统一区大小,适配NC65单据主表平均记录长度;UNIFORM SIZE 128K:索引表空间使用128KB,因索引节点更小,高频分裂需更细粒度管理。
注意:
EXTENT MANAGEMENT LOCAL是强制要求,NC65建库脚本依赖本地管理表空间(LMT)的位图管理,若误用字典管理(DMT),建库向导执行create table时抛出ORA-01450: maximum key length (6398) exceeded。
3.3 用户授权的最小权限原则:DBA角色与NC65运行时的精确匹配
GRANT connect,dba to 用户名;表面看是赋予DBA权限,实则NC65运行时仅需以下子集:
| 权限 | NC65模块用途 | 是否必需 |
|---|---|---|
CREATE SESSION | 建立数据库连接 | ✅ |
CREATE TABLE | 建库向导创建基础表 | ✅ |
CREATE VIEW | UAP平台动态视图生成 | ✅ |
CREATE SEQUENCE | 单据编号序列生成 | ✅ |
UNLIMITED TABLESPACE | 避免表空间配额不足中断建库 | ✅ |
SELECT ANY DICTIONARY | 元数据扫描(如字段类型映射) | ✅ |
ALTER SYSTEM | 动态调整SGA参数(NC65启动时调用) | ⚠️(仅首次启动需) |
| 因此,更安全的授权语句为: |
CREATE USER nc65user IDENTIFIED BY "Nc65Test2024!" DEFAULT TABLESPACE nnc_data01 TEMPORARY TABLESPACE temp; GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE SEQUENCE, UNLIMITED TABLESPACE, SELECT ANY DICTIONARY TO nc65user; -- 首次启动后,可回收ALTER SYSTEM权限 REVOKE ALTER SYSTEM FROM nc65user;此举规避DBA权限滥用风险,符合等保2.0对应用账号权限最小化的要求。
4. NC65安装与数据源配置:从setup.bat到admin.jsp的七步链路验证
4.1 setup.bat执行失败的三类根因:JDK、路径、环境变量的三角校验
双击setup.bat无响应或报错Error: Could not find or load main class com.yonyou.nc.setup.Main,本质是Java环境链路断裂。需按顺序排查:
- JDK版本硬约束:NC65 6.5仅支持JDK 1.8.0_202至1.8.0_333。高于此范围(如JDK 11+)因
javax.xml.bind包移除导致UAP编译器崩溃;低于此范围(如1.8.0_181)因TLS 1.2协议缺陷无法连接许可服务器。验证命令:java -version输出必须为java version "1.8.0_291"格式; - 安装路径禁中文:
setup.bat内部调用jar -xf解压临时文件,Windows CMD对UTF-8路径解析异常。若路径为D:\用友软件\NC65\,解压后class文件名乱码,Main类无法加载。必须改为D:\YonyouNC65\; - JAVA_HOME指向错误:
setup.bat首行set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_291,若系统存在多个JDK,需确保该路径下bin\java.exe真实存在,且%JAVA_HOME%\jre\lib\rt.jar可读取。
4.2 sysconfig.bat数据源配置:四个必填字段与测试连接的底层握手
home/bin/sysconfig.bat启动后,进入“数据源”页,需填写:
| 字段 | 值示例 | 技术含义 |
|---|---|---|
| 数据库类型 | Oracle | 决定JDBC驱动类oracle.jdbc.driver.OracleDriver加载 |
| 数据库名称 | ncdb65 | 对应Oracle实例SID,必须与tnsnames.ora中ncdb65=段一致 |
| 主机地址 | 127.0.0.1 | NC65服务器与Oracle在同一机器时,禁用localhost(DNS解析延迟) |
| 端口号 | 1521 | Oracle监听器默认端口,若修改需同步更新listener.ora |
| 用户名/密码 | nc65user / Nc65Test2024! | 必须与3.3步创建的用户完全一致 |
| 点击“测试连接”时,NC65后台执行: |
- 加载
ojdbc8.jar(NC65 6.5自带); - 构造URL:
jdbc:oracle:thin:@127.0.0.1:1521:ncdb65; - 调用
DriverManager.getConnection(),触发Oracle TCP三次握手; - 成功后执行
SELECT SYSDATE FROM DUAL验证会话活性。
若测试失败,查看home/log/sysconfig.log,重点搜索SQLException堆栈,90%问题源于端口不通或SID不匹配。
4.3 EJB部署与startup.bat启动:NC65服务进程的双引擎架构
NC65采用“EJB容器+Web容器”双进程模型:
deploy ejb:将home\ejb\*.jar部署至内置WebLogic Server(NC65 6.5集成WL 12.1.3),生成home\domains\ncdomain\servers\ncserver\tmp\_WL_user\下的展开目录;startup.bat:启动home\domains\ncdomain\startWebLogic.cmd,加载ncserver实例,暴露HTTP端口(默认8080)。
关键验证点:启动后检查home\domains\ncdomain\servers\ncserver\logs\ncserver.log,出现####<2024-06-15T10:23:45.123+0800> <Notice> <WebLogicServer> <BEA-000360> <Server started in RUNNING mode>即成功。若端口被占用,修改home\domains\ncdomain\config\config.xml中<listen-port>8080</listen-port>为8081,重启生效。
5. 常见问题排查:从ORA-12560到admin.jsp白屏的五条血泪路径
5.1 现象:双击sysconfig.bat后CMD窗口闪退,无任何日志
原因:sysconfig.bat依赖home\bin\yonyou.jar,而该jar包内MANIFEST.MF指定Class-Path: lib/commons-lang3-3.4.jar lib/ojdbc8.jar ...。若home\lib\目录下缺失任一jar(如commons-lang3-3.4.jar被误删),Java ClassLoader抛出NoClassDefFoundError,CMD捕获异常后立即退出。
解决:用7-Zip打开yonyou.jar,检查META-INF/MANIFEST.MF中Class-Path列出的所有jar是否存在于home\lib\。缺失则从原安装包NC65\Disk1\stage\Components\com.yonyou.nc.base\*.*目录复制补全。
5.2 现象:浏览器访问http://127.0.0.1:8080/admin.jsp显示404
原因:startup.bat启动成功,但NC65 Web应用未部署。常见于deploy ejb步骤未执行,或执行后未重启startup.bat。NC65的EJB组件是Web应用前置依赖,未部署则/admin.jsp资源不存在。
解决:确认home\domains\ncdomain\servers\ncserver\upload\目录下存在nc.ear文件;若无,则重新运行sysconfig.bat→“部署ejb”→勾选全部→“确定”;部署完成后,必须关闭startup.bat窗口,再双击重启。
5.3 现象:admin.jsp登录root/super后,建库向导点击“执行”无响应,日志报ORA-00942: table or view does not exist
原因:建库向导执行的SQL脚本(如home\sql\oracle\create_nc_tables.sql)需在nc65user用户下运行,但脚本中CREATE TABLE gl_voucher未加schema前缀。Oracle默认在当前用户模式下创建,若nc65user未被授予CREATE ANY TABLE,则表建在SYS模式下,后续SELECT * FROM gl_voucher因未指定nc65user.gl_voucher而报错。
解决:编辑create_nc_tables.sql,在每条CREATE TABLE前添加nc65user.前缀,如CREATE TABLE nc65user.gl_voucher (...);或在sysconfig.bat中“建库向导”页,将“数据库用户”字段明确填为nc65user。
5.4 现象:Oracle服务正常,但NC65启动日志持续刷Could not connect to database
原因:Windows防火墙拦截了1521端口。Oracle监听器虽在运行,但外部连接被阻断。telnet 127.0.0.1 1521返回“无法打开到主机的连接”。
解决:打开“Windows Defender 防火墙→高级设置→入站规则”,新建规则:协议类型TCP,特定本地端口1521,操作“允许连接”,配置文件勾选“域、专用、公用”。
5.5 现象:建库向导执行完毕,但登录admin.jsp后系统编码为空,无法保存
原因:home\config\ncserver.properties中system.code=值为空,而NC65强制校验该值非空。该值在建库向导最后一步“系统基本信息”中输入,若输入框为空直接点“保存”,配置未写入。
解决:手动编辑ncserver.properties,添加system.code=NC65TEST;然后重启startup.bat;登录后进入“系统管理→系统设置→系统编码”,此时可正常修改并保存。
6. License激活与建库脚本定制:让NC65从Demo走向可验证业务逻辑的临门一脚
6.1 license获取:离线激活的三步密钥交换协议
NC65的sysconfig.bat→License页点击“获取授权”,实际执行离线激活流程:
- 硬件指纹生成:读取本机MAC地址(首个非虚拟网卡)、CPU序列号、硬盘卷标,经SHA-256哈希生成16位设备码(如
A1B2C3D4E5F67890); - 请求文件生成:将设备码、NC65版本号(6.5.1)、申请日期打包为XML,保存为
license_request.xml; - 授权文件注入:将
license_request.xml提交至用友授权服务器(或某公司内部许可中心),返回license_response.lic,拖入sysconfig.bat窗口即完成绑定。
注意:若更换主板或重装系统,设备码变更,需重新申请。测试环境建议申请“开发版License”,有效期1年,支持全部模块但限制并发用户数≤5。
6.2 建库脚本的定向裁剪:跳过非核心模块加速测试迭代
NC65建库向导默认执行home\sql\oracle\all_in_one.sql,耗时30分钟以上。对于只想验证采购模块的A同学,可定制精简脚本:
- 备份原脚本;
- 删除无关模块段落:注释掉
-- HR模块、-- 资产模块、-- 人力模块对应的所有@create_xxx.sql语句; - 保留核心链路:
@create_core.sql(基础框架)、@create_pur.sql(采购)、@create_inv.sql(库存)、@create_fi.sql(财务); - 在
all_in_one.sql末尾添加COMMIT;确保事务提交。
执行后,数据库体积从12GB降至3.2GB,建库时间缩短至8分钟,且不影响采购订单→入库单→应付单的端到端流程验证。
6.3 验证环境可用性的黄金三指标
完成全部步骤后,不急于写代码,先用三步验证沙盒健康度:
- 数据库层:
sqlplus nc65user/Nc65Test2024!@127.0.0.1:1521:ncdb65→SELECT COUNT(*) FROM nc65user.gl_voucher;返回0(空表正常); - 应用层:
curl -I http://127.0.0.1:8080/admin.jsp返回HTTP/1.1 200 OK; - 业务层:登录admin.jsp → 进入“系统管理→建库向导” → 点击“查看已安装产品”,确认
采购管理、库存管理状态为“已安装”。
这三步覆盖了Oracle监听器、NC65 Web容器、UAP模块注册三层,任一失败即说明链路未贯通。从那以后我每次搭建新环境,都强制走一遍这三步再开始写UAP代码——省去后面80%的“为什么我的按钮点不动”的排查时间。希望帮到你。
本文还有配套的精品资源,点击获取