在数据库应用开发中,JDBC(Java Database Connectivity)是连接 Java 应用程序与数据库的标准接口,ODBC(Open Database Connectivity)是通用的跨语言数据库访问接口。正确配置 JDBC、ODBC 两种数据库连接方式,不仅能适配 Java、C/C++、Python 等不同开发场景,更是保障应用正常启动、系统性能稳定、高可用运行的核心基础。
本文基于真实达梦 DM8 数据库压测实验,在原有 JDBC 全流程配置的基础上,新增Linux 环境 ODBC 完整部署配置,无需新增服务器,直接在原有虚拟机环境完成部署。从驱动部署、连接配置、参数调优、数据源搭建到故障排查,一站式梳理达梦数据库两大主流连接方案,适配新手入门、测试环境搭建、生产环境配置等各类场景。
组件 版本
达梦数据库 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)
本次实验采用达梦主备集群(一主一备),主库端口 5236,备库端口 5237。集群部署在同一台虚拟机内,可同时适配 JDBC、ODBC 连接测试,模拟高可用场景下的数据库访问能力。
达梦数据库提供专用 JDBC 驱动包 DmJdbcDriver18.jar,适配 JDK 1.8 及以上版本,驱动默认内置在数据库安装目录中。
find /home/dmdba/dmdbms -name “DmJdbcDriver18.jar”
针对 JMeter 压测环境,直接将驱动放入 JMeter 依赖目录即可生效:
bash
cp DmJdbcDriver18.jar /path/to/apache-jmeter-5.6.3/lib/
其他 Java 应用,只需将驱动添加至项目类路径(classpath)。
直接指定数据库 IP 和端口,适用于单机、临时测试场景
通过自定义服务名连接,支持主备集群自动故障切换、负载均衡,适用于生产集群环境:
jdbc:dm://DM_CLUSTER
服务名需通过 dm_svc.conf 配置文件定义,详见后文。
连接池是 JDBC 性能与稳定性的核心,合理的参数配置可有效避免连接频繁创建销毁、连接超时、TPS 波动等问题。
参数 含义 推荐值
maxActive 最大活跃连接数 根据并发数设置,≥ 业务并发数
maxIdle 最大空闲连接数 与 maxActive 一致,减少连接重建开销
poolMax 连接池最大容量 与 maxActive 保持相同
maxWait 获取连接最大等待时间(ms) 10000
connectionAge 连接最大存活时间(ms) 600000(10 分钟)及以上
preinit 是否预初始化连接池 true(启动预热,提升初始性能)
poolPreparedStatements 是否缓存预编译 SQL true(大幅提升重复 SQL 执行效率)
初期使用默认配置(maxActive=100、maxIdle=10、connectionAge=5000)压测,出现 TPS 仅 800 左右、响应时间波动大、偶发连接超时问题。
优化调整策略:
Linux:/etc/dm_svc.conf 或 $DM_HOME/bin/dm_svc.conf
Windows:%APPDATA%\dm_svc.conf 或 C:\Windows\System32\dm_svc.conf
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 核心配置:
– 统计客户端连接来源及状态
SELECT CLNT_IP, STATE, COUNT(*)
FROM V$SESSIONS
GROUP BY CLNT_IP, STATE;
达梦 DM8 安装包自带 ODBC 驱动库 libdodbc.so,无需额外下载驱动,仅需安装 unixODBC 驱动管理器,配置驱动文件和数据源文件,即可完成 ODBC 连接部署,全程在原有压测虚拟机操作,无需新增机器。
CentOS 系统通过 yum 一键安装 unixODBC 及依赖工具:
bash
yum install -y unixODBC unixODBC-devel
达梦 ODBC 驱动默认位于数据库安装 bin 目录,执行命令校验文件是否存在:
bash
ls -l /home/dmdba/dmdbms/bin/libdodbc.so
文件存在则说明驱动就绪,固定驱动路径:/home/dmdba/dmdbms/bin/libdodbc.so
/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
/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 中驱动名称完全一致,否则会提示驱动找不到。
通过系统自带 isql 工具测试数据源连通性:
isql -v DM8
进入交互界面后,可执行 SQL 验证数据库访问:
– 查询测试数据
SELECT * FROM SYSDBA.T_USER WHERE ROWNUM <= 1;
查询正常返回数据、无报错,即 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’;
故障现象:isql 提示找不到驱动、连接失败、数据源无效
排查方案:
现象:JMeter 启动报错:For input string: “”
原因:连接池整数参数(maxActive、maxWait 等)配置为空字符串
解决:检查 jmx 配置文件、dm_svc.conf,确保所有参数为合法数值。
现象:disql 提示无效服务名、连接超时
原因:dm_svc.conf 路径错误、格式异常、文件权限不足
解决:确认配置文件路径,修正语法,授权 chmod 644 /etc/dm_svc.conf。
现象:Can not create buffer pools, out of memory!
原因:数据库 BUFFER 参数设置过大,超出系统可用内存
解决:调低 dm.ini 中 BUFFER 参数值(如 9000 改为 3000),释放系统内存。
通过本文实战,可完整掌握达梦数据库两大主流连接方案:
JDBC:驱动部署、直连/集群配置、连接池调优、压测验证、故障排查
ODBC:驱动管理器安装、驱动注册、数据源配置、命令行测试、问题排查
适配 Java、跨语言多场景数据库访问,满足测试、生产环境部署需求
文章
阅读量
获赞
