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 MARCH 07, 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.

NOTE: In the images and/or the document content below, the user information and data used represents fictitious data from the Oracle sample schema(s) or Public Documentation delivered with an Oracle database product. Any similarity to actual persons, living or dead, is purely coincidental and not intended in any manner.

Symptoms

On fail-over 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 behavior

SQL> connect <user_name>/******
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 <user_name>/******
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


My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.