使用两个主机和服务名称将 Jmeter 连接到 Oracle 数据库
Connecting Jmeter to an Oracle database with two hosts and service name
我正在尝试将 Jmeter 连接到具有两个主机的地理冗余数据库,但我正在努力寻找正确的数据库 Url 格式。
这是我的连接字符串的样子:
jdbc:oracle:thin:@(DESCRIPTION=(ENABLE=BROKEN)(FAILOVER=on)(CONNECT_TIMEOUT=5sec)(TRANSPORT_CONNECT_TIMEOUT=3sec)(RETRY_COUNT=3)(LOAD_BALANCE=on)(ADDRESS_LIST=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=TCP)(HOST=HostName)(PORT=port)))(ADDRESS_LIST=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=TCP)(HOST=HostName2)(PORT=port)))(CONNECT_DATA=(SERVICE_NAME=ServiceName)))
数据库连接配置如下:
JDBC Driver Class: oracle.jdbc.OracleDriver Username: username
Password: password
对于数据库 URL 我尝试了不同的格式,但我不断收到错误消息:
Cannot load JDBC driver class 'oracle.jdbc.OracleDriver'
请注意,根据 Jmeter 文档,ojdbc.jar 文件位于 /lib 文件夹中。此外,两台主机的端口相同。
欢迎任何建议。 :)
我认为您无法使用 JMeter 的 JDBC Connection Configuration as it doesn't allow full flexibility therefore you will not be able to properly instantiate the PoolDataSourceFactory
建立与 Oracle RAC 的连接
所以我建议切换到 JSR223 Test Elements and Groovy language,这样您就可以完全自由地设置连接、执行查询、访问结果等。相关代码如下:
def prop = new Properties()
prop.put('oracle.jdbc.thinForceDNSLoadBalancing','true')
PoolDataSource pds = PoolDataSourceFactory.getPoolDataSource()
pds.setConnectionProperties(prop)
pds.setConnectionFactoryClassName('oracle.jdbc.pool.OracleDataSource'); pds.setUser('johndoe')
pds.setPassword('secret')
String dbURL =
'jdbc:oracle:thin:@(DESCRIPTION=(ENABLE=BROKEN)(FAILOVER=on)(CONNECT_TIMEOUT=5sec)' +
'(TRANSPORT_CONNECT_TIMEOUT=3sec)(RETRY_COUNT=3)(LOAD_BALANCE=on)(ADDRESS_LIST=(LOAD_BALANCE=on)' +
'(ADDRESS=(PROTOCOL=TCP)(HOST=HostName)(PORT=port)))(ADDRESS_LIST=(LOAD_BALANCE=on)' +
'(ADDRESS=(PROTOCOL=TCP)(HOST=HostName2)(PORT=port)))(CONNECT_DATA=(SERVICE_NAME=ServiceName)))'
pds.setURL(dbURL)
它似乎正在使用仅包含主机 1 的连接字符串。
数据库 URL 的格式为:
jdbc:oracle:thin:@<hostname>:<port>/<serviceName>
此外,我收到错误是因为 .jar 文件的路径没有添加到类路径(单击测试计划,在底部 select 浏览旁边的添加目录或 jar 到类路径和 select 你的 odbc jar).
另一个错误是验证查询,它应该是 "select 1 from dual" 并且查询末尾不应包含任何分号。
希望对遇到同样问题的人有所帮助。
我正在尝试将 Jmeter 连接到具有两个主机的地理冗余数据库,但我正在努力寻找正确的数据库 Url 格式。
这是我的连接字符串的样子:
jdbc:oracle:thin:@(DESCRIPTION=(ENABLE=BROKEN)(FAILOVER=on)(CONNECT_TIMEOUT=5sec)(TRANSPORT_CONNECT_TIMEOUT=3sec)(RETRY_COUNT=3)(LOAD_BALANCE=on)(ADDRESS_LIST=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=TCP)(HOST=HostName)(PORT=port)))(ADDRESS_LIST=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=TCP)(HOST=HostName2)(PORT=port)))(CONNECT_DATA=(SERVICE_NAME=ServiceName)))
数据库连接配置如下:
JDBC Driver Class: oracle.jdbc.OracleDriver Username: username Password: password
对于数据库 URL 我尝试了不同的格式,但我不断收到错误消息:
Cannot load JDBC driver class 'oracle.jdbc.OracleDriver'
请注意,根据 Jmeter 文档,ojdbc.jar 文件位于 /lib 文件夹中。此外,两台主机的端口相同。
欢迎任何建议。 :)
我认为您无法使用 JMeter 的 JDBC Connection Configuration as it doesn't allow full flexibility therefore you will not be able to properly instantiate the PoolDataSourceFactory
建立与 Oracle RAC 的连接所以我建议切换到 JSR223 Test Elements and Groovy language,这样您就可以完全自由地设置连接、执行查询、访问结果等。相关代码如下:
def prop = new Properties()
prop.put('oracle.jdbc.thinForceDNSLoadBalancing','true')
PoolDataSource pds = PoolDataSourceFactory.getPoolDataSource()
pds.setConnectionProperties(prop)
pds.setConnectionFactoryClassName('oracle.jdbc.pool.OracleDataSource'); pds.setUser('johndoe')
pds.setPassword('secret')
String dbURL =
'jdbc:oracle:thin:@(DESCRIPTION=(ENABLE=BROKEN)(FAILOVER=on)(CONNECT_TIMEOUT=5sec)' +
'(TRANSPORT_CONNECT_TIMEOUT=3sec)(RETRY_COUNT=3)(LOAD_BALANCE=on)(ADDRESS_LIST=(LOAD_BALANCE=on)' +
'(ADDRESS=(PROTOCOL=TCP)(HOST=HostName)(PORT=port)))(ADDRESS_LIST=(LOAD_BALANCE=on)' +
'(ADDRESS=(PROTOCOL=TCP)(HOST=HostName2)(PORT=port)))(CONNECT_DATA=(SERVICE_NAME=ServiceName)))'
pds.setURL(dbURL)
它似乎正在使用仅包含主机 1 的连接字符串。
数据库 URL 的格式为:
jdbc:oracle:thin:@<hostname>:<port>/<serviceName>
此外,我收到错误是因为 .jar 文件的路径没有添加到类路径(单击测试计划,在底部 select 浏览旁边的添加目录或 jar 到类路径和 select 你的 odbc jar).
另一个错误是验证查询,它应该是 "select 1 from dual" 并且查询末尾不应包含任何分号。
希望对遇到同样问题的人有所帮助。