Oracle DB error - WARNING: bitronix.tm.recovery.Recoverer error running recovery on resource 'jdbc/bonitaDSXA'

marielle.spiteri's picture
marielle.spiteri
Blog Categories: 

Component: Bonita Engine | Version: All

Oracle Database error - WARNING: bitronix.tm.recovery.Recoverer error running recovery on resource 'jdbc/bonitaDSXA', resource marked as failed (background recoverer will retry recovery) (error=XAER_RMERR)

I am having this error when starting Bonita, what can be happening :

2018-09-21 10:10:47.785 +0200 WARNING: bitronix.tm.recovery.Recoverer error running recovery on resource 'jdbc/bonitaDSXA', resource marked as failed (background recoverer will retry recovery) (error=XAER_RMERR)
javax.transaction.xa.XAException
at oracle.jdbc.xa.OracleXAResource.recover(OracleXAResource.java:730)
at bitronix.tm.recovery.RecoveryHelper.recover(RecoveryHelper.java:103)
at bitronix.tm.recovery.RecoveryHelper.recover(RecoveryHelper.java:61)
at bitronix.tm.recovery.Recoverer.recover(Recoverer.java:259)
at bitronix.tm.recovery.Recoverer.recoverAllResources(Recoverer.java:226)
at bitronix.tm.recovery.Recoverer.run(Recoverer.java:142)
at bitronix.tm.BitronixTransactionManager.<init>(BitronixTransactionManager.java:87)
at bitronix.tm.TransactionManagerServices.getTransactionManager(TransactionManagerServices.java:75)
at bitronix.tm.integration.tomcat55.BTMLifecycleListener.lifecycleEvent(BTMLifecycleListener.java:18)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:388)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:144)
at org.apache.catalina.startup.Catalina.start(Catalina.java:693)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:428)

Answer

This usually happens when the "GRANT" queries are not done correctly on the database. In the Documentation: https://documentation.bonitasoft.com/bonita/7.9/database-configuration#toc5

Resolution

The following queries must be done for each new user: i.e. one user = one database schema (here it's bonita).

For Bonita version 7.8 and lower:

SQL query >

CREATE USER bonita IDENTIFIED BY bonita;
GRANT connect, resource TO bonita IDENTIFIED BY bonita;
GRANT select ON sys.dba_pending_transactions TO bonita;
GRANT select ON sys.pending_trans$ TO bonita;
GRANT select ON sys.dba_2pc_pending TO bonita;
GRANT execute ON sys.dbms_system TO bonita;
GRANT select ON sys.v$xatrans$ TO bonita;
GRANT execute ON sys.dbms_xa TO bonita;
GRANT FORCE ANY TRANSACTION TO bonita;

For Bonita version 7.9 and higher:

SQL query >

CREATE USER bonita IDENTIFIED BY bonita;
GRANT connect, resource TO bonita IDENTIFIED BY bonita;
GRANT select ON sys.dba_pending_transactions TO bonita;
GRANT select ON sys.pending_trans$ TO bonita;
GRANT select ON sys.dba_2pc_pending TO bonita;
GRANT execute ON sys.dbms_system TO bonita;
GRANT execute ON sys.dbms_xa TO bonita;
GRANT FORCE ANY TRANSACTION TO bonita;
ALTER USER bonita quota unlimited on users;

Comments

Submitted by pinerodanie_1404393 on Tue, 07/09/2019 - 07:10

Porfavor tengo el mismo error me pudieras decir si lo solucionaste y como? Gracias de antemano

Submitted by marielle.spiteri on Tue, 11/26/2019 - 01:01

Hi pinerodanie,

Here is the solution:
See documentation online: https://documentation.bonitasoft.com/bonita/7.9/database-configuration#toc5

The following queries must be done for each new user: i.e. one user = one database schema (here the oracle user is bonita).

For Bonita version 7.8 and lower:

SQL query >

CREATE USER bonita IDENTIFIED BY bonita;
GRANT connect, resource TO bonita IDENTIFIED BY bonita;
GRANT select ON sys.dba_pending_transactions TO bonita;
GRANT select ON sys.pending_trans$ TO bonita;
GRANT select ON sys.dba_2pc_pending TO bonita;
GRANT execute ON sys.dbms_system TO bonita;
GRANT select ON sys.v$xatrans$ TO bonita;
GRANT execute ON sys.dbms_xa TO bonita;
GRANT FORCE ANY TRANSACTION TO bonita;

For Bonita version 7.9 and higher:

SQL query >

CREATE USER bonita IDENTIFIED BY bonita;
GRANT connect, resource TO bonita IDENTIFIED BY bonita;
GRANT select ON sys.dba_pending_transactions TO bonita;
GRANT select ON sys.pending_trans$ TO bonita;
GRANT select ON sys.dba_2pc_pending TO bonita;
GRANT execute ON sys.dbms_system TO bonita;
GRANT execute ON sys.dbms_xa TO bonita;
GRANT FORCE ANY TRANSACTION TO bonita;
ALTER USER bonita quota unlimited on users;

I hope it helps,

Notifications