Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jasper报告错误:ORA-01555:快照太旧:名称为“的回滚段编号”&引用;太小ORA-22924:快照太旧_Java_Oracle_Hibernate_Jasper Reports - Fatal编程技术网

Java Jasper报告错误:ORA-01555:快照太旧:名称为“的回滚段编号”&引用;太小ORA-22924:快照太旧

Java Jasper报告错误:ORA-01555:快照太旧:名称为“的回滚段编号”&引用;太小ORA-22924:快照太旧,java,oracle,hibernate,jasper-reports,Java,Oracle,Hibernate,Jasper Reports,当我使用Jasper作为接口时,有时接口调用Jasper并生成报告,然后我们得到如下异常: ================================================================================ org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: Could not execute JDBC batch update; unc

当我使用Jasper作为接口时,有时接口调用Jasper并生成报告,然后我们得到如下异常:

================================================================================
org.springframework.jdbc.UncategorizedSQLException: 
    Hibernate operation: Could not execute JDBC batch update; 
    uncategorized SQLException for SQL [update JIRepositoryCache set data=?, version=?, version_date=?, item_reference=? where id=?]; 
SQL state [72000]; 
error code [1555]; ORA-01555: snapshot too old: rollback segment number  with name "" too small
ORA-22924: snapshot too old

; nested exception is java.sql.BatchUpdateException: ORA-01555: snapshot too old: rollback segment number  with name "" too small


ORA-22924: snapshot too old



    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)

    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)

    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)

    at org.springframework.orm.hibernate3.HibernateAccessor.convertJdbcAccessException(HibernateAccessor.java:424)

    at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:410)

    at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:424)

    at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)

    at org.springframework.orm.hibernate3.HibernateTemplate.findByCriteria(HibernateTemplate.java:1055)

    at org.springframework.orm.hibernate3.HibernateTemplate.findByCriteria(HibernateTemplate.java:1048)

    at com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryCache.getCachedItem(HibernateRepositoryCache.java:126)

    at com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryCache.getCachedItem(HibernateRepositoryCache.java:99)

    at com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryCache.cache(HibernateRepositoryCache.java:67)

    at sun.reflect.GeneratedMethodAccessor556.invoke(Unknown Source)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

    at java.lang.reflect.Method.invoke(Method.java:597)

    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)

    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)

    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)

    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)

    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)

    at com.jaspersoft.jasperserver.api.common.util.spring.ReattemptMethodInterceptor.invoke(ReattemptMethodInterceptor.java:51)

    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)

    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)

    at $Proxy16.cache(Unknown Source)

    at com.jaspersoft.jasperserver.multipleTenancy.PathTransformationRepositoryCache.cache(PathTransformationRepositoryCache.java:52)

    at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.getCompiledReport(EngineServiceImpl.java:897)

    at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.getJasperReport(EngineServiceImpl.java:659)

    at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.fillReport(EngineServiceImpl.java:369)

    at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.executeReport(EngineServiceImpl.java:872)

    at com.jaspersoft.jasperserver.api.engine.jasperreports.domain.impl.ReportUnitRequest.execute(ReportUnitRequest.java:57)

    at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.execute(EngineServiceImpl.java:319)

    at com.jaspersoft.ji.engine.ProEngineServiceImpl.execute(ProEngineServiceImpl.java:132)

    at com.jaspersoft.jasperserver.api.engine.scheduling.quartz.ReportExecutionJob.executeReport(ReportExecutionJob.java:494)

    at com.jaspersoft.ji.report.options.engine.ReportOptionsExecutionJob.executeReport(ReportOptionsExecutionJob.java:103)

    at com.jaspersoft.jasperserver.api.engine.scheduling.quartz.ReportExecutionJob.executeAndSendReport(ReportExecutionJob.java:422)

    at com.jaspersoft.jasperserver.api.engine.scheduling.quartz.ReportExecutionJob.execute(ReportExecutionJob.java:231)

    at org.quartz.core.JobRunShell.run(JobRunShell.java:195)

    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:520)

Caused by: java.sql.BatchUpdateException: ORA-01555: snapshot too old: rollback segment number  with name "" too small

ORA-22924: snapshot too old



    at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:343)

    at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10698)

    at org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)

    at org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)

    at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)

    at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)

    at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266)

    at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:168)

    at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:322)

    at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)

    at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1028)

    at org.springframework.orm.hibernate3.HibernateAccessor.flushIfNecessary(HibernateAccessor.java:390)

    at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:420)

    ... 32 more
================================================================================
在数据库中,没有出现ORA-015555和ORA-22924。我们将undo_保留参数增加到8小时,但仍然存在问题


有没有人以前遇到过这个问题,有什么解决办法

可能您试图一次读取太多LOB。 如果是,那么

  • 尝试重新定义要读取的示例LOB(可能的原因是从具有多个LOB的表\U中选择*。删除该LOB,问题就解决了。)
  • 尝试增加保留区大小(读取)
  • 尝试调整用于保留每列保留数据的默认存储百分比。像

    更改表您的LOB表修改LOB(LOB列名称)(PCTVERSION 50)

  • 比如说。
    希望这有帮助)

    这是一个关于这个问题的非常好的页面:

    Oracle使用回滚段存储数据库中更改的数据 交易如果出现以下情况,此数据用于恢复原始数据: 回滚发生在事务中

    此外,回滚段中的数据用于保证 阅读一致性。也就是说,一个查询总是看到相同的数据 虽然它可能在查询的中间被修改。

    如果回滚段空间不足,则会出现ORA-01555


    您使用的是什么Oracle版本?事实上,我认为这个问题与Oracle版本无关。请注意,答案应该是搜索解决方案的终点(而不是另一个参考的中途停留,随着时间的推移,它往往会过时)。请考虑在这里添加一个独立的概要,将链接作为参考。