database - 将 Jmeter 连接到具有两个主机和服务名称的 Oracle 数据库
问题描述
我正在尝试将 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=服务名)))
数据库连接配置如下:
JDBC驱动类:oracle.jdbc.OracleDriver 用户名:username 密码:password
对于数据库 URL,我尝试了不同的格式,但我不断收到错误消息:
无法加载 JDBC 驱动程序类“oracle.jdbc.OracleDriver”
请注意,根据 Jmeter 文档,ojdbc.jar 文件位于 /lib 文件夹中。此外,两台主机的端口相同。
欢迎任何建议。:)
解决方案
我认为您无法使用 JMeter 的JDBC 连接配置建立与 Oracle RAC 的连接,因为它不允许完全的灵活性,因此您将无法正确实例化PoolDataSourceFactory
因此,我建议切换到JSR223 测试元素和Groovy 语言,在这些语言中,您可以完全自由地设置连接、执行查询、访问结果等。相关代码类似于:
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)
更多信息:为 JDBC 客户端配置快速连接故障转移
推荐阅读
- php - Mac + Composer + PHP 版本迷失方向
- xml - macOS 上 Outlook Web 加载项 manifest.xml 的问题
- javascript - JS:如果所有嵌套值都等于null,则删除对象键
- vb.net - 如何更改此代码以查找所有匹配项
- java - twitter4J 使用搜索 API 时无法获取原始 json
- google-apps-script - Google Apps 脚本:Sheets 表单数据操作,如果某些单元格为空白则删除行,同时保留某些列
- python - SQLAlchemy Oracle INSERT RETURNING INTO 错误
- sas - Proc SQL SAS Export to CSV 引发访问错误
- python - 仅打印列表中包含另一个列表中字符的单词?
- javascript - 在赛普拉斯如何根据名称选择输入元素?