博主遇到一个这样的问题,Go语言开发的数据采集存储程序,在本地测试运行良好,程序以服务部署运行在Windows10正式服务器后,存储数据老遇到“ORA-01804”的报错,导致数据存储失败。
究其原因竟是:当使用 NSSM 运行服务时,服务可能不会继承你登录用户的完整环境变量,尤其是 ORACLE_HOME 和 PATH 环境变量,这些环境变量对于 Oracle 客户端库(如 OCI)是必要的。若这些客户端库未正确配置或者无法找到,将导致 ORA-01804 错误。
所以解决办法是在NSSM部署服务时,为服务配置环境变量。
为NSSM服务设置环境变量
以下讲解服务已经安装完之后,如何使用命令设置环境变量
(安装服务教程见另一篇:使用nssm工具将.exe程序安装成Windows服务运行)
1、以管理员身份运行命令提示符
确保你运行命令提示符时具有管理员权限。请按照以下步骤操作:
(1)在 Windows 桌面,搜索“cmd”。
(2)右键点击“命令提示符”,选择“以管理员身份运行”。
(3) 如果系统提示,允许该应用进行更改。
2、使用命令行设置NSSM服务的环境变量
nssm set serviceName Environment "ORACLE_HOME=E:\Software\WINDOWS.X64_213000_db_home"
nssm set serviceName Environment "PATH=%PATH%;%ORACLE_HOME%\bin"
3、重新启动服务
---------------------------------------------------------------------------------------------------------------------------------
补充介绍:为Oracle数据库配置本地环境变量
1、设置 ORACLE_HOME
环境变量:
-
(1)在“系统变量”区域,点击“新建”按钮。 (2)输入变量名为 ORACLE_HOME。 (3)输入变量值为你的 Oracle 数据库安装路径,例如:E:\Software\WINDOWS.X64_213000_db_home 点击“确定”。
2、更新 PATH
变量:
-
(1)在“系统变量”区域找到 Path 变量,选中后点击“编辑”。 (2)在编辑窗口中,添加以下新条目(确保路径正确):%ORACLE_HOME%\bin 点击“确定”保存更改。