注册
从零开始掌握达梦数据库JDBC+ODBC配置全流程
专栏/技术分享/ 文章详情 /

从零开始掌握达梦数据库JDBC+ODBC配置全流程

派仔 2026/08/21 308 0 0
摘要

一、引言

在数据库应用开发中,JDBC(Java Database Connectivity)是连接 Java 应用程序与数据库的标准接口,ODBC(Open Database Connectivity)是通用的跨语言数据库访问接口。正确配置 JDBC、ODBC 两种数据库连接方式,不仅能适配 Java、C/C++、Python 等不同开发场景,更是保障应用正常启动、系统性能稳定、高可用运行的核心基础。
本文基于真实达梦 DM8 数据库压测实验,在原有 JDBC 全流程配置的基础上,新增Linux 环境 ODBC 完整部署配置,无需新增服务器,直接在原有虚拟机环境完成部署。从驱动部署、连接配置、参数调优、数据源搭建到故障排查,一站式梳理达梦数据库两大主流连接方案,适配新手入门、测试环境搭建、生产环境配置等各类场景。

二、环境准备

2.1 软件版本

组件 版本
达梦数据库 DM8 V8(20260707)
操作系统 CentOS Linux 7 x86_64
JMeter 5.6.3
JDK OpenJDK 17.0.20
达梦 JDBC 驱动 DmJdbcDriver18.jar
ODBC 驱动管理器 unixODBC
达梦 ODBC 驱动 自带 libdodbc.so(适配 DM8)

2.2 数据库集群架构

本次实验采用达梦主备集群(一主一备),主库端口 5236,备库端口 5237。集群部署在同一台虚拟机内,可同时适配 JDBC、ODBC 连接测试,模拟高可用场景下的数据库访问能力。

三、JDBC 全流程配置(核心)

3.1 JDBC 驱动部署

达梦数据库提供专用 JDBC 驱动包 DmJdbcDriver18.jar,适配 JDK 1.8 及以上版本,驱动默认内置在数据库安装目录中。

3.1.1 获取驱动

find /home/dmdba/dmdbms -name “DmJdbcDriver18.jar”

3.1.2 部署到应用

针对 JMeter 压测环境,直接将驱动放入 JMeter 依赖目录即可生效:
bash
cp DmJdbcDriver18.jar /path/to/apache-jmeter-5.6.3/lib/
其他 Java 应用,只需将驱动添加至项目类路径(classpath)。

3.2 JDBC URL 两种配置模式

3.2.1 直连模式

直接指定数据库 IP 和端口,适用于单机、临时测试场景

3.2.2 服务名模式

通过自定义服务名连接,支持主备集群自动故障切换、负载均衡,适用于生产集群环境:
jdbc:dm://DM_CLUSTER
服务名需通过 dm_svc.conf 配置文件定义,详见后文。

3.3 连接池参数详解与调优

连接池是 JDBC 性能与稳定性的核心,合理的参数配置可有效避免连接频繁创建销毁、连接超时、TPS 波动等问题。

3.3.1 核心参数列表

参数 含义 推荐值
maxActive 最大活跃连接数 根据并发数设置,≥ 业务并发数
maxIdle 最大空闲连接数 与 maxActive 一致,减少连接重建开销
poolMax 连接池最大容量 与 maxActive 保持相同
maxWait 获取连接最大等待时间(ms) 10000
connectionAge 连接最大存活时间(ms) 600000(10 分钟)及以上
preinit 是否预初始化连接池 true(启动预热,提升初始性能)
poolPreparedStatements 是否缓存预编译 SQL true(大幅提升重复 SQL 执行效率)

3.3.2 实战调优过程

