【问题标题】:How to connect Oracle database to JMeter if we have service name instead of SID?如果我们有服务名称而不是 SID,如何将 Oracle 数据库连接到 JMeter?
【发布时间】:2017-10-06 06:03:58
【问题描述】:

我将 Oracle 与 JMeter 一起使用,而不是使用 SID,我们使用服务名称。我收到此错误:

Cannot create PoolableConnectionFactory (Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor)

我的 JMeter 配置:

 jdbc:oracle:thin:@<hostname>:<port>:<serviceName>
 oracle.jdbc.OracleDriver

【问题讨论】:

  • 你可以试试这个 jdbc:oracle:thin:@//host:port/service 并将最大连接数设置为 0
  • 什么都没有发生仍然得到 ORA-00911:无效字符

标签: java oracle jdbc jmeter


【解决方案1】:

您的配置中的数据库 URL 需要是:

jdbc:oracle:thin:@<hostname>:<port>/<serviceName>

最后一个元素前的冒号表示您正在传递 SID。斜杠表示您正在传递服务名称。

从你后来添加的截图和你接下来得到的错误来看,你还需要将隔离级别从DEFAULT更改为TRANSACTION_READ_COMMITED,并且你需要将验证查询从select 1更改为select 1 from dual。确保不要在该查询的末尾添加分号。 (分号是许多客户端的语句分隔符,它不是单个 SQL 语句的一部分,在 JDBC 调用中包含它会导致 ORA-00911 错误。

【讨论】:

  • 我试过 jdbc:oracle:thin:@:/ 和 jdbc:oracle:thin:@//:/ 我得到相同的错误无法创建 PoolableConnectionFactory(READ_COMMITTED 和 SERIALIZABLE 是唯一有效的事务级别)
  • @JhengIbasco - 怎么会出现同样的错误?这似乎是您配置中的其他内容。也许问一个关于该错误的新问题,显示您的完整配置。我不知道它会从哪里获得交易级别,或者它试图使用什么价值。
  • 您是否在验证查询中使用了 select 1 from dual?
  • 这是我的配置:事务隔离 L=DEFAULT,验证查询 = 选择 1,DBURL= jdbc:oracle:thin:@:/,驱动程序 class= oracle。 jdbc.OracleDriver
  • 好的,所以将隔离从DEFAULT更改为READ_COMMITTED?
【解决方案2】:

您应该更改您的 JDBC URL,例如:

jdbc:oracle:thin:@<hostname>:<port>/<serviceName>
                                   ^slash instead of colon should be here

参考资料:

【讨论】:

  • 我试过 jdbc:oracle:thin:@:/ 和 jdbc:oracle:thin:@//:/ 我得到相同的错误无法创建 PoolableConnectionFactory(READ_COMMITTED 和 SERIALIZABLE 是唯一有效的事务级别)
  • JDBC Connection Configuration中的事务隔离更改为TRANSACTION_READ_COMMITTEDTRANSACTION_SERIALIZABLE。还将验证查询更改为select 1 from dual
  • 是的,但错误是 ORA-00911: invalid character im using 3.2 version of jmeter
  • 显示你的 jdbc 连接配置和 jdbc 请求截图
  • 我是新手,当我尝试使用 ctrl+g 时,它只显示了查找栏。我可以知道如何在这里上传照片吗?
【解决方案3】:

当连接到 Oracle 数据库时,数据库服务器会有一个配置文件 (tnsnames.ora),通知服务器关于 NET_SERVICE_NAMES 哪些是有效的数据库连接。

默认情况下,此文件位于 ORACLE_HOME/network/admin 并应包含如下条目:

myDatabaseNetService = (描述= (地址 =(协议 = tcp)(主机 = 本地主机)(端口 = 1521)(队列大小 = 100)) (连接数据 = (SERVICE_NAME = bookstore.company.com) ) )

在连接字符串中使用 myDatabaseNetService 作为 SERVICE_NAME。

【讨论】:

  • 将他的数据库 url 替换为此也应该有效:jdbc:oracle:thin:@(description=(address=(host=localhost)(protocol=tcp)(port={port no})) (connect_data=(service_name = {service_name})))
【解决方案4】:

谢谢你们帮助我。如此赞赏。所以我为解决我的问题所做的只是将我的 JMeter 版本降级到 2.13 并且配置是:

事务隔离:TRANSACTION_READ_COMMITED 验证查询:select 1 from 或 Select 1 数据库 URL:jdbc:oracle:thin:@:/ JDBC驱动类:oracle.jdbc.OracleDriver JDBC Sampler:查询末尾不应有分号 oracle驱动:oracle官网中的ojdbc7 驱动路径:lib/ext

【讨论】:

    猜你喜欢
    • 2011-06-17
    • 2019-08-21
    • 2012-11-21
    • 2013-02-27
    • 2018-11-17
    • 1970-01-01
    相关资源
    最近更新 更多