Oracle ADB 钱包连接踩坑记录:Thin、Thick 与 TNS_ADMIN
Oracle Autonomous Database 默认使用钱包连接。配置不复杂,但错误信息经常不够直观。 最容易踩坑的地方有三个:钱包目录、`TNS_ADMIN`、驱动模式。 钱包目录要完整 钱包目录通常包含这些文件: ```text cwallet.sso ewallet.p12 tnsnames.ora sqlnet.ora ojdbc.properties ``` 程序运行用户必须能读取这些文件。 如果文件存在但权限不对,连接时也会报类似“找不到钱包”或“无法初始化 keystore”的错误。 TNS_ADMIN 指向钱包目录 `TNS_ADMIN` 应该指向钱包所在目录,例如: ```bash export TNS_ADMIN=/opt/oracle-adb/wallet ``` 这样驱动才能找到 `tnsnames.ora`,进而解析连接别名: ```text shibefree01_low ``` Thin 和 Thick 的区别 Node.js 的 `oracledb` 驱动有两种模式: 模式 特点 Thin 不依赖 Oracle Instant Client,部署简单 Thick 需要 Instant Client,但钱包兼容性更好 如果 Thin 模式连接 ADB 钱包出现奇怪错误,可以考虑切到 Thick 模式。 推荐排查顺序 先确认数据库状态是 `AVAILABLE`; 确认钱包文件完整; 确认 `TNS_ADMIN` 指向正确; 用最小脚本执行 `select 1 from dual`; 最后再接入正式应用。 不要一上来就在完整应用里排查。先用最小连接脚本验证数据库通路,会省很多时间。 ...