使用Node.js的oracledb模块连接Oracle自治数据库的完整指南
2025-07-02 02:11:25作者:滑思眉Philip
Oracle自治数据库(ADB)作为云原生数据库服务,为开发者提供了高度自动化的管理体验。本文将详细介绍如何在Node.js应用中通过oracledb模块实现与Oracle ADB的安全连接,涵盖两种主流认证方式的技术实现细节。
一、基于mTLS认证的Wallet连接方案
mTLS(双向TLS)认证是Oracle ADB推荐的安全连接方式,需要使用Wallet文件进行身份验证。以下是完整的配置步骤:
-
环境准备
- 下载Oracle Wallet文件包(包含tnsnames.ora、ewallet.pem等)
- 设置TNS_ADMIN环境变量指向Wallet目录
-
TypeORM配置示例
TypeOrmModule.forRoot({
type: 'oracle',
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
connectString: 'yourdb_high',
extra: {
configDir: process.env.TNS_ADMIN,
walletLocation: process.env.TNS_ADMIN,
walletPassword: 'your_wallet_password'
}
})
- 关键参数说明
configDir:指定tnsnames.ora文件所在目录walletLocation:PEM格式证书文件路径walletPassword:Wallet加密密码
二、基于单向TLS的简化连接方案
对于开发环境或内部系统,可以采用更简单的单向TLS认证:
-
数据库端配置
- 在Oracle云控制台禁用"Require mutual TLS"选项
- 配置ACL规则允许客户端IP访问
-
连接字符串构造
DB_CONNECTION=(description= (retry_count=20)(retry_delay=3)
(address=(protocol=tcps)(port=1522)(host=yourhost.adb.oraclecloud.com))
(connect_data=(service_name=yourservice))
(security=(ssl_server_dn_match=yes))
- TypeORM精简配置
TypeOrmModule.forRoot({
type: 'oracle',
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
connectString: process.env.DB_CONNECTION
})
三、连接模式选择建议
-
Thick vs Thin模式
- Thick模式:需要Oracle Instant Client,支持更多高级功能
- Thin模式:纯JavaScript实现,部署更简单
-
性能考量
- 生产环境推荐使用Thick模式+连接池
- 无状态服务可考虑Thin模式简化部署
-
安全最佳实践
- 生产环境强制使用mTLS认证
- 定期轮换Wallet密码
- 通过VCN实现网络隔离
四、常见问题排查
-
ORA-12506错误
- 检查TNS_ADMIN路径是否正确
- 确认Wallet文件权限(600)
-
连接超时
- 验证网络ACL规则
- 检查防火墙设置
-
证书验证失败
- 更新根证书链
- 检查服务器DN匹配设置
通过本文介绍的两种连接方案,开发者可以根据实际业务需求选择适合的Oracle ADB连接方式。对于关键业务系统,建议采用mTLS认证确保最高级别的安全性;而对于开发测试环境,可以使用简化配置提高开发效率。
登录后查看全文
热门项目推荐
相关项目推荐
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
LongCat-AudioDiT-1BLongCat-AudioDiT 是一款基于扩散模型的文本转语音(TTS)模型,代表了当前该领域的最高水平(SOTA),它直接在波形潜空间中进行操作。00- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
AtomGit城市坐标计划AtomGit 城市坐标计划开启!让开源有坐标,让城市有星火。致力于与城市合伙人共同构建并长期运营一个健康、活跃的本地开发者生态。01
CAP基于最终一致性的微服务分布式事务解决方案,也是一种采用 Outbox 模式的事件总线。C#00
项目优选
收起
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
649
4.22 K
deepin linux kernel
C
27
14
Ascend Extension for PyTorch
Python
484
589
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
388
278
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.53 K
880
Oohos_react_native
React Native鸿蒙化仓库
JavaScript
331
387
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
936
847
暂无简介
Dart
896
214
昇腾LLM分布式训练框架
Python
141
165
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
123
194