Re: error when trying to use TNSNAMES entry in JMeter database connect string

2008-03-17 Thread sebb
On 13/03/2008, Simon Payne <[EMAIL PROTECTED]> wrote:
> Sebb,
>
>  I have worked out why the Protocol violation was happening.  In my
>  JDBCRequest, I used this SQL:
>
> call MY_STORED_PROC(?)

Did you try:

   {call MY_STORED_PROC(?)}

Maybe the SQL92 escape syntax is required here?

>
>  When I changed to this, it worked.
>
> begin MY_STORED_PROC(?); end;
>
>  If you see the docs for the OracleCallableStatement class which is handling
>  the call,
>
>  http://www710.univ-lyon1.fr/~ecoquery/files/oracle-jdbc/javadoc/oracle/jdbc/
>  OracleCallableStatement.html
>
>  The example
>
>  CallableStatement cs3 = conn.prepareCall
>( "begin proc (?,?); end;" ) ; // stored proc
>
>  was the only one I could get to work.
>
>  This is fine for me, but is anyone else going to stumble into this problem?
>  However, it is I assume a problem with the Oracle driver, not JMeter, that
>  causes a particular query string to provoke a protocol violation. At least I
>  am recording the resolution here.
>
>  Thank you for your time answering my queries.
>
>
>  Simon
>
>
>  -Original Message-
>  From: sebb [mailto:[EMAIL PROTECTED]
>  Sent: 22 February 2008 15:08
>  To: JMeter Users List
>  Subject: Re: error when trying to use TNSNAMES entry in JMeter database
>  connect string
>
>
>  I've not seen this error with MySQL or Derby - perhaps it is
>  Oracle-specific.
>
>  On 22/02/2008, Simon Payne <[EMAIL PROTECTED]> wrote:
>  > Sebb,
>  >
>  >  I should have included the error trace in my last email, apologies for
>  that.
>  >  Here it is.
>  >
>  >  2008/02/22 14:59:31 WARN  -
>  jmeter.protocol.jdbc.config.DataSourceElement:
>  >  Could not close connection java.sql.SQLException: Protocol violation
>  >
>  > at
>  >
>  oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
>  > at
>  >
>  oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
>  > at
>  >
>  > oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:207)
>  > at
>  oracle.jdbc.driver.T4C7Ocommoncall.receive(T4C7Ocommoncall.java:149)
>  > at oracle.jdbc.driver.T4CConnection.logoff(T4CConnection.java:464)
>  > at
>  >  oracle.jdbc.driver.PhysicalConnection.close(PhysicalConnection.java:1202)
>  > at
>  >
>  org.apache.avalon.excalibur.datasource.AbstractJdbcConnection.dispose(Abstra
>  >  ctJdbcConnection.java:317)
>  > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>  > at
>  >
>  sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39
>  >  )
>  > at
>  >
>  sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
>  >  .java:25)
>  > at java.lang.reflect.Method.invoke(Method.java:585)
>  > at
>  >
>  org.apache.avalon.excalibur.datasource.AbstractJdbcConnection.invoke(Abstrac
>  >  tJdbcConnection.java:357)
>  > at $Proxy0.dispose(Unknown Source)
>  > at
>  >
>  org.apache.avalon.excalibur.datasource.JdbcConnectionFactory.decommission(Jd
>  >  bcConnectionFactory.java:248)
>  > at
>  >
>  org.apache.avalon.excalibur.pool.ResourceLimitingPool.removePoolable(Resourc
>  >  eLimitingPool.java:697)
>  > at
>  >
>  org.apache.avalon.excalibur.pool.ResourceLimitingPool.permanentlyRemovePoola
>  >  ble(ResourceLimitingPool.java:639)
>  > at
>  >
>  org.apache.avalon.excalibur.pool.ResourceLimitingPool.dispose(ResourceLimiti
>  >  ngPool.java:518)
>  > at
>  >
>  org.apache.avalon.excalibur.datasource.ResourceLimitingJdbcDataSource.dispos
>  >  e(ResourceLimitingJdbcDataSource.java:442)
>  > at
>  >
>  org.apache.jmeter.protocol.jdbc.config.DataSourceElement.testEnded(DataSourc
>  >  eElement.java:75)
>  > at
>  >
>  org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfEnd(Stand
>  >  ardJMeterEngine.java:246)
>  > at
>  >
>  org.apache.jmeter.engine.StandardJMeterEngine$StopTest.run(StandardJMeterEng
>  >  ine.java:321)
>  >
>  > at java.lang.Thread.run(Thread.java:595)
>  >
>  >
>  > Thanks again,
>  >
>  >
>  >  Simon
>  >
>  >
>  >  -Original Message-
>  >  From: Simon Payne [mailto:[EMAIL PROTECTED]
>  >  Sent: 22 February 2008 14:54
>  >  To: jmeter-user@jaka

RE: error when trying to use TNSNAMES entry in JMeter database connect string

2008-03-13 Thread Simon Payne
Sebb,

I have worked out why the Protocol violation was happening.  In my
JDBCRequest, I used this SQL:

call MY_STORED_PROC(?)

When I changed to this, it worked.

begin MY_STORED_PROC(?); end;

If you see the docs for the OracleCallableStatement class which is handling
the call,

http://www710.univ-lyon1.fr/~ecoquery/files/oracle-jdbc/javadoc/oracle/jdbc/
OracleCallableStatement.html

The example

CallableStatement cs3 = conn.prepareCall
   ( "begin proc (?,?); end;" ) ; // stored proc

was the only one I could get to work.

This is fine for me, but is anyone else going to stumble into this problem?
However, it is I assume a problem with the Oracle driver, not JMeter, that
causes a particular query string to provoke a protocol violation. At least I
am recording the resolution here.

Thank you for your time answering my queries.

Simon

-Original Message-
From: sebb [mailto:[EMAIL PROTECTED]
Sent: 22 February 2008 15:08
To: JMeter Users List
Subject: Re: error when trying to use TNSNAMES entry in JMeter database
connect string


I've not seen this error with MySQL or Derby - perhaps it is
Oracle-specific.

On 22/02/2008, Simon Payne <[EMAIL PROTECTED]> wrote:
> Sebb,
>
>  I should have included the error trace in my last email, apologies for
that.
>  Here it is.
>
>  2008/02/22 14:59:31 WARN  -
jmeter.protocol.jdbc.config.DataSourceElement:
>  Could not close connection java.sql.SQLException: Protocol violation
>
> at
>
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
> at
>
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
> at
>
> oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:207)
> at
oracle.jdbc.driver.T4C7Ocommoncall.receive(T4C7Ocommoncall.java:149)
> at oracle.jdbc.driver.T4CConnection.logoff(T4CConnection.java:464)
> at
>  oracle.jdbc.driver.PhysicalConnection.close(PhysicalConnection.java:1202)
> at
>
org.apache.avalon.excalibur.datasource.AbstractJdbcConnection.dispose(Abstra
>  ctJdbcConnection.java:317)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39
>  )
> at
>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
>  .java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at
>
org.apache.avalon.excalibur.datasource.AbstractJdbcConnection.invoke(Abstrac
>  tJdbcConnection.java:357)
> at $Proxy0.dispose(Unknown Source)
> at
>
org.apache.avalon.excalibur.datasource.JdbcConnectionFactory.decommission(Jd
>  bcConnectionFactory.java:248)
> at
>
org.apache.avalon.excalibur.pool.ResourceLimitingPool.removePoolable(Resourc
>  eLimitingPool.java:697)
> at
>
org.apache.avalon.excalibur.pool.ResourceLimitingPool.permanentlyRemovePoola
>  ble(ResourceLimitingPool.java:639)
> at
>
org.apache.avalon.excalibur.pool.ResourceLimitingPool.dispose(ResourceLimiti
>  ngPool.java:518)
> at
>
org.apache.avalon.excalibur.datasource.ResourceLimitingJdbcDataSource.dispos
>  e(ResourceLimitingJdbcDataSource.java:442)
> at
>
org.apache.jmeter.protocol.jdbc.config.DataSourceElement.testEnded(DataSourc
>  eElement.java:75)
> at
>
org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfEnd(Stand
>  ardJMeterEngine.java:246)
> at
>
org.apache.jmeter.engine.StandardJMeterEngine$StopTest.run(StandardJMeterEng
>  ine.java:321)
>
> at java.lang.Thread.run(Thread.java:595)
>
>
> Thanks again,
>
>
>  Simon
>
>
>  -----Original Message-
>  From: Simon Payne [mailto:[EMAIL PROTECTED]
>  Sent: 22 February 2008 14:54
>  To: jmeter-user@jakarta.apache.org
>  Subject: RE: error when trying to use TNSNAMES entry in JMeter database
>  connect string
>
>
>  Hi again Sebb
>
>  Thanks for your suggestions. Here are my replies to your replies.
>
>  Firstly, the reason I can't use the EzConnect string is because I want to
>  use the TNSNAMES entry to specify things like SERVER=SHARED as against
>  SERVER=DEDICATED.
>  Secondly, you are right - I didn't read the Oracle docs closely enough.
>  Setting the Oracle system parameter got rid of the invalid host error.
>
>  I am still getting problems, however, and can I just bend your ear one
more
>  time?  I am now able to _connect_ to the database using TNSNAMES, but
unable
>  to _close_ the connection.  I don't have this problem on every database,
but
>  only on ones remote to my box.  Although it may be an Oracle problem, to
>  debug it, I wrote a simple 

Re: error when trying to use TNSNAMES entry in JMeter database connect string

2008-02-22 Thread sebb
I've not seen this error with MySQL or Derby - perhaps it is Oracle-specific.

On 22/02/2008, Simon Payne <[EMAIL PROTECTED]> wrote:
> Sebb,
>
>  I should have included the error trace in my last email, apologies for that.
>  Here it is.
>
>  2008/02/22 14:59:31 WARN  - jmeter.protocol.jdbc.config.DataSourceElement:
>  Could not close connection java.sql.SQLException: Protocol violation
>
> at
>  oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
> at
>  oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
> at
>
> oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:207)
> at 
> oracle.jdbc.driver.T4C7Ocommoncall.receive(T4C7Ocommoncall.java:149)
> at oracle.jdbc.driver.T4CConnection.logoff(T4CConnection.java:464)
> at
>  oracle.jdbc.driver.PhysicalConnection.close(PhysicalConnection.java:1202)
> at
>  org.apache.avalon.excalibur.datasource.AbstractJdbcConnection.dispose(Abstra
>  ctJdbcConnection.java:317)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
>  sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39
>  )
> at
>  sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
>  .java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at
>  org.apache.avalon.excalibur.datasource.AbstractJdbcConnection.invoke(Abstrac
>  tJdbcConnection.java:357)
> at $Proxy0.dispose(Unknown Source)
> at
>  org.apache.avalon.excalibur.datasource.JdbcConnectionFactory.decommission(Jd
>  bcConnectionFactory.java:248)
> at
>  org.apache.avalon.excalibur.pool.ResourceLimitingPool.removePoolable(Resourc
>  eLimitingPool.java:697)
> at
>  org.apache.avalon.excalibur.pool.ResourceLimitingPool.permanentlyRemovePoola
>  ble(ResourceLimitingPool.java:639)
> at
>  org.apache.avalon.excalibur.pool.ResourceLimitingPool.dispose(ResourceLimiti
>  ngPool.java:518)
> at
>  org.apache.avalon.excalibur.datasource.ResourceLimitingJdbcDataSource.dispos
>  e(ResourceLimitingJdbcDataSource.java:442)
> at
>  org.apache.jmeter.protocol.jdbc.config.DataSourceElement.testEnded(DataSourc
>  eElement.java:75)
> at
>  org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfEnd(Stand
>  ardJMeterEngine.java:246)
> at
>  org.apache.jmeter.engine.StandardJMeterEngine$StopTest.run(StandardJMeterEng
>  ine.java:321)
>
> at java.lang.Thread.run(Thread.java:595)
>
>
> Thanks again,
>
>
>  Simon
>
>
>  -Original Message-
>  From: Simon Payne [mailto:[EMAIL PROTECTED]
>  Sent: 22 February 2008 14:54
>  To: jmeter-user@jakarta.apache.org
>  Subject: RE: error when trying to use TNSNAMES entry in JMeter database
>  connect string
>
>
>  Hi again Sebb
>
>  Thanks for your suggestions. Here are my replies to your replies.
>
>  Firstly, the reason I can't use the EzConnect string is because I want to
>  use the TNSNAMES entry to specify things like SERVER=SHARED as against
>  SERVER=DEDICATED.
>  Secondly, you are right - I didn't read the Oracle docs closely enough.
>  Setting the Oracle system parameter got rid of the invalid host error.
>
>  I am still getting problems, however, and can I just bend your ear one more
>  time?  I am now able to _connect_ to the database using TNSNAMES, but unable
>  to _close_ the connection.  I don't have this problem on every database, but
>  only on ones remote to my box.  Although it may be an Oracle problem, to
>  debug it, I wrote a simple JDBC client to confirm that the problem also
>  happens there.  But it doesn't.
>
>  While JMeter does no parsing of the connect string, nevertheless, probably
>  in the Excalibur code, it is doing something on connection closure that is
>  unhelpful.    Is there anything more you can advise me in respect of this?
>
>  Is anyone else using JMeter for database testing, and has seen problems like
>  this?
>
>  Regards
>
>  Simon
>
>  -Original Message-
>  From: sebb
>  Sent: 20 February 2008 13:33
>  To: JMeter Users List
>  Subject: Re: error when trying to use TNSNAMES entry in JMeter database
>  connect string
>
>
>  On 20/02/2008, Simon Payne <[EMAIL PROTECTED]> wrote:
>  > Hi,
>  >
>  >  I am using JMeter v. 2.3 to run some load tests on an Oracle 10g2
>  database.
>  >
>  >  However, JMeter is unable to connect using a TNSNAMES.ORA entry. JMeter
>  >  _can_ connect with this EZConnect string:
>  >
>  > jdbc:

Re: error when trying to use TNSNAMES entry in JMeter database connect string

2008-02-22 Thread sebb
On 22/02/2008, Simon Payne <[EMAIL PROTECTED]> wrote:
> Hi again Sebb
>
>  Thanks for your suggestions. Here are my replies to your replies.
>
>  Firstly, the reason I can't use the EzConnect string is because I want to
>  use the TNSNAMES entry to specify things like SERVER=SHARED as against
>  SERVER=DEDICATED.

OK

>  Secondly, you are right - I didn't read the Oracle docs closely enough.
>  Setting the Oracle system parameter got rid of the invalid host error.

Useful to know.

>  I am still getting problems, however, and can I just bend your ear one more
>  time?  I am now able to _connect_ to the database using TNSNAMES, but unable
>  to _close_ the connection.  I don't have this problem on every database, but
>  only on ones remote to my box.  Although it may be an Oracle problem, to
>  debug it, I wrote a simple JDBC client to confirm that the problem also
>  happens there.  But it doesn't.
>
>  While JMeter does no parsing of the connect string, nevertheless, probably
>  in the Excalibur code, it is doing something on connection closure that is
>  unhelpful.Is there anything more you can advise me in respect of this?

Try using a pool connection count of 0 - this will set up a single
connection per-thread rather than a shared pool.

>  Is anyone else using JMeter for database testing, and has seen problems like
>  this?
>
>  Regards
>
>
>  Simon
>
>
>  -Original Message-----
>  From: sebb
>  Sent: 20 February 2008 13:33
>  To: JMeter Users List
>  Subject: Re: error when trying to use TNSNAMES entry in JMeter database
>  connect string
>
>
>  On 20/02/2008, Simon Payne <[EMAIL PROTECTED]> wrote:
>  > Hi,
>  >
>  >  I am using JMeter v. 2.3 to run some load tests on an Oracle 10g2
>  database.
>  >
>  >  However, JMeter is unable to connect using a TNSNAMES.ORA entry. JMeter
>  >  _can_ connect with this EZConnect string:
>  >
>  > jdbc:oracle:thin:@localhost/ORCL
>  >
>
>  So why not use that?
>
>  >  but not with this one:
>  >
>  > jdbc:oracle:thin:@ORCL
>  >
>
>  Did you set the system property:
>
>  oracle.net.tns_admin
>
>  as per the Oracle page?
>
>  >  NB the relevant TNSNAMES entry for this is pretty standard:
>  >
>  >  ORCL =
>  >   (DESCRIPTION =
>  > (ADDRESS_LIST =
>  >   (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
>  > )
>  > (CONNECT_DATA =
>  >   (SERVER = SHARED)
>  >   (SID = ORCL)
>  > )
>  >   )
>  >
>  >  The error I get with the above example, from jmeter.log, is:
>  >
>  >  2008/02/18 15:47:55 WARN  -
>  jmeter.protocol.jdbc.config.DataSourceElement:
>  >  Could not return Connection java.sql.SQLException: Io exception: Unknown
>  >  host specified
>  > at
>  >
>  oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
>  > at
>  >
>  oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
>  > at
>  >
>  oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:254)
>  > at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:386)
>  > at
>  >  oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:438)
>  > at oracle.jdbc.driver.T4CConnection.(T4CConnection.java:164)
>  > at
>  >
>  oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:
>  >  34)
>  > at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:752)
>  > at java.sql.DriverManager.getConnection(DriverManager.java:525)
>  > at java.sql.DriverManager.getConnection(DriverManager.java:171)
>  > at
>  >
>  org.apache.avalon.excalibur.datasource.JdbcConnectionFactory.newInstance(Jdb
>  >  cConnectionFactory.java:185)
>  > at
>  >
>  org.apache.avalon.excalibur.pool.ResourceLimitingPool.newPoolable(ResourceLi
>  >  mitingPool.java:672)
>  > at
>  >
>  org.apache.avalon.excalibur.pool.ValidatedResourceLimitingPool.newPoolable(V
>  >  alidatedResourceLimitingPool.java:178)
>  > at
>  >
>  org.apache.avalon.excalibur.datasource.ResourceLimitingJdbcConnectionPool.ne
>  >  wPoolable(ResourceLimitingJdbcConnectionPool.java:123)
>  > at
>  >
>  org.apache.avalon.excalibur.pool.ResourceLimitingPool.get(ResourceLimitingPo
>  >  ol.java:402)
>  > at
>  >
>  org.apache.avalon.excalibur.pool.ValidatedResourceLimitingPool.get(Validated
>  > 

RE: error when trying to use TNSNAMES entry in JMeter database connect string

2008-02-22 Thread Simon Payne
Sebb,

I should have included the error trace in my last email, apologies for that.
Here it is.

2008/02/22 14:59:31 WARN  - jmeter.protocol.jdbc.config.DataSourceElement:
Could not close connection java.sql.SQLException: Protocol violation
at
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
at
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
at
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:207)
at oracle.jdbc.driver.T4C7Ocommoncall.receive(T4C7Ocommoncall.java:149)
at oracle.jdbc.driver.T4CConnection.logoff(T4CConnection.java:464)
at
oracle.jdbc.driver.PhysicalConnection.close(PhysicalConnection.java:1202)
at
org.apache.avalon.excalibur.datasource.AbstractJdbcConnection.dispose(Abstra
ctJdbcConnection.java:317)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39
)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.apache.avalon.excalibur.datasource.AbstractJdbcConnection.invoke(Abstrac
tJdbcConnection.java:357)
at $Proxy0.dispose(Unknown Source)
at
org.apache.avalon.excalibur.datasource.JdbcConnectionFactory.decommission(Jd
bcConnectionFactory.java:248)
at
org.apache.avalon.excalibur.pool.ResourceLimitingPool.removePoolable(Resourc
eLimitingPool.java:697)
at
org.apache.avalon.excalibur.pool.ResourceLimitingPool.permanentlyRemovePoola
ble(ResourceLimitingPool.java:639)
at
org.apache.avalon.excalibur.pool.ResourceLimitingPool.dispose(ResourceLimiti
ngPool.java:518)
at
org.apache.avalon.excalibur.datasource.ResourceLimitingJdbcDataSource.dispos
e(ResourceLimitingJdbcDataSource.java:442)
at
org.apache.jmeter.protocol.jdbc.config.DataSourceElement.testEnded(DataSourc
eElement.java:75)
at
org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfEnd(Stand
ardJMeterEngine.java:246)
at
org.apache.jmeter.engine.StandardJMeterEngine$StopTest.run(StandardJMeterEng
ine.java:321)
at java.lang.Thread.run(Thread.java:595)

