Forum Stats

  • 3,733,011 Users
  • 2,246,674 Discussions
  • 7,856,467 Comments

Discussions

java.lang.ArrayIndexOutOfBoundsException: -32503

KeithWilliams
KeithWilliams Member Posts: 133
I am getting this error in setupBindBuffers() when I issue an executeBatch() using the JDBC 11.1.0.6.0 driver. This code works fine with all of the 10.x drivers.

Here is the stack trace:

java.lang.ArrayIndexOutOfBoundsException: -32503
at oracle.jdbc.driver.OraclePreparedStatement.setupBindBuffers(OraclePreparedStatement.java:2677)
at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:9255)
at oracle.jdbc.driver.OracleStatementWrapper.executeBatch(OracleStatementWrapper.java:210)
at org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:294)
at com.troux.servercommon.db.BulkTableAdder.flushToDatabase(BulkTableAdder.java:242)
at com.troux.tux.TUXManagerImpl.flushToDatabase(TUXManagerImpl.java:156)
at com.troux.tux.TUXManagerFactory.updateBatches(TUXManagerFactory.java:184)
at com.troux.tux.TUXManagerFactory.commitBatches(TUXManagerFactory.java:189)
at com.troux.tux.stage.StageAPIImpl.processCounters(StageAPIImpl.java:201)
at com.troux.tux.stage.StageAPIImpl.saveObject(StageAPIImpl.java:165)
at com.troux.tux.processor.extract.sax.ComponentHandler.verifyAndSave(ComponentHandler.java:674)
at com.troux.tux.processor.extract.sax.ComponentHandler.endElement(ComponentHandler.java:319)
at com.troux.tux.processor.extract.sax.SaxElementProcessor.endElement(SaxElementProcessor.java:232)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at com.troux.tux.processor.extract.steps.ExtractProcessingStep.runStep(ExtractProcessingStep.java:123)
at com.troux.tux.processor.TUXJobProcessorImpl.runAllSteps(TUXJobProcessorImpl.java:88)
at com.troux.tux.processor.extract.ExtractProcessorImpl.doRunJobWork(ExtractProcessorImpl.java:191)
at com.troux.tux.processor.JobProcessorImpl.runJob(JobProcessorImpl.java:80)
at com.troux.tux.jobmanager.jobrunners.TUXJobRunner.doRunJob(TUXJobRunner.java:110)
at com.troux.tux.jobmanager.jobrunners.TUXJobRunner$1.doWork(TUXJobRunner.java:36)
at com.troux.tux.jobmanager.jobrunners.TUXJobRunner.impersonateJobUser(TUXJobRunner.java:91)
at com.troux.tux.jobmanager.jobrunners.TUXJobRunner.runJob(TUXJobRunner.java:51)
at com.troux.tux.jobmanager.jobrunners.TUXSimpleJobRunnerThread.processObject(TUXSimpleJobRunnerThread.java:29)
at com.troux.common.ThreadPool$PooledThread.run(ThreadPool.java:211)
at java.lang.Thread.run(Thread.java:595)

