You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

oracledb_exporter通过Wallet连接ADB遇ORA-12154错误求助

解决oracledb_exporter容器连接Oracle ADB时的ORA-12154错误

1. 确认Wallet挂载与文件完整性

  • 启动容器时必须将本地Wallet目录正确挂载到容器内的/tmp/wallet,示例docker命令:
    docker run -v /your/local/wallet/path:/tmp/wallet ... oracledb_exporter:latest
    
  • 进入容器检查/tmp/wallet下的文件,必须包含tnsnames.ora、sqlnet.ora、cwallet.sso、ewallet.p12这些核心文件,缺失任何一个都会导致连接失败。
  • 验证sqlnet.ora配置,确保存在以下两行:
    WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY=/tmp/wallet)))
    SQLNET.WALLET_OVERRIDE = TRUE
    

2. 正确配置DATA_SOURCE_NAME(DSN)

  • 使用TNS别名:直接用tnsnames.ora中定义的连接别名,比如文件里的adb_high,DSN格式为:
    username/password@adb_high
    
  • 使用完整连接字符串(不依赖tnsnames.ora):如果不想依赖容器内的TNS配置,直接用完整的TCPS连接字符串,示例:
    username/password@(DESCRIPTION=(CONNECT_TIMEOUT=10)(RETRY_COUNT=3)(RETRY_DELAY=1)(ADDRESS_LIST=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=TCPS)(HOST=your-adb-host.oraclecloud.com)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=your-adb-service-name_high.adb.oraclecloud.com))(SECURITY=(SSL_SERVER_DN_MATCH=yes)))
    
  • 确保DSN通过环境变量正确传递给容器,比如docker run时添加:
    -e DATA_SOURCE_NAME="username/password@adb_high"
    

3. 配置Oracle客户端环境变量

  • 容器内必须设置TNS_ADMIN=/tmp/wallet,让Oracle客户端能定位到Wallet配置文件。可以在docker run时添加环境变量:
    -e TNS_ADMIN=/tmp/wallet
    
  • 如果使用的是自定义镜像,确保镜像内的Oracle客户端环境变量(如ORACLE_HOME)配置正确,避免OCI库加载失败。

4. 容器内基础连接测试

  • 进入容器内部,用sqlplus或tnsping验证连接是否正常:
    docker exec -it <your-container-id> bash
    export TNS_ADMIN=/tmp/wallet
    # 测试TNS别名解析
    tnsping adb_high
    # 测试实际连接
    sqlplus username/password@adb_high
    
  • 如果tnsping成功但sqlplus连接失败,检查/tmp/wallet目录及文件的权限,确保运行oracledb_exporter的用户拥有读权限,必要时执行:
    chmod -R 755 /tmp/wallet
    

5. 检查oracledb_exporter版本兼容性

  • 确保使用的是oracledb_exporter的最新稳定版本,旧版本可能存在TCPS连接或Wallet处理的bug,升级到最新版可解决部分兼容性问题。

内容的提问来源于stack exchange,提问作者vijay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 05:31:08