Thanks again,

Simon

-Original Message-
From: Simon Payne [mailto:[EMAIL PROTECTED]
Sent: 22 February 2008 14:54
To: jmeter-user@jakarta.apache.org
Subject: RE: error when trying to use TNSNAMES entry in JMeter database
connect string


Hi again Sebb

Thanks for your suggestions. Here are my replies to your replies.

Firstly, the reason I can't use the EzConnect string is because I want to
use the TNSNAMES entry to specify things like SERVER=SHARED as against
SERVER=DEDICATED.
Secondly, you are right - I didn't read the Oracle docs closely enough.
Setting the Oracle system parameter got rid of the invalid host error.

I am still getting problems, however, and can I just bend your ear one more
time?  I am now able to _connect_ to the database using TNSNAMES, but unable
to _close_ the connection.  I don't have this problem on every database, but
only on ones remote to my box.  Although it may be an Oracle problem, to
debug it, I wrote a simple JDBC client to confirm that the problem also
happens there.  But it doesn't.

While JMeter does no parsing of the connect string, nevertheless, probably
in the Excalibur code, it is doing something on connection closure that is
unhelpful.Is there anything more you can advise me in respect of this?

Is anyone else using JMeter for database testing, and has seen problems like
this?

Regards

Simon

-Original Message-
From: sebb
Sent: 20 February 2008 13:33
To: JMeter Users List
Subject: Re: error when trying to use TNSNAMES entry in JMeter database
connect string


On 20/02/2008, Simon Payne <[EMAIL PROTECTED]> wrote:
> Hi,
>
>  I am using JMeter v. 2.3 to run some load tests on an Oracle 10g2
database.
>
>  However, JMeter is unable to connect using a TNSNAMES.ORA entry. JMeter
>  _can_ connect with this EZConnect string:
>
> jdbc:oracle:thin:@localhost/ORCL
>

So why not use that?

>  but not with this one:
>
> jdbc:oracle:thin:@ORCL
>

Did you set the system property:

oracle.net.tns_admin

as per the Oracle page?

>  NB the relevant TNSNAMES entry for this is pretty standard:
>
>  ORCL =
>   (DESCRIPTION =
> (ADDRESS_LIST =
>   (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
> )
> (CONNECT_DATA =
>   (SERVER = SHARED)
>   (SID = ORCL)
> )
>   )
>
>  The error I get with the above example, from jmeter.log, is:
>
>  2008/02/18 15:47:55 WARN  -
jmeter.protocol.jdbc.config.DataSourceElement:
>  Could not return Connection java.sql.SQLException: Io exception: Unknown
>  host specified
> at
>
oracle.jdbc.dri

RE: error when trying to use TNSNAMES entry in JMeter database connect string

2008-02-22 Thread Simon Payne
Hi again Sebb

Thanks for your suggestions. Here are my replies to your replies.

Firstly, the reason I can't use the EzConnect string is because I want to
use the TNSNAMES entry to specify things like SERVER=SHARED as against
SERVER=DEDICATED.
Secondly, you are right - I didn't read the Oracle docs closely enough.
Setting the Oracle system parameter got rid of the invalid host error.

I am still getting problems, however, and can I just bend your ear one more
time?  I am now able to _connect_ to the database using TNSNAMES, but unable
to _close_ the connection.  I don't have this problem on every database, but
only on ones remote to my box.  Although it may be an Oracle problem, to
debug it, I wrote a simple JDBC client to confirm that the problem also
happens there.  But it doesn't.

While JMeter does no parsing of the connect string, nevertheless, probably
in the Excalibur code, it is doing something on connection closure that is
unhelpful.Is there anything more you can advise me in respect of this?

Is anyone else using JMeter for database testing, and has seen problems like
this?

Regards

Simon

-Original Message-
From: sebb
Sent: 20 February 2008 13:33
To: JMeter Users List
Subject: Re: error when trying to use TNSNAMES entry in JMeter database
connect string


On 20/02/2008, Simon Payne <[EMAIL PROTECTED]> wrote:
> Hi,
>
>  I am using JMeter v. 2.3 to run some load tests on an Oracle 10g2
database.
>
>  However, JMeter is unable to connect using a TNSNAMES.ORA entry. JMeter
>  _can_ connect with this EZConnect string:
>
> jdbc:oracle:thin:@localhost/ORCL
>

So why not use that?

>  but not with this one:
>
> jdbc:oracle:thin:@ORCL
>

Did you set the system property:

oracle.net.tns_admin

as per the Oracle page?

>  NB the relevant TNSNAMES entry for this is pretty standard:
>
>  ORCL =
>   (DESCRIPTION =
> (ADDRESS_LIST =
>   (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
> )
> (CONNECT_DATA =
>   (SERVER = SHARED)
>   (SID = ORCL)
> )
>   )
>
>  The error I get with the above example, from jmeter.log, is:
>
>  2008/02/18 15:47:55 WARN  -
jmeter.protocol.jdbc.config.DataSourceElement:
>  Could not return Connection java.sql.SQLException: Io exception: Unknown
>  host specified
> at
>
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
> at
>
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
> at
>
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:254)
> at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:386)
> at
>  oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:438)
> at oracle.jdbc.driver.T4CConnection.(T4CConnection.java:164)
> at
>
oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:
>  34)
> at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:752)
> at java.sql.DriverManager.getConnection(DriverManager.java:525)
> at java.sql.DriverManager.getConnection(DriverManager.java:171)
> at
>
org.apache.avalon.excalibur.datasource.JdbcConnectionFactory.newInstance(Jdb
>  cConnectionFactory.java:185)
> at
>
org.apache.avalon.excalibur.pool.ResourceLimitingPool.newPoolable(ResourceLi
>  mitingPool.java:672)
> at
>
org.apache.avalon.excalibur.pool.ValidatedResourceLimitingPool.newPoolable(V
>  alidatedResourceLimitingPool.java:178)
> at
>
org.apache.avalon.excalibur.datasource.ResourceLimitingJdbcConnectionPool.ne
>  wPoolable(ResourceLimitingJdbcConnectionPool.java:123)
> at
>
org.apache.avalon.excalibur.pool.ResourceLimitingPool.get(ResourceLimitingPo
>  ol.java:402)
> at
>
org.apache.avalon.excalibur.pool.ValidatedResourceLimitingPool.get(Validated
>  ResourceLimitingPool.java:130)
> at
>
org.apache.avalon.excalibur.datasource.ResourceLimitingJdbcDataSource.getCon
>  nection(ResourceLimitingJdbcDataSource.java:222)
> at
>
org.apache.jmeter.protocol.jdbc.config.DataSourceElement$DataSourceComponent
>  Impl.getConnection(DataSourceElement.java:281)
> at
>
org.apache.jmeter.protocol.jdbc.config.DataSourceElement.getConnection(DataS
>  ourceElement.java:151)
> at
>
org.apache.jmeter.protocol.jdbc.sampler.JDBCSampler.sample(JDBCSampler.java:
>  153)
> at
org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:300)
> at java.lang.Thread.run(Thread.java:595)
>
>  It seems to me that JMeter is parsing the Database URL incorrectly,
assuming
>  that "ORCL" is the first part of a machine name. Since there's no host
>  called ORCL on the domain, it throws

