Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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
Oracle XAException-XA恢复失败_Oracle_Hibernate_Spring_Jta_Xa - Fatal编程技术网

Oracle XAException-XA恢复失败

Oracle XAException-XA恢复失败,oracle,hibernate,spring,jta,xa,Oracle,Hibernate,Spring,Jta,Xa,我刚开始在spring/hibernate设置中使用bitronix for jta,在H2和Postgres下一切正常,但在Oracle下失败 我关注了其他关于授予特权的在线帖子,但问题仍然存在。 有没有办法解决这个问题 我设定了以下权限: GRANT SELECT ON sys.dba_pending_transactions TO user; GRANT SELECT ON sys.pending_trans$ TO user; GRANT SELECT ON sys.dba_2pc_pe

我刚开始在spring/hibernate设置中使用bitronix for jta,在H2和Postgres下一切正常,但在Oracle下失败

我关注了其他关于授予特权的在线帖子,但问题仍然存在。 有没有办法解决这个问题

我设定了以下权限:

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

我可以看出这个问题的两个原因:

1) Oracle最近更改了权限集

2) 您没有正确地向配置连接池的用户授予权限

如果问题是(1),您应该提供您正在使用的DB和JDBC驱动程序的确切版本,然后我们可以看到需要做什么才能使这种组合工作


如果是(2),您应该仔细检查用户的权限。最简单、最安全的方法是使用JDBC客户端(如Squirrel SQL)连接到数据库,检查您是否可以从上面提到的3个视图中进行选择,并尝试检查您是否可以执行dbms_系统存储过程之一。

我不确定问题最初是如何解决的

grant execute on dbms_xa to <user>; --(If using Oracle 10.2.0.4 or higher JDBC driver)
然而,我也得到了同样的错误,并使用下面的附加查询解决了问题

grant execute on dbms_xa to <user>; --(If using Oracle 10.2.0.4 or higher JDBC driver)
将在dbms_xa上执行的命令授予--(如果使用Oracle 10.2.0.4或更高版本的JDBC驱动程序)

我使用以下设置遇到了这个问题:Oracle11gR1数据库、bitronix 2.1.2、Hibernate 3.3.2.GA、Hibernate方言:org.Hibernate.dialent.Oracle10gDialent、XA数据源类:oracle.jdbc.XA.client.OracleXADataSource、jdbc驱动程序类:oracle.jdbc.OracleDriver(也用oracle.jdbc.Driver.OracleDriver进行了尝试)