My Oracle Support Banner

Tuxedo failover does not recover automatically due to incorrect mapping of ORA-00028 to XAER_RMERR (-3) instead of XAER_RMFAIL (-7) (Doc ID 1991777.1)

Last updated on FEBRUARY 03, 2019

Applies to:

Oracle Database - Enterprise Edition - Version 11.2.0.1 to 12.1.0.1 [Release 11.2 to 12.1]
Information in this document applies to any platform.

Symptoms

On failover Tuxedo does not reconnect because the returned error ORA-28 is incorrectly mapped to XAER_RMERR (-3) instead of XAER_RMFAIL (-7). This issue is addressed by the fix for <Bug 17374130>.

Even after application of <Patch 17374130> to the client side an XAER_RMERR can be reported on the next xa_start() after a failed xa_end() depending on whether the session is killed with or without the immediate option.

For the default kill session we essentially get the following behaviour

SQL> connect bankapp1/bankapp1
Connected.
SQL> select user from dual;
select user from dual
*
ERROR at line 1:
ORA-00028: your session has been killed

and then

SQL> select user from dual;
select user from dual
*
ERROR at line 1:
ORA-01012: not logged on
Process ID: 1676
Session ID: 129 Serial number: 7

whereas for the immediate we get

SQL> connect bankapp1/bankapp1
Connected.
SQL> select user from dual;
select user from dual
*
ERROR at line 1:
ORA-03135: connection lost contact
Process ID: 3129
Session ID: 129 Serial number: 9

In the first case the shadow process from the initial client connection is still present even though the session has been killed while in the latter it is not.

From a database perspective the behaviour we observe in terms of the error messages is expected as per the documentation

Terminating an Active Session

If a user session is processing a transaction (ACTIVE status) when you terminate the session, the transaction is rolled back and the user immediately receives the following message:

ORA-00028: your session has been killed

If, after receiving the ORA-00028 message, a user submits additional statements before reconnecting to the database, Oracle Database returns the
following message:

ORA-01012: not logged on

In the XA trace for both cases we see

xaoend: return 100

and then the rollback is attempted and then for the default kill we see

122551.1253650.0:
ORA-01012: not logged on
Process ID: 32319
Session ID: 69 Serial number: 63

and then we see XAER_RMERR returned as per the following

122551.1253650.0:
xaorollback: rtn -3

The expectation would be that this should be a

xaorollback: rtn -7

Cause

To view full details, sign in with your My Oracle Support account.

Don't have a My Oracle Support account? Click to get started!


In this Document
Symptoms
Cause
Solution
References


This document is being delivered to you via Oracle Support's Rapid Visibility (RaV) process and therefore has not been subject to an independent technical review.
My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.