Re: error when trying to use TNSNAMES entry in JMeter database connect string

2008-02-20 Thread sebb
On 20/02/2008, Simon Payne <[EMAIL PROTECTED]> wrote:
> Hi,
>
>  I am using JMeter v. 2.3 to run some load tests on an Oracle 10g2 database.
>
>  However, JMeter is unable to connect using a TNSNAMES.ORA entry. JMeter
>  _can_ connect with this EZConnect string:
>
> jdbc:oracle:thin:@localhost/ORCL
>

So why not use that?

>  but not with this one:
>
> jdbc:oracle:thin:@ORCL
>

Did you set the system property:

oracle.net.tns_admin

as per the Oracle page?

>  NB the relevant TNSNAMES entry for this is pretty standard:
>
>  ORCL =
>   (DESCRIPTION =
> (ADDRESS_LIST =
>   (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
> )
> (CONNECT_DATA =
>   (SERVER = SHARED)
>   (SID = ORCL)
> )
>   )
>
>  The error I get with the above example, from jmeter.log, is:
>
>  2008/02/18 15:47:55 WARN  - jmeter.protocol.jdbc.config.DataSourceElement:
>  Could not return Connection java.sql.SQLException: Io exception: Unknown
>  host specified
> at
>  oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
> at
>  oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
> at
>  oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:254)
> at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:386)
> at
>  oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:438)
> at oracle.jdbc.driver.T4CConnection.(T4CConnection.java:164)
> at
>  oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:
>  34)
> at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:752)
> at java.sql.DriverManager.getConnection(DriverManager.java:525)
> at java.sql.DriverManager.getConnection(DriverManager.java:171)
> at
>  org.apache.avalon.excalibur.datasource.JdbcConnectionFactory.newInstance(Jdb
>  cConnectionFactory.java:185)
> at
>  org.apache.avalon.excalibur.pool.ResourceLimitingPool.newPoolable(ResourceLi
>  mitingPool.java:672)
> at
>  org.apache.avalon.excalibur.pool.ValidatedResourceLimitingPool.newPoolable(V
>  alidatedResourceLimitingPool.java:178)
> at
>  org.apache.avalon.excalibur.datasource.ResourceLimitingJdbcConnectionPool.ne
>  wPoolable(ResourceLimitingJdbcConnectionPool.java:123)
> at
>  org.apache.avalon.excalibur.pool.ResourceLimitingPool.get(ResourceLimitingPo
>  ol.java:402)
> at
>  org.apache.avalon.excalibur.pool.ValidatedResourceLimitingPool.get(Validated
>  ResourceLimitingPool.java:130)
> at
>  org.apache.avalon.excalibur.datasource.ResourceLimitingJdbcDataSource.getCon
>  nection(ResourceLimitingJdbcDataSource.java:222)
> at
>  org.apache.jmeter.protocol.jdbc.config.DataSourceElement$DataSourceComponent
>  Impl.getConnection(DataSourceElement.java:281)
> at
>  org.apache.jmeter.protocol.jdbc.config.DataSourceElement.getConnection(DataS
>  ourceElement.java:151)
> at
>  org.apache.jmeter.protocol.jdbc.sampler.JDBCSampler.sample(JDBCSampler.java:
>  153)
> at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:300)
> at java.lang.Thread.run(Thread.java:595)
>
>  It seems to me that JMeter is parsing the Database URL incorrectly, assuming
>  that "ORCL" is the first part of a machine name. Since there's no host
>  called ORCL on the domain, it throws an error.  How can I configure JMeter
>  to accept this for what it is, i.e. a TNSNAMES entry, not part of a full
>  connect string?

