Java.lang.ArrayIndexOutOfBounds Exception

Issue:

Oracle logs Java out of bounds exception message.

Log message:

Exception: java.lang.ArrayIndexOutOfBoundsException: -32133

Solution:

This can be resolved by updating Oracle with their recommended patch for 11g. This will change the release version from “Release 11.1.0.6.0” to “Release 11.1.0.7.0”. If you have Oracle support, you can download patch cluster 6890831. Before you start the upgrade installer (./runInstaller) you have to first stop collecting CDRs at NexOSS and also stop Oracle.

  • To stop pulling CDRs you can just stop NexOSS all together using stop_NexOSS.sh.

    $ cd $NexOSS_HOME/unix/run
    $ ./stop_NexOSS.sh
    
  • To stop Oracle you can change to the root user and execute the following:

    # /etc/init.d/dbora stop
    
  • Put the patch into the /ORA directory and then follow the steps below.

    Note: You will need an SSH client on your PC that will allow X11 tunneling to the server as well as an X server running in passive mode. This is the only way that you will be able to display the Oracle installer GUI unless you are working directly from the console of the server.

  • Patch Installation

    $ unzip p6890831_111070_Linux-x86-64.zip
    $ cd Disk1
    $ ./runInstaller
    Starting Oracle Universal Installer...
    Preparing to launch Oracle Universal Installer from
    Oracle Universal Installer, Version 11.1.0.7.0 Production
    Copyright (C) 1999, 2008, Oracle. All rights reserved.
    

    You will receive notice before the process is complete to perform the step below.

  • Open another SSH window as root to perform this step at the appropriate time.

    $ su -
    root's password:
    # /u00/app/oracle/product/11.1/db_1/root.sh
    Running Oracle 11g root.sh script...
    # exit
    
  • Post-Patch Procedures:

    $ sqlplus / as sysdba
    SQL*Plus: Release 11.1.0.7.0 - Production on Sat Sep 20 11:10:35 2008
    Copyright (c) 1982, 2008, Oracle. All rights reserved.
    Connected to an idle instance.
    SQL> startup quiet migrate
    ORACLE instance started.
    Database mounted.
    Database opened.
    SQL> set time on
    11:42:21 SQL> sho parameter sga_target
    NAME TYPE VALUE
    ++++++++++++++++++++++++++++++++++++--
    sga_target big integer 200M
    11:42:25 SQL> alter system set sga_target=300m scope=spfile;
    System altered.
    11:42:28 SQL> shutdown immediate
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    11:42:43 SQL> startup quiet migrate
    ORACLE instance started.
    Database mounted.
    Database opened.
    11:43:01 SQL> @?/rdbms/admin/catupgrd (This will take some hours to complete)
    ~
    11:54:03 SQL> Rem END catupgrd.sql
    11:54:03 SQL> startup
    ORACLE instance started.
    Total System Global Area 313159680 bytes
    Fixed Size 2159272 bytes
    Variable Size 226495832 bytes
    Database Buffers 79691776 bytes
    Redo Buffers 4812800 bytes
    Database mounted.
    Database opened.
    11:56:28 SQL> select comp_name,status,version from dba_registry;
    COMP_NAME STATUS VERSION
    ++++++++++++++++++++++++++++++++++++--
    Oracle Ultra Search VALID 11.1.0.7.0
    Oracle XML Database VALID 11.1.0.7.0
    Oracle Text VALID 11.1.0.7.0
    Oracle Expression Filter VALID 11.1.0.7.0
    Oracle Rules Manager VALID 11.1.0.7.0
    Oracle Workspace Manager VALID 11.1.0.7.0
    Oracle Database Catalog Views VALID 11.1.0.7.0
    Oracle Database Packages and Types VALID 11.1.0.7.0
    JServer JAVA Virtual Machine VALID 11.1.0.7.0
    Oracle XDK VALID 11.1.0.7.0
    Oracle Database Java Packages VALID 11.1.0.7.0
    

    The dbstart and dbshut scripts will have to be edited upon completion to include the path for ORACLE_HOME_LISTNER.

  • Navigate to the bin directory for Oracle and edit dbstart and dbshut.

    $ cd $ORACLE_HOME/bin
    $ vi dbstart
    $ vi dbshut
    

    For both scripts change this:

    ORACLE_HOME_LISTNER=$1
    

    to this:

    ORACLE_HOME_LISTNER=/ORA/oracle/product/11.1.0/db_1