JDBC driver performance  hmmm...

Hi!
We encountered a very strange Oracle JDBC driver behaviour.
I issue a select query that is rather heavy, but our DBA tuned it and in my SQL Navigator(that uses OCI I guess) it runs for about 1(one) second.
But when I try to execute that query from Java it takes 7(seven) seconds for running.
I guess Oracle JDBC driver isn't intended to be so much slower than pure OCI.
I get the same result for thin and thick drivers.
The most strange thing is that the execution hangs at
preparedStatement.executeQuery()
waits for 7 seconds and then go on.
ResultSet is iterated very quickly, so the prefetch count is not the matter.
The query returns 20 rows. When I try another query that returns 20 rows it's fast.
We use Oracle 8.1.7 Enterprise Edition
Please help

Frequently, tools like SQL Navigator will start displaying the first few rows very quickly, while your code will wait for the complete resultset to be completed. Make sure that if you're comparing times between an interactive application like TOAD or SQL Navigator and a JDBC app that you're comparing the time taken to retrieve the last row, rather than the first row.
Justin
Distributed Database Consulting, Inc.
www.ddbcinc.com/askDDBC

Similar Messages

  • Modifiy and maximize performance of Oracle JDBC driver

    Hello all,
    due to some boring errors I'm trying to modify and maximize my JDBC driver for oracle connection... in particular I've two questions:
    1. to substitute oracle driver with a newer version you have simply to upgrade the JDBC driver in $ODI_HOME/drivers/ORACLE or you have to add/modify the file named DriverRefV3.xml in sunopsis.zip. In particular I've checked DriverRefV3.xml but there's not reference to the file used for oracle connection so I do not know if ODI is using the ojdbc5.jar updated present in ODI_HOME/drivers/ORACLE
    2. Oracle JDBC driver supports some properties as inactivity-timeout. Usually these are related to connection pool opened to the database. I want to change these properties...it's possible?
    Thanks
    Stefano

    Hi Stefano ,
    If you have only 1 Oracle JDBC driver ie. ojdbc5.jar in $ODI_HOME/drivers the ODI have to use that driver only (provided you are using correct JDK for that driver )
    DriverRefV3.xml is for listing down the driver in the JDBC connection URL
    Unless and until you have the driver in $ODI_HOME/drivers , DriverRefV3.xml will not help you.
    Have no idea about timeout setting in JDBC .
    If you find answer then it will be very helpful if you can share the same in this forum .
    Thanks,
    Sutirtha

  • MSSQL JDBC driver missing for installation of NW '04 SR1

    Hi all,
    during the installation of NW '04 SR1/EP6 on a system running MSSQL Server 2000 SP4 SAPinst crashes with the following error:
    ERROR 2007-03-06 22:33:34
    MDB-05800  <html>Cannot find jdbc driver for MS SQL Server</html>
    I searched this forum, the notes and asked Dr. Google but to no avail. Can anybody give me a hint what's the problem, please?
    Best regards,
    Bernd

    Thanks a lot for your help Dan! Your suggestion has shown me the right direction. As I wrote the directory you mentioned was indeed missing. I copied it from another installation and it worked.
    At least it seemed to work, but I've got another problem concerning the database connection during the installation. While performing the step "Load Java Database content" SAPinst crashes again with the following output:
    com.sap.inst.jload.Jload main
    SEVERE: couldn't connect to DB
    com.sap.sql.log.OpenSQLException: Could not load class com.ddtek.jdbc.sqlserver.SQLServerDriver.
    The strange thing is that I found two different SQL driver on the machine with the working installation! One was located in the installation media directory, the files WebAS is working with are obviously another version, because they have significantly different files sizes!
    Does someone have a hint which versions of SQL Server and driver files do work together?

  • Problem with Java 5 and Oracle 10g JDBC driver

    Hi All,
    Currently we upgrade our web application to Java 5 and Oracle 10.2 JDBC driver. And we encountered a bug, when the user entered the information through UI and data didn't store into database (Oracle 9i). The problem is that this bug is not happend so often maybe once a day and this did not happen before we upgraded to Java 5 and Oracle 10.2 JDBC driver. Does anyone encounter the same problem ? Is this Java 5 problem or Oracle JDBC driver problem ?
    Thanks,

    sounds like a database problem...
    Are you using a driver version that's supported for your database engine?
    What else did you change? We once ran into a major bug in our application that had for 5 years been masked by performance problems in our hardware and infrastructure.
    Once those were resolved the bug showed itself and caused tens of thousands of records to be erroneously inserted into our database every day.
    It's certainly NOT a problem with your JVM (if it's a decent one, like the Sun implementation).
    So it's either your database, your driver, your network (dropping packets???), or your application.
    The upgrade may just have exposed something that was already there.

  • Multiple versions of the same JDBC driver - OK ?

    Hello
    We are using SJSAS 8.1 on our production server, it makes access to an Oracle database for user authentication and thus we have a copy of the Oracle thin driver ojdbc14.jar located in the directory.
    <sjsas_install>/lib
    Each of our web applications also access an Oracle database and thus the build of each web application includes the same oracle jar file in the directory
    domains/domain1/applications/j2ee-modules/<name_of_web_app>/WEB-INF/lib/
    This is all good and it works OK. In a perfect world where CLOBs had not been invented that would be the end of the story.
    However in order to get around the nightmare of JDBC, Oracle and CLOBs I am contemplating using a different version of the JDBC driver for one web app only.
    If I were to build one of the web apps to include a different revision of the Oracle JDBC driver, what are the chances of that web application sticking to its intended version and other applications sticking to theirs ?
    We currently use Oracle's JDBC driver version 9.2.0.8 I am contemplating using 10.2.0.3 but I do not want to mess with the version used by other web apps.
    Any help you can give me would be very much appreciated.
    Thank you

    Hi Kim,
    May be you can try this and see if this works for you. I am not 100% sure if it will work for you, but worth a try I guess. Create a Test WebDynpro project and try the following steps on this project. If they work  out correctly and serve the purpose for you only then try them on your actual Web Dynpro project.
    1. Create a test Web Dynpro project  say "TestWDProject" with Component say "Comp1" and the default views and windows etc.
    Also create some working application our of this component and Windows using the Context.
    2. Right click the "Comp1" and select Copy.
    3. Right click 'Components" node in the project structure and select "Paste"
    4.This step will try to paste the copy of Comp1 as a new Component.
    5. You can change the Name and Package of the Component.
    6.Similarly you'll get the prompts for views,windows etc.
    7.Once you have copied everything, Just check if everything looks good.
    8.Now you can create a new Application using this new component and the Component Interface View and Deploy it.
    9.Test whether the Application created out of this copy works same as the original component.
    You can also try to create another Web Dynpro project and paste the Comp1 in the Components node of that new project and perform the same steps.
    Again, try with these Test Projects and see if this serves your purpose before applying the steps on actual projects.
    Regards,
    Ajay

  • Help - Could not load 'oracle.jdbc.driver.OracleDriver ...

    I'm using oci8 to connect to the Oracle database.
    URL: jdbc:oracle:oci8:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(PORT=1527)(HOST=testhost)))(CONNECT_DATA=(SID=fnoe2pa)))
    When I tried to start the weblogic server, I got the following errors:
    Can you suggest what I should do next (step-wise)??? Thanks, Bobby
    <Sleeping in createResource()>
    ####<15/08/2002 14:09:43> <Error> <JDBC> <qawebmethods> <myserver>
    <main> <system> <> <001060> <Cannot startup connection pool
    "pool/test_myapp" weblogic.common.ResourceException:
    Could not load 'oracle.jdbc.driver.OracleDriver
    If this is a type-4 JDBC driver, it could occur if the JDBC
    driver is not in the system CLASSPATH.
    If this is a type-2 JDBC driver, it may also indicate that
    the Driver native layers(DBMS client lib or driver DLL)
    have not been installed properly on your system
    or in your PATH environment variable.
    This is most likely caused by one of the following:
    1. The native layer SO, SL, or DLL could not be found.
    2. The file permissions on the native layer SO, SL, or DLL
    have not been set properly.
    3. The native layer SO, SL, or DLL exists, but is either
    invalid or corrupted.
    For more information, read the installation documentation
    for your JDBC Driver, available from:
    http://e-docs.bea.com
         at weblogic.jdbc.common.internal.ConnectionEnvFactory.makeConnection(ConnectionEnvFactory.java:212)
         at weblogic.jdbc.common.internal.ConnectionEnvFactory.createResource(ConnectionEnvFactory.java:134)
         at weblogic.common.internal.ResourceAllocator.makeResources(ResourceAllocator.java:705)
         at weblogic.common.internal.ResourceAllocator.<init>(ResourceAllocator.java:282)
         at weblogic.jdbc.common.internal.ConnectionPool.startup(ConnectionPool.java:650)
         at weblogic.jdbc.common.JDBCService.addDeployment(JDBCService.java:107)
         at weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(DeploymentTarget.java:360)
         at weblogic.management.mbeans.custom.DeploymentTarget.addDeployments(DeploymentTarget.java:285)
         at weblogic.management.mbeans.custom.DeploymentTarget.updateServerDeployments(DeploymentTarget.java:239)
         at weblogic.management.mbeans.custom.DeploymentTarget.updateDeployments(DeploymentTarget.java:199)
         at java.lang.reflect.Method.invoke(Native Method)
         at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMBeanImpl.java:636)
         at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl.java:621)
         at weblogic.management.internal.ConfigurationMBeanImpl.invoke(ConfigurationMBeanImpl.java:360)
         at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1557)
         at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1525)
         at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:468)
         at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:209)
         at $Proxy31.updateDeployments(Unknown Source)
         at weblogic.management.configuration.ServerMBean_CachingStub.updateDeployments(ServerMBean_CachingStub.java:2977)
         at weblogic.management.mbeans.custom.ApplicationManager.startConfigManager(ApplicationManager.java:372)
         at weblogic.management.mbeans.custom.ApplicationManager.start(ApplicationManager.java:160)
         at java.lang.reflect.Method.invoke(Native Method)
         at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMBeanImpl.java:636)
         at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl.java:621)
         at weblogic.management.internal.ConfigurationMBeanImpl.invoke(ConfigurationMBeanImpl.java:360)
         at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1557)
         at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1525)
         at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:468)
         at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:209)
         at $Proxy42.start(Unknown Source)
         at weblogic.management.configuration.ApplicationManagerMBean_CachingStub.start(ApplicationManagerMBean_CachingStub.java:480)
         at weblogic.management.Admin.startApplicationManager(Admin.java:1234)
         at weblogic.management.Admin.finish(Admin.java:644)
         at weblogic.t3.srvr.T3Srvr.start(T3Srvr.java:524)
         at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:207)
         at weblogic.Server.main(Server.java:35)
    >
    ####<15/08/2002 14:09:43> <Info> <JDBC> <qawebmethods> <myserver>
    <main> <system> <> <001082> <Creating Data Source named
    jdbc/test_myapp for pool pool/test_myapp>
    ####<15/08/2002 14:09:43> <Info> <JDBC> <qawebmethods> <myserver>
    <main> <system> <> <001070> <Checking existence of connection pool
    pool/test_myapp requested by user system>
    ####<15/08/2002 14:09:43> <Error> <JDBC> <qawebmethods> <myserver>
    <main> <system> <> <001059> <Error during Data Source creation:
    weblogic.common.ResourceException: DataSource(jdbc/test_myapp) can't
    be created with non-existent Pool (connection or multi)
    (pool/test_myapp)>
    ####<15/08/2002 14:09:50> <Info> <EJB> <qawebmethods> <myserver>
    <main> <system> <> <010008> <EJB Deploying file: myapp-ejb.jar>
    ####<15/08/2002 14:09:50> <Warning> <J2EE> <qawebmethods> <myserver>
    <main> <system> <> <160007> <You are running WebLogic Server with J2EE
    1.3 features enabled. The implementation of specific J2EE 1.3 features
    (EJB 2.0, JSP 1.2, Servlet 2.3, and J2EE Connector Architecture 1.0)
    in BEA WebLogic Server 6.1 is of a non-final version of the
    appropriate specification. It is subject to change in future releases
    once the specification becomes finalized. This may cause application
    code developed for BEA WebLogic Server 6.1 that uses the new features
    of J2EE 1.3 to be incompatible with the J2EE 1.3 platform supported in
    future releases of BEA WebLogic Server.>
    ####<15/08/2002 14:09:59> <Error> <J2EE> <qawebmethods> <myserver>
    <main> <system> <> <160001> <Error deploying application myapp-ejb:
    Unable to deploy EJB: Counter from myapp-ejb.jar:
    The DataSource with the JNDI name: jdbc/test_myapp could not be
    located. Please ensure that the DataSource has been deployed
    successfully and that the JNDI name in your EJB Deployment descriptor
    is correct.
    >
    ####<15/08/2002 14:09:59> <Info> <HTTP> <qawebmethods> <myserver>
    <main> <system> <> <101053> <[HTTP myserver] Loading web app: myapp>
    ####<15/08/2002 14:09:59> <Info> <HTTP> <qawebmethods> <myserver>
    <main> <system> <> <101059> <[myserver] Loading myapp from WAR file:
    C:\bea\wlserver6.1\.\config\mydomain\applications\.wlnotdelete\wlap31483\myapp.war>
    ####<15/08/2002 14:09:59> <Warning> <J2EE> <qawebmethods> <myserver>
    <main> <system> <> <160007> <You are running WebLogic Server with J2EE
    1.3 features enabled. The implementation of specific J2EE 1.3 features
    (EJB 2.0, JSP 1.2, Servlet 2.3, and J2EE Connector Architecture 1.0)
    in BEA WebLogic Server 6.1 is of a non-final version of the
    appropriate specification. It is subject to change in future releases
    once the specification becomes finalized. This may cause application
    code developed for BEA WebLogic Server 6.1 that uses the new features
    of J2EE 1.3 to be incompatible with the J2EE 1.3 platform supported in
    future releases of BEA WebLogic Server.>
    ####<15/08/2002 14:09:59> <Info> <HTTP> <qawebmethods> <myserver>
    <main> <system> <> <101031>
    <[WebAppServletContext(1412030,myapp,/myapp)] extracting classfiles to
    C:\bea\wlserver6.1\config\mydomain\applications\.wlnotdelete\wlap31483\WEB-INF\_tmp_war_myapp:>
    ####<15/08/2002 14:10:04> <Info> <HTTP> <qawebmethods> <myserver>
    <main> <system> <> <101032>
    <[WebAppServletContext(1412030,myapp,/myapp)] extracted classfiles
    successfully...>
    ####<15/08/2002 14:10:04> <Info> <HTTP Session> <qawebmethods>
    <myserver> <main> <system> <> <100037> <Creating SessionContext of
    type: memory for webapp: /myapp>
    ####<15/08/2002 14:10:04> <Info> <HTTP> <qawebmethods> <myserver>
    <main> <system> <> <101047>
    <[WebAppServletContext(1412030,myapp,/myapp)] registering classpath
    servlet with initArgs 'null'>
    ####<15/08/2002 14:10:04> <Info> <HTTP> <qawebmethods> <myserver>
    <main> <system> <> <101047>
    <[WebAppServletContext(1412030,myapp,/myapp)] registering getior
    servlet with initArgs 'null'>
    ####<15/08/2002 14:10:04> <Info> <HTTP> <qawebmethods> <myserver>
    <main> <system> <> <101047>
    <[WebAppServletContext(1412030,myapp,/myapp)] registering tunneling
    servlets with initArgs 'wl-dispatch-policy=direct'>
    ####<15/08/2002 14:10:04> <Info> <HTTP> <qawebmethods> <myserver>
    <main> <system> <> <101047>
    <[WebAppServletContext(1412030,myapp,/myapp)] registering JSPServlet
    with initArgs '[JspConfig:
    verbose=true,packagePrefix=jsp_servlet,-compiler=javac,compileFlags=,workingDir=C:\bea\wlserver6.1\config\mydomain\applications\.wlnotdelete\wlap31483\WEB-INF\_tmp_war_myapp,pageCheckSeconds=1,superclass=null,keepgenerated=false,precompileContinue=false,compilerSupportsEncoding=true,encoding=null,defaultfilename=index.jsp,compilerclass=null,noTryBlocks=false]'>
    ####<15/08/2002 14:10:04> <Debug> <HTTP> <qawebmethods> <myserver>
    <main> <system> <> <101097> <Registering ServletContext:
    "myapp:/myapp">
    ####<15/08/2002 14:10:04> <Info> <J2EE> <qawebmethods> <myserver>
    <main> <system> <> <160003> <Deployed : myapp>
    ####<15/08/2002 14:10:04> <Info> <HTTP> <qawebmethods> <myserver>
    <main> <system> <> <101133> <Initializing WEB server myserver>
    ####<15/08/2002 14:10:04> <Notice> <Management> <qawebmethods>
    <myserver> <main> <system> <> <141052> <Application Poller started for
    development server.>
    ####<15/08/2002 14:10:04> <Notice> <WebLogicServer> <qawebmethods>
    <myserver> <ListenThread> <system> <> <000202> <ListenThread listening
    on port 7001>
    ####<15/08/2002 14:10:04> <Info> <NT Performance Pack> <qawebmethods>
    <myserver> <ListenThread> <system> <> <000000> <NATIVE: NTSocketMuxer
    was built on Nov 1 2001 16:39:28
    >
    ####<15/08/2002 14:10:04> <Notice> <WebLogicServer> <qawebmethods>
    <myserver> <SSLListenThread> <system> <> <000202> <SSLListenThread
    listening on port 7002>
    ####<15/08/2002 14:10:05> <Notice> <Management> <qawebmethods>
    <myserver> <main> <system> <> <141030> <Starting discovery of Managed
    Server... This feature is on by default, you may turn this off by
    passing -Dweblogic.management.discover=false>
    ####<15/08/2002 14:10:05> <Notice> <WebLogicServer> <qawebmethods>
    <myserver> <main> <system> <> <000331> <Started WebLogic Admin Server
    "myserver" for domain "mydomain" running in Development Mode>
    ####<15/08/2002 14:10:11> <Info> <NT Performance Pack> <qawebmethods>
    <myserver> <ExecuteThread: '14' for queue: 'default'> <> <> <000000>
    <Allocating: '2' NT reader threads>
    ####<15/08/2002 14:10:13> <Info> <HTTP> <qawebmethods> <myserver>
    <ExecuteThread: '1' for queue: '__weblogic_admin_html_queue'> <system>
    <> <101047> <[WebAppServletContext(5367844,console,/console)] actions:
    init>
    ####<15/08/2002 14:10:18> <Info> <HTTP> <qawebmethods> <myserver>
    <ExecuteThread: '1' for queue: '__weblogic_admin_html_queue'> <system>
    <> <101047> <[WebAppServletContext(5367844,console,/console)]
    FileServlet: init>
    ####<15/08/2002 14:10:18> <Info> <HTTP> <qawebmethods> <myserver>
    <ExecuteThread: '1' for queue: '__weblogic_admin_html_queue'> <system>
    <> <101047> <[WebAppServletContext(5367844,console,/console)]
    FileServlet: Using standard I/O>

    "thorick" <[email protected]> wrote in message news:<[email protected]>...
    Most likely, the OCI libraries could not be loaded.
    Before continuing down this path, is there any reason
    why you want to use an OCI based Driver as opposed to the
    all Java Oracle thin driver ?There is indeed a valid reason for my choice.
    I am currently connecting to the Oracle "Rdb" 7.0 database (located on
    VMS) - not Oracle Oracle.
    The SQL Service software we're currently using is version 7.1. This
    version works well with the OCI8 driver (when connecting to the
    database from Windows NT). This version of SQL Service however does
    NOT work for the THIN driver (unless we upgrade the SQL Service to
    version 7.1.5.5 - which we're not prepared to do so because it is not
    stable enough from our previous test/trials). SQLSRV Version 7.1.5.5
    works for THIN driver but it will result in uncommitted
    transactions/unresolved connection/stopping of listener issues and
    there is a need to restart the service from time to time. Oracle has
    since confirmed that this is a bug that they have yet to resolve...
    So we have to stick to OCI8 (THICK) for the time being. I would really
    appreciate it very much if you can tell me the various OCI libraries
    that I need to load (in terms of WebLogic Server config file settings
    etc..).
    By the way I have already installed the Oracle 8 client software on
    the NT server (where WebLogic Server is) and I have also set up the
    relevant SID (using the Net8 Assistant) that points to the Oracle Rdb
    database on the VMS. I have also tried using SQL*Plus to connect to
    the database and I can connect properly to the database. But WebLogic
    simply doesn't seem to load the software.
    Help...
    Regards,
    Bobby Brown, writing from Australia.

  • What XA JDBC driver should I use with Oracle 8i 8.1.6

    I need to use an XA JDBC driver for Oracle 8i 8.1.6. I am using the driver in
    a ConnectionPool in a TxDataSource for use by some entity beans using EJB 2.0.
    I'm running WebLogic Server 6.0 sp2, EJB 2.0, Java 2 SDK 1.3.1 Server VM, Solaris
    2.7, and Oracle 8i 8.1.6.
    I know of three different Oracle XA drivers: WebLogic jDriver for Oracle XA, Oracle
    OCI type 2 driver XA, and Oracle Thin tyoe 2 XA. Are there any other drivers
    that I can use for Oracle 8.1.6? Which driver and which version should I use?
    For example, can I use the Oracle 8.1.7 JDBC drivers with the Oracle 8.1.6 server,
    or would the Oracle 9i drivers work with the Oracle 8i server? Which drivers
    are faster, and which support more features? I assume that I should not use the
    type 4 driver since I am not using an applet, but I don't know if there are bugs
    in the OCI C library for Solaris or in the JDBC drivers that use it that prevent
    XA from woking. Which version of the Oracle C OCI library should I use if I use
    a type 2 driver?
    Thanks,
    Ross Goldberg

    Hi,
    I think you can't use the 8.1.6 thin driver for XA, you would have to
    use the OCI driver or 2PC-enable your datasource. AFAIK this has been
    changed for 8.1.7
    Check http://e-docs.bea.com/wls/docs61/////jta/thirdpartytx.html.
    Daniel
    -----Original Message-----
    From: Gene Chuang [mailto:[email protected]]
    Posted At: Thursday, August 30, 2001 2:04 AM
    Posted To: jdbc
    Conversation: What XA JDBC driver should I use with Oracle 8i 8.1.6
    Subject: Re: What XA JDBC driver should I use with Oracle 8i 8.1.6
    I've asked this question before. This is the reply from Joe
    Weinstein:
    For reliability and JDBC 2.0 compliance, I recommend the
    Oracle thin driver.
    If not that driver, you should verify that a type-2 driver
    actually does
    deliver better performance, but then I would not have a
    strong preference
    between their type-2 and ours. Theirs may be faster, and JDBC
    2.0 compliant.
    Both are succeptible to OCI bugs, some of which only they can
    fix, but we
    listen.
    Gene
    "Ross Goldberg" <[email protected]> wrote in message
    news:[email protected]...
    >
    I need to use an XA JDBC driver for Oracle 8i 8.1.6. I am using thedriver in
    a ConnectionPool in a TxDataSource for use by some entity beans usingEJB 2.0.
    I'm running WebLogic Server 6.0 sp2, EJB 2.0, Java 2 SDK 1.3.1 ServerVM, Solaris
    2.7, and Oracle 8i 8.1.6.
    I know of three different Oracle XA drivers: WebLogic jDriver forOracle XA, Oracle
    OCI type 2 driver XA, and Oracle Thin tyoe 2 XA. Are there any otherdrivers
    that I can use for Oracle 8.1.6? Which driver and which versionshould I use?
    For example, can I use the Oracle 8.1.7 JDBC drivers with the Oracle8.1.6 server,
    or would the Oracle 9i drivers work with the Oracle 8i server? Whichdrivers
    are faster, and which support more features? I assume that I shouldnot use the
    type 4 driver since I am not using an applet, but I don't know ifthere are bugs
    in the OCI C library for Solaris or in the JDBC drivers that use itthat prevent
    XA from woking. Which version of the Oracle C OCI library should Iuse if I use
    a type 2 driver?
    Thanks,
    Ross Goldberg

  • Using JDBC to perform spatial queries using SDO operators

    Hi,
    I want to create a routine to perform the SDO_ANYINTERACT function based on a rectangle as in the following query:
    select LINK_ID from SDO_LINK where
    SDO_ANYINTERACT ( SDO_LINK.LINK, SDO_GEOMETRY(2003,8307,NULL,
    SDO_ELEM_INFO_ARRAY(1,1003,3),
    SDO_ORDINATE_ARRAY(-122.38845,37.78889,-122.38651,37.78923))) = 'TRUE'"
    This query works fine when passed to the executeQuery method of a JDBC Statement. But when I tried to create a PreparedStatement and set the 4 parameters (lon1, lat1, lon2, lat2) that are passed to the SDO_ORDINATE_ARRAY function:
              String sql = "select LINK_ID from SDO_LINK where " +
                   "SDO_ANYINTERACT ( SDO_LINK.LINK, SDO_GEOMETRY(2003,8307,NULL,SDO_ELEM_INFO_ARRAY(1,1003,3),SDO_ORDINATE_ARRAY(" +
                   "?,?,?,?" +
                   "))) = 'TRUE'";
    I am getting an Oracle exception:
    java.sql.SQLException: ORA-03115: unsupported network datatype or representation
    I have tried setting the parameters using setString as well as setFloat methods but still get this error.
    Does anyone know what I am dong wrong? Anyone have an example of calling SDO_ANYINTERACT or other SDO operators via JDBC?
    Thanks
    BW

    Getting the connection is straightforward:
    try {
    Class.forName("oracle.jdbc.driver.OracleDriver");
    } catch (ClassNotFoundException e) {
    throw new SQLException (e.toString());
    Connection conn = DriverManager.getConnection(connURL, userName, userPass);
    I have validated that my query executes and returns results fine when I pass the entire query as a string to executeQuery:
    String sql = "select LINK_ID from SDO_LINK where SDO_ANYINTERACT ( SDO_LINK.LINK, SDO_GEOMETRY(2003,8307,NULL,SDO_ELEM_INFO_ARRAY(1,1003,3),SDO_ORDINATE_ARRAY(-122.38845,37.78889,-122.38651,37.78923))) = 'TRUE'";
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery(sql);
    // Iterate through result set here
    The issue is I am not sure how to pass the 2 (lon,lat) cooridnates fior the SDO_ORDINATE_ARRAY operation in a prepared statement . Perhaps I have to just construct a string?
    For example, doing the following:
    String sql = "select LINK_ID from SDO_LINK where " +
         "SDO_ANYINTERACT ( SDO_LINK.LINK, SDO_GEOMETRY(2003,8307,NULL,SDO_ELEM_INFO_ARRAY(1,1003,3),SDO_ORDINATE_ARRAY(" +
         "?,?,?,?" +
         "))) = 'TRUE'";
    if (conn == null)
         openConnection();
    PreparedStatement pstmt = conn.prepareStatement(sql);
    pstmt.setFloat(1, Float.parseFloat(lon1));
    pstmt.setFloat(2, Float.parseFloat(lat1));
    pstmt.setFloat(3, Float.parseFloat(lon2));
    pstmt.setFloat(4, Float.parseFloat(lat2));
    Then calling:
    ResultSet rs = pstmt.executeQuery(sql);
    Which results in the exception.
    Actually, I found the problem. I want to NOT pass the sql string to the executeQuery statement when using the PreparedStatement.
    The following works:
    ResultSet rs = pstmt.executeQuery();
    Edited by: wisegb on May 21, 2009 5:39 AM

  • A BUG in the KPRB JDBC driver

    Hi community,
    the problem I would like to present here seems to be a BUG in the KPRB (server-side) JDBC driver. To be precise, I am going to outline the platform I found the problem occurs (I haven't made any tests with the others yet). These are Oracle 8.1.6-8.1.7.4 databases.
    What I am trying to do is to write a Java Stored Procedure and return a nested table from it. Nothing easier than that!? The important aspect is I cannot (shouldn't) hardcode schema name in the call to the oracle.sql.ArrayDescriptor.createDescriptor() method since the Stored Procedure and the accompanied nested table (SQL) type can be loaded into arbitrary schema. Thus, my code looks like:
    Connection con = DriverManager.getConnection("jdbc:default:connection:");
    ArrayDescriptor arrDesc = ArrayDescriptor.createDescriptor("NESTED_TABLE_TYPE_NAME",con);
    You can note, NESTED_TABLE_TYPE_NAME is the nested table type I create in the same schema the Stored Procedure is loaded. What wrong with it? Actually, it works perfectly fine if You call the Stored Procedure being logged as the owner of the Procedure. The problem occurs if You grant the execute rights to other users and try to call it being logged as one of them. What happens is Oracle doesn't find the nested table type and throws an exception.
    Does it mean such behavior implies a BUG? Oracle reference states that if either the PL/SQL wrapper for the Java Stored Procedure or the class itself are marked as having DEFINER privileges the call proceeds in the schema of the definer, not the caller. Actually, I tried to declare the PL/SQL wrapper as well as the class having DEFINER privileges and none of them succeded.
    Then I made some investigations, and found in the Thin JDBC driver the ArrayDescriptor.createDescriptor method uses the oracle.sql.SQLName class, which in turn calls the oracle.jdbc.driver.OracleConnection.getUserName() method to obtain the missing schema name, and the latter performs select:
    SELECT USER FROM DUAL
    Obviously, the above returns current user, and not the current schema in the case DEFINER privileges were applied. I understand, the Thin JDBC driver is different from the KPRB driver but!!! I also monitor Library Cache (through v$sql dynamical view) while calling the Stored Procedure and what I see is very interesting ;-) The number of executions for the "SELECT USER FROM DUAL" statement increases!!!
    That is why I claim the above behavior is a BUG of the KPRB driver.
    Regards,
    Roman Zahorbenski

    Hi Avi,
    Because you didn't grant access permission to other users on the NESTED_TABLE_TYPE_NAME (maybe?)Of course, I remember to grant (EXECUTE) privilege on the nested table type to other users. The reason are not synonyms also, for Oracle doesn't allow to access these types through synonyms, unfortunately.
    And the applications can be tons ;-), I use it to implement regular expression functionality in the databases prior to 9i.
    Regards,
    Roman

  • How insert into table select from table works in jdbc driver?

    Hi, Supposing one table has two LOB fields, one LOB field is BLOB type while the other is CLOB type, I use the following sql statement to copy a row into a new row:
    insert into table (id, file_body, file_content) select new_id, file_body, file_content from table where id = '111';
    After commit on the connection, I can see the copied record in the table and both LOB fields are not null and this's the expected behavior.
    However after some days later, the copy function becomes to be a problem, the BLOB field named file_body can be null when the copy job is done, while other fields copy successfully.
    The issue can not be reproduced every time.
    I suppose the jdbc driver may try to allocate byte buffer in the heap to perform copy operation for BLOB fields,if there is no enough memory available in the heap the copy operation may fail but the commit on the connection can be successful.b/c I can see a lot of OOM errors in the log files and I believe this can contribute to the issue.
    Hope someone can give me a hint or comments.
    Thanks,
    SuoNayi

    I want to figure out what's memory leak point and I have tried the following solutions but none worked:
    1.I have tried to dump the memory of the JVM but failed,I can see the following errors :
    [root@localhost xxx]# jmap -heap:format=b 3027
    Attaching to process ID 3027, please wait...
    Debugger attached successfully.
    Server compiler detected.
    JVM version is 1.5.0_16-b02
    Unknown oop at 0x00002b21a24cd550
    Oop's klass is null
    Finding object size using Printezis bits and skipping over...
    Unknown oop at 0x00002b21a3634380
    Oop's klass is null
    Finding object size using Printezis bits and skipping over...
    2.and the thread stack can not be dumped successfully as well:
    Thread 3046: (state = BLOCKED)
    - java.lang.Object.wait(long) @bci=0 (Compiled frame; information may be imprecise)
    Error occurred during stack walking:
    the version of java is:
    java version "1.5.0_16"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_16-b02)
    Java HotSpot(TM) 64-Bit Server VM (build 1.5.0_16-b02, mixed mode)
    I have to added dump thread stack option in JVM arguments, -XX:+HeapDumpOnOutOfMemoryError.
    If there are other solutions please let me know, thanks.

  • Java.lang.OutOfMemoryError (Microsoft SQL Server JDBC driver)

    Hi everyone,
    I am getting a java.lang.OutOfMemoryError when performing a simple query to a database. The query produces only one row (and will always produce only one row). However, the statement that produces the second column in the resultset is very long (>256) characters, so could that be it?
    Also, I am executing thousands of SQL statements with no difficulty. I have double-checked that I am cleaning up all of my database resources, so I don't think that this is it. Do I have to do anything else besides closing the statement and resultset?
    There is no stack trace, otherwise I would have posted it :(
    Also, as an aside - is the Microsoft JDBC driver for SQL Server the best one to use? It seems poorly supported and slow at times. Are there any alternatives?
    Thanks for your time :)
    Ben

    It is running after thousands of other queries. I'll test to see what happens if I run it by itself.
    I am closing the connection. In fact, I am running all of these statements over the same connection and simply opening and closing resultsets.
    So a bug in the driver you think?
    Thanks for the reply :)
    Ben

  • Jdbc driver creates new thread for each statement with a query timeout set

    I am profiling a web application that is using the Microsoft JDBC driver, version 1.1 to connect to a sql server 2005 database. Each java.sql.Statement that is created, within the application, gets a query timeout value set on it ( statement.setQueryTimeout(...) ).
    I have discovered that the JDBC driver creates a new thread to monitor each Statement and the query timeout value. When the application is under load these threads are getting created faster then they are being destroyed and I am concerned that this will cause a performance problem in production.
    One option I have is to remove the query timeout value and the monitor threads will not be created, another is to change JDBC drivers.
    I'm curious is there any way to control this behavior so that these threads are not created or are managed more efficiently.  Is there a workaround that anyone is aware of?   Is this considered a bug?
    I have found a similar bug here for the 2000 driver:
    http://support.microsoft.com/default.aspx/kb/894552
    Cheers

    Hi,
    Thank you for using the Microsoft SQL Server JDBC driver.  You are correct that a new thread is started to monitor the query timeout when a statement is executed.  This is a potential performance issue that we may look at addressing in the upcoming v1.2 release.  The current behavior is not configurable.  The only workaround with the v1.1 driver is to limit your use of query timeouts to only those statements which you reasonably might expect to actually time out.
    We do take customer feedback very seriously, so if anyone else is concerned about this particular issue, please chime in and we will be able to give it appropriate weight.
    --David Olix [MSFT]

  • [Oracle JDBC Driver][Oracle]ORA-31011: XML parsing failed

    Hi,
    I have got the following error when i tired to upload an XML file in my application. My application will insert the XML file in to Oracle 10g data base table. (Our DB server is Oracle 10g).
    The error is as follows:-
    [BEA][Oracle JDBC Driver][Oracle]ORA-31011: XML parsing failed
    ORA-19202: Error occurred in XML processing
    LPX-00004: internal error "MultiChar overflow"
    Error at line 20795
    ORA-06512: at "SYS.XMLTYPE", line 254
    ORA-06512: at line 1
    The XML file contains more than 90,000 lines in it. Please help.
    Thanks!
    Siva K.

    Is this a specific problem with 10G release? We are using 10.2.0.4.0.
    Using CLOB, We think that this may hit the performance of the application as we are using large XML files.

  • Oracle JDBC Driver Compile Errors

    I'd like to try out this new Preview Edition but I get the following errors:
    Error(22,8): class oracle.jdbc.driver.OracleCallableStatement is not public; cannot be accessed from outside of package oracle.jdbc.driver
    Error(23,8): class oracle.jdbc.driver.OracleTypes is not public; cannot be accessed from outside of package oracle.jdbc.driver
    These erors occur at the import statements:
    import oracle.jdbc.driver.OracleCallableStatement;
    import oracle.jdbc.driver.OracleTypes;
    when I attempt to compile a JDev 10.1.3 project in the 11g Technology Preview Edition. Any idea why?
    TIA,
    Jeff

    We don't support project migration from 10.1.3 to the
    technology preview.
    Does the problem reproduce if you create a new
    project in 11tp?Shay,
    Thanks for the quick response. I created a new application in 11tp from scratch. I created a View Object and pasted the offending code into it and got the same compile errors. I actually got the code about a year ago from Steve's Not Yet Documented Applications. He has since removed the App from the page, changed the code and added it to the Dev Guide. The sample app showed how to bind a View object to a REF Cursor returned from a stored procedure and it looked something like this:
    CallableStatement cs = conn.prepareCall("{?=call package.name(P_CODIGO => ?)}");
    cs.rgisterOutParameter(1,OracleTypes.CURSOR);
    cs.setInt(2,16782);
    cs.executeQuery();
    ResultSet result = ((OracleCallableStatement)cs).getCursor(1);
    Changing the code to look more like what is now in the DEV GUIDE will more than likely work because he eliminates the need for the OracleCallableStatement.
    This brings me to my next point. If migration is not currently supported, will it be when the production release of JDEV 11g is available? Shame on me for just quickly skimming the release notes but when the import wizard ran on my project it did not warn me that the feature is not supported or that problems are likely. Upon resolving the issues with the callable statement, I had significant other compile errors in my jspx pages that will probably not be as trivial to fix. If project upgrades are not performed "easily" it will certainly push the 11g adoption date out considerably.
    Thanks again, your comments are always encouraged.
    Jeff

  • When I get a date field value using the Oracle thin (type 4) JDBC driver...

    ....in 'DD-MMM-YY' format from an Oracle 8i database and pass it in to the java.util.Date() constructor, I get a IllegalArgumentException. This error doesn't occur when I use the type 2 driver, so it is apparently a driver-specific thing. It happens on both Win32 and Linux.
    Has anyone seen this before? Is there a newer version of the Oracle thin (i.e., type 4) driver than is listed here?
    http://web77-02.us.oracle.com/software/tech/java/sqlj_jdbc/content.html
    Thanks,
    Tom
    [email protected]

    Yup, that original post didn't make much sense, did it? Let's try again.
    I've got an EJB app that runs on WebLogic 6.0 (on Solaris in production, on Win2K for development) and accesses an Oracle 8i database. This app currently uses the Oracle type 2 JDBC drivers. All is well.
    So I wanted to see how it would run on Linux. I've got a Redhat 7.1 box handy, so I installed the JDK and WL6.0 and slapped the ear file on there. Problem! Can't deploy because there are no Oracle drivers on this machine!
    Makes sense. So I started looking around, and it seems installing Oracle on a RH 7.1 box involves patching glibc and other such nastiness. So let's just try the type 4 JDBC driver - no glibc patch, no shared object libraries, just good 'ol pure Java talking to Oracle on port 1521.
    Once I had the URLs and whatnot set up, the app connected to the DB just fine, created the connection pool, read some data, etc. But when my app read a date from the DB and instantiates a new java.util.Date object, I got an IllegalArgumentException - i.e., the date can't be parsed.
    "Hmm... that's odd", I thought, so back I went to my trusty Win2K machine, modified my configuration files to use the type 4 driver and - same error! So I switched back to the type 2 driver - and everything works fine, Dates and all. Hmmm.....
    As you correctly state, that Date constructor is deprecated and I should use DateFormats and GregorianCalendars and whatnot instead.
    But has anyone seen this weird behavior before - code that works fine on a type 2 driver starts throwing exceptions when used with a type 4 driver? Anyone have any solutions?
    Thanks much,
    Tom

Maybe you are looking for

  • Missing saplicense.exe. NSP does not run anymore. No install CD.  Any help?

    Hi, I'm very new in this SAP world. I downloaded the NSP to play with it a little bit but I didn't realize when my license expired. Now I cannot login in the system and the only available instructions I've found specifies to use a saplicene.exe progr

  • CF MX7 and MySQL 5

    Hey, I just reinstalled ColdFusion (Developer Edition) and I had to reinstall the mysql-connector-java-3.1.12-bin.jar file into the WEB-INF\lib directory for added connectivity with MySQL 5. Problem is, I can't find that directory anymore... I am run

  • Where can I find old firmware for a Muvo TX

    Well... I installed the new firmware from the site and now my player is dead. Where can I find older firmware? Or could anyone be so nice as to upload it to a temporary server (such as YouSendIt)? Thanks.

  • Tracking wich programm changes rights of a folder

    Program Files is very well protected. Often too well to put games there. Hence I made a game folder (called "Spiele", since I am german), where the normal users have full access (so every game can run without elevation). It is on the same partition a

  • WEB AS instllation guide

    Hi,      can any one send me the WEBAS Installation Guide.                    Thanks n Regards                      Vamsi.D