JMeter does not parse the connect string. I don't know whether Excalibur does.

>  The Oracle docs state that I should be able to use a TNSNAMES entry with the
>  Type 4 driver from 10.2.0.1.0 upwards. See for this:
>
>  http://download.oracle.com/docs/cd/B19306_01/java.102/b14355/urls.htm#BEIJFH
>  HB
>
>  for supported database specifiers.
>
>  Here is my test configuration:
>
>  Test Plan
> -> Thread Group
> -> Counter
> -> JDBC Connection Configuration
> -> User Parameters
> -> JDBC Request
> -> Response Assertion
> -> View Results in Table
>
>  JDBC Connection Config is:
> Database URL: jdbc:oracle:thin:@ORCL
> JDBC driver class: oracle.jdbc.driver.OracleDriver
> (username and password withheld, but it's a valid schema)
>
>
>  Environment:
> I am running JMeter on Windows XP v. 2002 SP2, using a Sun JVM as 
> follows:
> Java(TM) 2 Runtime Environment, Standard Edition (build 
> 1.5.0_06-b05), Java
>  HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode)
> My Oracle driver is the Type 4 one, Oracle JDBC Driver version -
>  "10.2.0.3.0",
> (I have also found the same issue with the 10.2.0.1.0 version).
> Oracle database is v. 10.2.0.1.0.
>
>  Thanks for your help.
>
>  Regards,
>
>  Simon Payne
>
>
>  -