2012-02-21 46 views
1

私は春/休止状態のセットアップでjtaのbitronixを使用し始めましたが、すべてH2とPostgresで正常に動作しますが、Oracleでは失敗します。Oracle XAException - XAリカバリ失敗

特権の付与に関するその他のオンライン投稿に続きましたが、それでも問題は解決しません。 これを修正する方法のアイデアですか?

私は、これらのPermisions設定:

GRANT SELECT ON sys.dba_pending_transactions TO user; 
GRANT SELECT ON sys.pending_trans$ TO user; 
GRANT SELECT ON sys.dba_2pc_pending TO user; 
GRANT EXECUTE ON sys.dbms_system TO user: 

をそして、まだ私はこの問題には二つの理由見ることができます。このエラー

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'liquibase' defined in class path resource [spring/liquibaseContext.xml]: Invocation of init method failed; nested exception is org.hibernate.JDBCException: Error updating database 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464) 
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:282) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:204) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) 
    at com.xxxx.spring.config.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:19) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3934) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4429) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526) 
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:630) 
    at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:556) 
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:491) 
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1206) 
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:314) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:722) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) 
    at org.apache.catalina.core.StandardService.start(StandardService.java:516) 
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:583) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) 
Caused by: org.hibernate.JDBCException: Error updating database 
    at com.xxx.db.liquibase.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:288) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452) 
    ... 37 more 
Caused by: java.sql.SQLException: unable to get a connection from pool of a PoolingDataSource containing an XAPool of resource xaDataSource with 5 connection(s) (5 still available) -failed- 
    at bitronix.tm.resource.jdbc.PoolingDataSource.getConnection(PoolingDataSource.java:252) 
    at com.xxxx.db.liquibase.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:280) 
    ... 39 more 
Caused by: bitronix.tm.internal.BitronixRuntimeException: incremental recovery failed when trying to acquire a connection from failed resource 'xaDataSource' 
    at bitronix.tm.resource.common.XAPool.getConnectionHandle(XAPool.java:109) 
    at bitronix.tm.resource.common.XAPool.getConnectionHandle(XAPool.java:97) 
    at bitronix.tm.resource.jdbc.PoolingDataSource.getConnection(PoolingDataSource.java:248) 
    ... 40 more 
Caused by: bitronix.tm.recovery.RecoveryException: failed recovering resource xaDataSource 
    at bitronix.tm.recovery.IncrementalRecoverer.recover(IncrementalRecoverer.java:104) 
    at bitronix.tm.resource.common.XAPool.getConnectionHandle(XAPool.java:106) 
    ... 42 more 
Caused by: javax.transaction.xa.XAException 
    at oracle.jdbc.xa.OracleXAResource.recover(OracleXAResource.java:709) 
    at bitronix.tm.recovery.RecoveryHelper.recover(RecoveryHelper.java:103) 
    at bitronix.tm.recovery.RecoveryHelper.recover(RecoveryHelper.java:61) 
    at bitronix.tm.recovery.IncrementalRecoverer.recover(IncrementalRecoverer.java:64) 
    ... 43 more 
+0

私は、次の設定を使用して、この問題を得た:Oracle11gR1データベース、bitronix 2.1.2は、Hibernate 3.3.2.GAは、方言を休止:org.hibernate.dialect.Oracle10gDialect、XA DataSourceクラスを: oracle.jdbc.xa.client.OracleXADataSource、JDBCドライバ・クラス:oracle.jdbc.OracleDriver (oracle.jdbc.driver.OracleDriverとともに試してみました) – Marco

答えて

1

を得た:

1)Oracleは最近、権限セットを変更

2)ユーザーに権限を正しく与えていないプールが設定されています。

問題は、(1)、あなたはその後、我々はそれがなら、この組み合わせは仕事

にするために行われる必要があるかを見ることができ、使用しているDBおよびJDBCドライバの正確なバージョンを提供しなければならない場合には(2)、ユーザーの特権を再確認する必要があります。これを行う最も簡単で安全な方法は、JDBCクライアント(Squirrel SQLなど)を使用してDBに接続し、上記の3つのビューから選択できることと、dbms_systemのいずれかを実行できるかどうかを確認することです。ストアドプロシージャ。

1

問題が元々どのように解決されたかわかりません。

しかし、同じエラーが発生していましたが、以下の追加クエリを使用しても問題は解決しました。

grant execute on dbms_xa to <user>; --(If using Oracle 10.2.0.4 or higher JDBC driver) 

Reference

関連する問題