nodejs 使用官方oracledb库连接数据库 教程
导读
-
linux下安装使用
- gcc安装
- nodejs安装
- oracle客户端安装
- npm安装oracledb测试连接
- 错误说明
-
windows下安装使用
-
同上结构
-
1|0
1|1Linux下安装使用
一、安装需要GCC 4.7(或更高版本)
因为编译node 4(或更高版本)需要C++ 11兼容的编译器。Linux 6和RHEL 6上的默认编译器不具备所需的C++ 11支持。安装GCC 4.7或更高版本或升级到Linux 7。(点击查看官方安装c++ 11教程)或者参考 CentOS yum升级GCC到4.8 教程。
注:安装后验证版本:
二、安装nodejs
以6.9.4版本为例安装(根据版本参考即可)
设置Node.js 环境变量:
查看node版本
三、安装oracle客户端 'Basic' 和 'SDK' zip包
1. 进入 官方下载地址,下载以下两个包,并安装在同一个目录(官方下载各种验证,这里提供百度云盘下载链接)
以本机测试为例,我的安装位置(可自定义)为 /opt/oracle
设置环境变量
四、安装oracledb 测试
安装oracle库:
> oracledb@1.13.1 install /opt/oracletest/node_modules/oracledb
> node-gyp rebuild
make: Entering directory `/opt/oracletest/node_modules/oracledb/build'
CXX(target) Release/obj.target/oracledb/src/njs/src/njsOracle.o
CXX(target) Release/obj.target/oracledb/src/njs/src/njsPool.o
CXX(target) Release/obj.target/oracledb/src/njs/src/njsConnection.o
CXX(target) Release/obj.target/oracledb/src/njs/src/njsResultSet.o
CXX(target) Release/obj.target/oracledb/src/njs/src/njsMessages.o
CXX(target) Release/obj.target/oracledb/src/njs/src/njsIntLob.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiEnv.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiEnvImpl.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiException.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiExceptionImpl.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiConnImpl.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiDateTimeArrayImpl.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiPoolImpl.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiStmtImpl.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiUtils.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiLob.o
CXX(target) Release/obj.target/oracledb/src/dpi/src/dpiCommon.o
SOLINK_MODULE(target) Release/obj.target/oracledb.node
COPY Release/oracledb.node
make: Leaving directory `/opt/oracletest/node_modules/oracledb/build'
npm WARN saveError ENOENT: no such file or directory, open '/opt/oracletest/package.json'
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN enoent ENOENT: no such file or directory, open '/opt/oracletest/package.json'
npm WARN oracletest No description
npm WARN oracletest No repository field.
npm WARN oracletest No README data
npm WARN oracletest No license field.
+ oracledb@1.13.1
added 2 packages in 42.994s
在当前目录新建app.js测试连接:
执行:
执行后报错:
ORA-24454: client host name is not set
这里需要设置主机名到 /etc/hosts
设置后重新执行 node app.js 返回打印结果成功。
如果pm2管理项目时报错:Error: NJS-045: cannot load the oracledb add-on binary for Node.js **** (linux, x64)
请记得pm2 restart *** --update-env 来更新环境变量
参考 https://github.com/oracle/node-oracledb/blob/master/INSTALL.md#instzip
1|2Windows下安装使用
一、安装c++ 编译环境
这里是下载的 Visual Studio Express 2013 for Windows Desktop
1.官方下载
(由于下载过于麻烦,可以通过这里提供的 百度云盘下载 安装文件 cn_visual_studio_express_2012_for_windows_desktop_x86_web_installer_1001992.exe)
找到Visual Studio Express 2012 for Windows Desktop 并点击右上角 下载 按钮 开始下载
下载完安装文件 cn_visual_studio_express_2012_for_windows_desktop_x86_web_installer_1001992.exe 并点击安装
二、安装 Oracle instant client
这是 Oracle 提供的访问数据库的 C++接口, windows 64位在这里下载 Version 12.1.0.1.0 中的
instantclient-basic-windows.x64-12.1.0.1.0.zip
和
instantclient-sdk-windows.x64-12.1.0.1.0.zip;
1.官方下载地址(由于官方下载权限和网络问题,这里同样提供 百度云下载 地址。)
下载完成后把它们解压到 D:\db\oracle\instantclient_12_2 文件夹中(可自定义目录), 由于两个 zip 中的文件各不相同, 所以合并到同一个文件夹也不会发生覆盖.
Windows环境变量设置
系统环境变量新增以下3个:
三、安装nodejs(省略,nodejs.org 下载msi安装包安装)
这里需要注意 npm版本保证最新即可
下面是npm升级命令:
四、安装oracledb 测试
代码测试如同linux下方式,请参考上面linux安装 第四章内容。
如果安装oracledb包不成功,请尝试重启电脑试一试(亲测)。
__EOF__

本文链接:https://www.cnblogs.com/rysinal/p/7779055.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程