项目场景:
最近排查线上问题时,发现error日志中有几条提示SQL异常
问题描述
异常提示信息如下:
uncategorized SQLException; SQL state [72000]; error code [8103]; ORA-08103: object no longer exists
nested exception is java.sql.SQLException: ORA-08103: object no longer exists
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:89)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:88)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:440)
at com.sun.proxy.$Proxy118.selectOne(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:159)
原因分析:
oracle文档解释:
ORA-08103: object no longer exists
Cause: The object has been deleted by another user since the operation began, or a prior incomplete recovery restored the database to a point in time during the deletion of the object.
Action: Delete the object if this is the result of an incomplete recovery.
ORA-08103表示在进行持久操作时找不到某个对象,具体地说,就是表或视图不能因为已经丢失或被删除,但是还有指向它的对象的句柄。在开发数据库过程中,很可能会碰到这个错误,这个错误是由于表或视图被删除或不存在,但是SQL查询还是链接到该表或视图。
ORA-08103: 对象不再存在
结合文档解释,去数据库排查。发现那张临时表数据量比较大,有访问压力后,表被人truncate了。