初期使用默认配置(maxActive=100、maxIdle=10、connectionAge=5000)压测,出现 TPS 仅 800 左右、响应时间波动大、偶发连接超时问题。
优化调整策略:

  1. 提升 maxIdle从 10 至 100,匹配最大活跃连接数,避免频繁创建销毁连接;
  2. 延长 connectionAge 至 600000ms(10分钟),防止连接过早回收失效;
  3. 开启 preinit=true,压测/应用启动前预热连接池,消除启动阶段延迟。
    优化后,系统响应时间曲线平稳,请求错误率归零,大幅提升系统稳定性。
    3.4 集群服务名配置(dm_svc.conf)
    服务名是达梦集群 JDBC 连接的核心,可实现主备自动切换,无需手动修改 IP 端口。

3.4.1 配置文件位置

Linux:/etc/dm_svc.conf 或 $DM_HOME/bin/dm_svc.conf
Windows:%APPDATA%\dm_svc.conf 或 C:\Windows\System32\dm_svc.conf

3.4.2 完整配置内容

TIME_ZONE=(+8)
LANGUAGE=(cn)
DM_CLUSTER=(10.36.41.11:5236,10.36.41.11:5237)
[DM_CLUSTER]
LOGIN_MODE=(1) # 1:只连接主库,主库故障自动切换备库
SWITCH_TIMES=(15) # 故障切换重试次数
SWITCH_INTERVAL=(1000) # 重试间隔(毫秒)
3.4.3 服务名有效性验证
bash
./disql SYSDBA/Dameng123@DM_CLUSTER
返回「服务器[IP:端口]:处于主库打开状态」即配置生效。
3.5 JDBC 压测验证
3.5.1 JMeter 配置参数
JDBC Connection Configuration 核心配置:

  • Database URL: jdbc:dm://DM_CLUSTER
  • JDBC Driver Class: dm.jdbc.driver.DmDriver
  • Username: SYSDBA
  • Password: Dameng123
    采用 50 并发、持续5分钟压测,监控 TPS、响应时间、错误率指标。
    3.5.2 数据库端状态校验
    sql
    – 查看活动会话数
    SELECT COUNT(*) FROM V$SESSIONS WHERE STATE=‘ACTIVE’;

– 统计客户端连接来源及状态
SELECT CLNT_IP, STATE, COUNT(*)
FROM V$SESSIONS
GROUP BY CLNT_IP, STATE;

四、ODBC 全流程配置(新增 Linux 环境)

达梦 DM8 安装包自带 ODBC 驱动库 libdodbc.so,无需额外下载驱动,仅需安装 unixODBC 驱动管理器,配置驱动文件和数据源文件,即可完成 ODBC 连接部署,全程在原有压测虚拟机操作,无需新增机器。

4.1 安装 ODBC 驱动管理器

CentOS 系统通过 yum 一键安装 unixODBC 及依赖工具:
bash
yum install -y unixODBC unixODBC-devel

4.2 校验达梦自带 ODBC 驱动

达梦 ODBC 驱动默认位于数据库安装 bin 目录,执行命令校验文件是否存在:
bash
ls -l /home/dmdba/dmdbms/bin/libdodbc.so
文件存在则说明驱动就绪,固定驱动路径:/home/dmdba/dmdbms/bin/libdodbc.so
image.png

4.3 配置驱动文件(odbcinst.ini)

/etc/odbcinst.ini 为系统 ODBC 驱动注册文件,用于声明达梦 ODBC 驱动路径与信息。
bash
vi /etc/odbcinst.ini
写入以下配置内容:
ini
[DM8 ODBC DRIVER]
Description = DM8 ODBC Driver
Driver = /home/dmdba/dmdbms/bin/libdodbc.so

4.4 配置数据源文件(odbc.ini)

/etc/odbc.ini 为 ODBC 数据源配置文件,定义具体数据库连接信息。
bash
vi /etc/odbc.ini
写入以下配置内容:
ini
[DM8]
Description = DM8 DSN
Driver = DM8 ODBC DRIVER
SERVER = 127.0.0.1
TCP_PORT = 5236
UID = SYSDBA
PWD = Dameng123
关键注意点:此处 Driver 名称必须与 odbcinst.ini 中驱动名称完全一致,否则会提示驱动找不到。

