Hi All,
We are facing an intermittent issue in our java+jdbc application. The application fails with 'ORA-08103: object no longer exists' error. I can see the table being referenced is present in the DB. I can select the data and perform select operation. However the exception is thrown when a select query is executed against the table.
It get resolved on its own after some time. I am unable to consistently reproduce it. Also the table which it logs when the JOB fails is also inconsistent.
Below are the steps that we use during our JOB run.
1. Truncate all the output tables.
2. Populate data needs to be processed into a staging table at start of the JOB. This will have huge amount of data (19 million). Data will be deleted manually after job run.
3. Staging table is used to join with other input tables to fetch required input details for further processing.
4. During JOB processing staging table will be used for reading/writing in parallel by multiple JVMs
Object no longer exists error log references to the staging table and output/input tables. None of the tables are partitioned, they use normal indexes, also they are permanent tables. Our DBA verified and nothing is logged in the alert.log, there is no block corruption.
Oracle Version - Release 12.1.0.2.0, DB is hosted on linux machine. Application is installed in windows machine and JOB runs in windows machine.
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [?:1.7.0_75]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [?:1.7.0_75]
at java.lang.Thread.run(Thread.java:745) [?:1.7.0_75]
Caused by: java.sql.SQLException: ORA-08103: object no longer exists
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450) ~[ojdbc7.jar:12.1.0.2.0]
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:399) ~[ojdbc7.jar:12.1.0.2.0]
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1059) ~[ojdbc7.jar:12.1.0.2.0]
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:522) ~[ojdbc7.jar:12.1.0.2.0]
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:257) ~[ojdbc7.jar:12.1.0.2.0]
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:587) ~[ojdbc7.jar:12.1.0.2.0]
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:225) ~[ojdbc7.jar:12.1.0.2.0]
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:53) ~[ojdbc7.jar:12.1.0.2.0]
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:774) ~[ojdbc7.jar:12.1.0.2.0]
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:925) ~[ojdbc7.jar:12.1.0.2.0]
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1111) ~[ojdbc7.jar:12.1.0.2.0]
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:4798) ~[ojdbc7.jar:12.1.0.2.0]
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:4845) ~[ojdbc7.jar:12.1.0.2.0]
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1501) ~[ojdbc7.jar:12.1.0.2.0]