2012-05-30 72 views
0

最近在我的應用程序JPA/Hibernate與數據庫Oracle RAC 11g中出現了以下錯誤。在Hibernate/JPA在Oracle中關閉連接時的部分提交

當我們的存儲是滿的,DBA需要密切的聯繫,殺死活動會話,或一些類似這樣的「連接關閉」(現在我知道發生了什麼,他被解僱了....)

javax.persistence.RollbackException: Error while commiting the transaction 
at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:71) 
at com.cgmp.ValePedagioSite.comprarViagemPorPlaca(ValePedagioSite.java:473) 
at sun.reflect.GeneratedMethodAccessor1719.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
     (...) 
Caused by: org.hibernate.exception.JDBCConnectionException: could not insert: [com.cgmp.model.entity.PedagioPracaViagem] 
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:97) 
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) 
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2295) 
     (...) 
Caused by: java.sql.SQLRecoverableException: Connection closed 
at oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:3331) 
at oracle.jdbc.driver.T2CConnection.prepareStatement(T2CConnection.java:47) 
at oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:3232) 
at oracle.jdbc.driver.T2CConnection.prepareStatement(T2CConnection.java:47) 
at com.mchange.v2.c3p0.impl.NewProxyConnection.prepareStatement(NewProxyConnection.java:213) 
     (...) 
出現此錯誤插入

其他實體沒有問題...

--- EDITED ---

更多信息

配置C3P0

<Resource auth="Container" 
description="" 
driverClass="oracle.jdbc.driver.OracleDriver" 
acquireIncrement="1" 
initialPoolSize="5" 
maxPoolSize="300" 
minPoolSize="5" 
maxIdleTime="600" 
maxIdleTimeExcessConnections="300" 
unreturnedConnectionTimeout="900" 
numHelperThreads="20" 
name="" 
user="" 
password=" " 
factory="org.apache.naming.factory.BeanFactory" 
type="com.mchange.v2.c3p0.ComboPooledDataSource" 
jdbcUrl="jdbc:oracle:oci:" /> 

與其他DBA說到他說,從Oracle 一個實例得到了完整的磁盤,而寄存器部分commiteds在這一刻產生,但他剛剛刪除的跟蹤文件,並沒有停止分貝,而不是殺死任何會話。

+0

正在使用哪種版本的Oracle JDBC驅動程序? –

回答

1

那麼沒有足夠的信息來說明某些事情,但它聽起來像你看到它沒有完成的事務處理。 JDBC規範默默無聞地討論了未完成事務會發生什麼情況。甲骨文是我知道的唯一供應商,因此決定採取最佳行動方式是在這種情況下開展工作。