Comments

  • dsurber-Oracle
    dsurber-Oracle Member Posts: 195
    Turn on logging at Level.FINE and get a trace of the exact JDBC methods called. Then see if you can create a pure JDBC test case. That will make it much easier to figure out what is going on. There's a JDBC logging white paper on the OTN JDBC/SQLJ home page.

    Douglas
  • KeithWilliams
    KeithWilliams Member Posts: 133
    So this happened yesterday. All I did was start up tomcat and then try to execute this process and I got these errors. So today, for some unknown reason to me, I decided to repeat my steps. It worked today. Nothing has changed except the weather. So until I get a reproducible case I am going to move on.
  • 14736
    14736 Member Posts: 85
    I've encountered the same issue with the 11g driver. It turned out the bug is a function of the size of the batch and the number of rows in the table being inserted into. A patch can be found in metalink with the id of 6396242.

    -Mark
  • KeithWilliams
    KeithWilliams Member Posts: 133
    Yes, Oracle support just sent me the patch information on MetaLink.

    Thanks, all.
  • KeithWilliams
    KeithWilliams Member Posts: 133
    I get the following error when applying the patch. Anyone know what causes this?

    11:56:22.51>opatch apply
    File Not Found
    Invoking OPatch 11.1.0.6.0

    Oracle Interim Patch Installer version 11.1.0.6.0
    Copyright (c) 2007, Oracle Corporation. All rights reserved.


    Oracle Home : F:\oracle\product\11.1.0\db_1
    Central Inventory : C:\Program Files\Oracle\Inventory
    from : n/a
    OPatch version : 11.1.0.6.0
    OUI version : 11.1.0.6.0
    OUI location : F:\oracle\product\11.1.0\db_1\oui
    Log file location : F:\oracle\product\11.1.0\db_1\cfgtoollogs\opatch\opatch2007-12-18_11-57-21AM.log

    ApplySession applying interim patch '6396242' to OH 'F:\oracle\product\11.1.0\db_1'

    Running prerequisite checks...
    Prerequisite check "CheckActiveFilesAndExecutables" failed.
    The details are:

    Following files are active :
    F:\oracle\product\11.1.0\db_1\jdbc\lib\ojdbc5.jar
    F:\oracle\product\11.1.0\db_1\jdbc\lib\ojdbc5.jar
    ApplySession failed during prerequisite checks: Prerequisite check "CheckActiveFilesAndExecutables" failed.
    System intact, OPatch will not attempt to restore the system

    OPatch failed with error code = 74
  • 14736
    14736 Member Posts: 85
    Not sure if this is supported but you could just unpack the ojdbc5.jar and replace the class files with those that are included in the patch and then package it back up. I did it this way since I was patching the jar on a host that didn't have opatch/db installed.

    Good luck,

    -Mark
  • KeithWilliams
    KeithWilliams Member Posts: 133
    Lol, that's what I ended up doing also. :-)
  • 199713
    199713 Member Posts: 6
    I can't get access to metalink.

    Is a fixed version not available for download?

    Thanks.
  • 586088
    586088 Member Posts: 15
    I hit this same error when using the 11g jdbc driver against a 10g or 11g database.
    If I use a 10g jdbc driver I don't get the error.

    If I search the patch number, there is a patch supplied for the database server side.

    Why isn't the patch for the jdbc driver that would be deployed at the client?
  • 585768
    585768 Member Posts: 4
    Is there any way to get the patch if I do not have any account at MetaLink?
  • 585768
    585768 Member Posts: 4
    I tried to apply the patch but am getting the following error:

    mymc:/oracle/patch/6396242# su - oracle -bash-3.00$ /u01/oracle/product/11.1/OPatch/opatch apply Invoking OPatch 11.1.0.6.0

    Oracle Interim Patch Installer version 11.1.0.6.0 Copyright (c) 2007, Oracle Corporation. All rights reserved.


    Oracle Home : /u01/oracle/product/11.1
    Central Inventory : /u01/oraInventory
    from : /var/opt/oracle/oraInst.loc
    OPatch version : 11.1.0.6.0
    OUI version : 11.1.0.6.0
    OUI location : /u01/oracle/product/11.1/oui
    Log file location :
    /u01/oracle/product/11.1/cfgtoollogs/opatch/opatch2008-04-21_11-10-36AM.log

    ApplySession applying interim patch '6396242' to OH '/u01/oracle/product/11.1'

    Running prerequisite checks...
    Prerequisite check "CheckApplicable" failed.
    The details are:
    Patch 6396242: Required component(s) missing : [ oracle.dbjava.rsf, 10.2.0.4.0 ] ApplySession failed during prerequisite checks: Prerequisite check "CheckApplicable" failed.
    System intact, OPatch will not attempt to restore the system

    OPatch failed with error code 74

    Can anyone help me in this regard?

    Thanks in advance.
  • 656666
    656666 Member Posts: 1
    I found that if I throw a random comment in the sql statement to force the driver to use a new statement for each batch it goes away.

    Something along these lines...

    StringBuilder builder = new StringBuilder("INSERT INTO /* ).append(Math.random()).append(" */ ( columns...) VALUES( values..)");

    conn.prepareStatement(builder.toString());
  • 668022
    668022 Member Posts: 1
    Does anyone know if there's a patch for the 10 driver series? I see this error on 10.2.0.4.0 and do not see a new driver version available.

    Thanks,

    Eric
  • 674498
    674498 Member Posts: 1
    Hi all,

    I'm getting the same (or similar) error:

    java.lang.ArrayIndexOutOfBoundsException: -32403
    at oracle.jdbc.driver.OraclePreparedStatement.setupBindBuffers(OraclePreparedStatement.java:2673)
    at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10723)

    My driver is ojdbc14.jar, version is 10.2.0.4.0, just like the previous poster.

    I'm also looking for a patch. Any pointers would be greatly appreciated.

    Regards,
    Erik
  • 14736
    14736 Member Posts: 85
    Have you tried the latest 11.1.0.7 driver? http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs/jdbc_111060.html

    The readme indicates the patch was included for BUG-6396242.

    http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs/111070_readme.html

    -Mark
  • 705912
    705912 Member Posts: 3
    Hi I experience the same problem than Erik and the other.
    I use the jdbc 10.2.0.4.0 to load data (actually serialised objects) from java to my oracle database.

    Every times I go beyond 200 objects (which is nothing) I receive the same Exception, following a short version

    ERROR [Thread-1] (LoaderTuplesNodes.java:345) - Error in thread: -32713
    java.lang.ArrayIndexOutOfBoundsException: -32713
    at oracle.jdbc.driver.OraclePreparedStatement.setupBindBuffers(OraclePreparedStatement.java:2673)
    at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10689)
    at com.hp.hpl.jena.sdb.layout2.TupleLoaderBase.flush(TupleLoaderBase.java:200)
    at com.hp.hpl.jena.sdb.layout2.TupleLoaderBase.finish(TupleLoaderBase.java:155)
    at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes.commitTuples(LoaderTuplesNodes.java:283)
    at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes.access$100(LoaderTuplesNodes.java:31)
    at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes$Commiter.run(LoaderTuplesNodes.java:318)
    at java.lang.Thread.run(Unknown Source)
    2009.06.09 14:59:27 Source1Wrapper extract ------
    java.lang.ArrayIndexOutOfBoundsException: -32713
    at oracle.jdbc.driver.OraclePreparedStatement.setupBindBuffers(OraclePreparedStatement.java:2673)
    at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10689)
    at com.hp.hpl.jena.sdb.layout2.TupleLoaderBase.flush(TupleLoaderBase.java:200)
    at com.hp.hpl.jena.sdb.layout2.TupleLoaderBase.finish(TupleLoaderBase.java:155)
    at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes.commitTuples(LoaderTuplesNodes.java:283)
    at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes.access$100(LoaderTuplesNodes.java:31)
    at com.hp.hpl.jena.sdb.layout2.LoaderTuplesNodes$Commiter.run(LoaderTuplesNodes.java:318)
    at java.lang.Thread.run(Unknown Source)
    ------

    Is there any patch ? What should we (users of jdbc 1.4) do ?
    thanks
  • 142612
    142612 Member Posts: 5
    The 10g driver apparently keeps a global serial number for all parameters in the entire batch, with a "short" variable. So you can have at most 32768 parameters in the batch. I was having the same exception because I have a INSERT statement with 42 parameters and my batches can be as big as 1000 records, so 42000 > 32768 and this overflows to a negative index. I reduced the batch factor to 100 to be safe, and all is well. I guess your update DML should have a larger number of parameters per record, right? (My diagnostic of the bug is just deduction from the symptoms)
  • 734271
    734271 Member Posts: 1
    I downloaded and installed Oracle 10g release 2 from the official website. The JDBC version is 10.2.0.1.0 which contains BUG-6396242. I want to upgrade the JDBC to version 11.1.0.7.0. However, it's from Oracle Database 11g Release 1. And I don't have the Metalink account. How can I upgrade it?
This discussion has been closed.