4.5 ODBC 连接测试

通过系统自带 isql 工具测试数据源连通性:
isql -v DM8
image.png
进入交互界面后,可执行 SQL 验证数据库访问:
– 查询测试数据
SELECT * FROM SYSDBA.T_USER WHERE ROWNUM <= 1;
image.png
查询正常返回数据、无报错,即 ODBC 配置全部生效。
验证其他SQL操作:

插入数据

INSERT INTO SYSDBA.T_USER (NAME, EMAIL, AGE) VALUES (‘odbc_test’, ‘odbc@test.com’, 25);

更新数据

UPDATE SYSDBA.T_USER SET EMAIL = ‘updated@test.com’ WHERE NAME = ‘odbc_test’;

删除数据

DELETE FROM SYSDBA.T_USER WHERE NAME = ‘odbc_test’;
image.png

4.6 ODBC 常见连接故障排查

故障现象:isql 提示找不到驱动、连接失败、数据源无效
排查方案:

  1. 核对 odbcinst.ini中 Driver 路径,确保 libdodbc.so 文件真实存在;
  2. 严格匹配 odbc.ini 与 odbcinst.ini 的驱动名称,大小写、字符完全一致;
  3. 检查达梦数据库服务状态,确认 5236 端口正常监听:ss -tulnp | grep 5236;
  4. 确认数据库账号密码无误,服务器端口未被防火墙拦截。

五、通用常见故障排查

5.1 NumberFormatException(JDBC)

现象:JMeter 启动报错:For input string: “”
原因:连接池整数参数(maxActive、maxWait 等)配置为空字符串
解决:检查 jmx 配置文件、dm_svc.conf,确保所有参数为合法数值。

5.2 服务名无法解析(JDBC)

现象:disql 提示无效服务名、连接超时
原因:dm_svc.conf 路径错误、格式异常、文件权限不足
解决:确认配置文件路径,修正语法,授权 chmod 644 /etc/dm_svc.conf。

5.3 OutOfMemoryError(数据库服务)

现象:Can not create buffer pools, out of memory!
原因:数据库 BUFFER 参数设置过大,超出系统可用内存
解决:调低 dm.ini 中 BUFFER 参数值(如 9000 改为 3000),释放系统内存。

六、总结与最佳实践

6.1 JDBC 配置核心原则

  1. 驱动版本严格匹配 JDK、数据库版本,DmJdbcDriver18.jar 适配 JDK1.8+;
  2. 连接池参数与业务并发匹配,maxActive、maxIdle 不低于峰值并发数;
  3. 集群环境优先使用服务名模式,实现主备自动切换,提升高可用性。

6.2 ODBC 配置核心原则

  1. 无需单独下载 ODBC 驱动,直接使用达梦安装包自带 libdodbc.so;
  2. 驱动文件与数据源文件名称必须严格统一,是 ODBC 连接成功的关键;
  3. 适配 C/C++、Python、PHP 等非 Java 业务场景,补充 JDBC 场景短板。

6.3 性能调优通用心得

  1. 连接池预热、长连接存活配置,可显著提升系统稳定性,减少波动;
  2. 开启 SQL 预编译缓存,降低重复 SQL 解析开销,提升执行效率;
  3. 定期监控 VSESSIONS、VBUFFERPOOL 视图,实时排查连接、缓存异常。

6.4 完整学习成果

通过本文实战,可完整掌握达梦数据库两大主流连接方案:
JDBC:驱动部署、直连/集群配置、连接池调优、压测验证、故障排查
ODBC:驱动管理器安装、驱动注册、数据源配置、命令行测试、问题排查
适配 Java、跨语言多场景数据库访问,满足测试、生产环境部署需求

最后说明:JDBC、ODBC 配置看似基础,但参数细节直接决定系统性能与可用性,生产环境上线前务必在测试环境充分压测验证。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服