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 模式。

推荐排查顺序

  1. 先确认数据库状态是 `AVAILABLE`;
  2. 确认钱包文件完整;
  3. 确认 `TNS_ADMIN` 指向正确;
  4. 用最小脚本执行 `select 1 from dual`;
  5. 最后再接入正式应用。

不要一上来就在完整应用里排查。先用最小连接脚本验证数据库通路,会省很多时间。