全部错误复盘,按出现顺序
1. 第一报错:ORA-12514 TNS:listener does not currently know of service
原因 JDBC URL 写了 test.LIANSHI,数据库监听里注册的服务名只是 test,带域名后缀的服务名监听器识别不到。
本质:服务名不匹配 ,不是 jar 包问题。能报 ORA 错误 = ojdbc8 已经加载成功。 ✅ 修复:URL 改为
jdbc:oracle:thin:@//10.1.1.96:1521/test
2. 第二报错:ORA-00923: FROM keyword not found where expected(核心坑)
原因 JDBC 连接池里【Validation Query 校验 SQL】写了 select 1。
- MySQL 支持简写
select 1; - Oracle 没有虚拟表不能单独 select 常量,必须写
SELECT 1 FROM DUAL连接池初始化阶段,会自动执行这条校验 SQL,SQL 语法直接报错,连接池创建直接失败,还没执行你的 INSERT 语句。
关键点:这个报错不是你 Insert 语句的问题 ,是连接池自检 SQL 非法。 ✅ 修复:Validation Query 改成
SELECT 1 FROM DUAL
3. 额外潜在隐患(这次虽然没报错,但以后容易踩坑)
- JMeter JDBC 元件不能带 SQL 末尾分号
;DBeaver 可以写;,但 JDBC 驱动执行时把分号当成额外语句,会报语法异常。 - Query 框多行换行 你截图里 Insert 是多行折行。Oracle JDBC 对换行敏感,复制粘贴容易带入不可见特殊字符,建议压测 SQL 保持单行。
- 连接池配置改动后必须重启 JMeter JMeter 的连接池配置只在启动时加载,改完不重启,旧配置仍然生效。
一句话总结
12514 = 连接串的 service 名称不对 00923 = 连接池校验 SQL 简写,Oracle 缺少 FROM DUAL
区分两个报错阶段:
- Cannot create PoolableConnectionFactory:创建连接池阶段失败,还没跑你的业务 SQL
- JDBC Request 里的响应报错:连接成功后,执行 INSERT 时才报的错
正确的如下:

