以下是Ubuntu下Oracle连接池的配置技巧及关键步骤:
安装Oracle Instant Client
alien工具安装:sudo apt-get install alien
sudo alien -i oracle-instantclient-basic-*.rpm
sudo alien -i oracle-instantclient-devel-*.rpm
/etc/profile):export ORACLE_HOME=/usr/lib/oracle/19.5/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH
source /etc/profile
配置TNS监听
/usr/lib/oracle/19.5/client64/network/admin/tnsnames.ora,添加数据库连接信息:ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db_host)(PORT = 1521))
(CONNECT_DATA = (SERVICE_NAME = orcl)
)
ojdbc8.jar+ucp.jar,支持动态调整连接数、连接健康检查等高级功能。HikariCP依赖,配置简单,适合微服务场景。| 参数 | 推荐值 | 说明 |
|---|---|---|
| 最大连接数 | 数据库max_connections的70%~80% |
避免数据库压力过大,如数据库限制1000,则设为700~800。 |
| 最小空闲连接 | 10~20 | 保持少量活跃连接,减少创建开销。 |
| 连接超时 | 30秒(高并发可设为5~10秒) | 避免请求长时间阻塞。 |
| 空闲超时 | 5~10分钟 | 回收长期未使用的连接,释放资源。 |
| 验证查询 | SELECT 1 FROM DUAL |
定期检测连接有效性,避免失效连接被使用。 |
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
public class OraclePoolConfig {
public static HikariDataSource createPool() {
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:oracle:thin:@localhost:1521:orcl");
config.setUsername("your_user");
config.setPassword("your_password");
config.setMaximumPoolSize(100);
config.setMinimumIdle(20);
config.setConnectionTimeout(30000);
config.setIdleTimeout(600000);
config.setMaxLifetime(1800000); // 不超过数据库wait_timeout(通常8~10小时)
config.setConnectionTestQuery("SELECT 1 FROM DUAL");
return new HikariDataSource(config);
}
}
连接泄漏检测
leakDetectionThreshold(如5000ms),标记长时间未释放的连接并告警。config.setLeakDetectionThreshold(5000);
动态扩缩容
SSL加密配置(可选)
tnsnames.ora中指定SSL参数,并配置证书路径。测试连接
sqlplus或tnsping验证基础连通性:tnsping ORCL
sqlplus user/password@ORCL
监控连接池状态
注意事项:
maxLifetime超过数据库wait_timeout,否则会导致频繁重建连接。参考资料: