一、场景
本地用navicat连接oracle数据库没问题,但用jmeter连接时报错,提示
Cannot create PoolableConnectionFactory (ORA-00604: error occurred at recursive SQL level 1
ORA-12705: Cannot access NLS data files or invalid environment specified
如下图
二、原因
Oracle数据库使用的中文环境,jmeter使用的语言是英文,语言环境不一致导致的问题。
网上看了很多解决方法,大抵是那些修改注册表里 NLS_LANG的值的方法,对我没用,因为我发现我的设置其实是没错的。
三、解决办法
- 步骤一 ,查看oracle的语言
可以输入SELECT USERENV ('language') FROM DUAL;
命令查看oracle的字符集,如下图,可看到是简体中文,那么,我的jmeter也得设置成中文环境 - 步骤二 ,打开jmeter安装路径的bin目录,找到jmeter.bat,打开,查找以下内容
if exist "%JMETER_HOME%\bin\setenv.bat" call "%JMETER_HOME%\bin\setenv.bat"
if not defined JMETER_LANGUAGE (
rem Set language
rem Default to en_EN
set JMETER_LANGUAGE=-Duser.language="en" -Duser.region="EN"
)
也就是下图那一行需要替换
- 步骤三 ,替换
if not defined JMETER_LANGUAGE (
rem Set language
rem Default to en_EN
set JMETER_LANGUAGE=-Duser.language="zh" -Duser.region="CN"
)
如下图,注意,注释掉的那一行(前面带::行的原本设置的那一行)不可作为最后一行,否则我的jmter.bat文件会启动不了,直接闪退了。或者你们就直接删掉那行注释,我只是以防以后要用可以直接点。
4. 步骤四 ,保存jmeter.bat,关闭jmeter,重新打开,就ok了。