Is Tuxedo 12.1.3 node dependent and how tuxedo application works if oracle database node fails — oracle-tech

    Forum Stats

  • 3,715,756 Users
  • 2,242,858 Discussions
  • 7,845,559 Comments

Discussions

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Is Tuxedo 12.1.3 node dependent and how tuxedo application works if oracle database node fails

User_9QYXH
User_9QYXH Member Posts: 4 Green Ribbon
edited August 2020 in Tuxedo

Our legacy c++ application is deployed in Tuxedo 12.1.3(32 bit). Our database is Oracle19C. Operating system is Oracle Linux 7.7. We use distributed XA application to connect from Tuxedo layer to database layer.

Tuxedo is configured in high availability mode(with option MODEL   MP). There are two instances of Tuxedo deployed to two linux virtual machines with machine 1 as Master and Machine 2 as slave.

Database service is deployed to a single oracle instance. Database service is accessible via two database nodes(multi-clustered). Picture is given below.

We are facing a problem while we configure database service in tuxedo layer. We are not able to add database service name in the tuxedo configuration file. Instead Tuxedo expects data-base node information to be hard-coded in the tuxedo configuration file. Example is given below. So when a specific database node fails, tuxedo instance(server groups), which is connected to that node becomes non-responsive. In other words, tuxedo is Database node dependent. This is not helping to achieve real RAC failover properties.  But Tuxedo 12.1.3 documentation says that Tuxedo is supporting Oracle RAC properties. Could you please review the same and let us know if this is a known issue.

Our Current Tuxedo Configuration is mentioned below. Here, tuxedo expects sqlnet = node. So node failover is not handled in 12.1.3.

NB: - We have not taken Tuxedo  advanced performance pack

*GROUPS

DEFAULT:

        LMID=<LM ID of the machine 1>

"<GROUP 1>"       LMID="<LM ID of the machine 1>" GRPNO=1

OPENINFO="Oracle_XA:Oracle_XA+ACC=P/<DB Username>/<DB Password>+Sqlnet=<NODE1>+SesTm=0+LogDir=./Logs+DbgFl=15+OBJECTS=TRUE"

TMSNAME="TMS_ORA"

        TMSCOUNT=5

"<GROUP 2>"    LMID="<LM ID of the machine 1>"    GRPNO=5

OPENINFO="Oracle_XA:Oracle_XA+ACC=P/<DB Username>/<DB Password>+Sqlnet=<NODE1>+SesTm=0+LogDir=./Logs+DbgFl=15+OBJECTS=TRUE"

TMSNAME="TMS_ORA"

        TMSCOUNT=5

        LMID=<LM ID of the machine 2>

"<GROUP 1>"       LMID="<LM ID of the machine 2>" GRPNO=1

OPENINFO="Oracle_XA:Oracle_XA+ACC=P/<DB Username>/<DB Password>+Sqlnet=<NODE2>+SesTm=0+LogDir=./Logs+DbgFl=15+OBJECTS=TRUE"

TMSNAME="TMS_ORA"

        TMSCOUNT=5

"<GROUP 2>"    LMID="<LM ID of the machine 2>"    GRPNO=5

OPENINFO="Oracle_XA:Oracle_XA+ACC=P/<DB Username>/<DB Password>+Sqlnet=<NODE2>+SesTm=0+LogDir=./Logs+DbgFl=15+OBJECTS=TRUE"

TMSNAME="TMS_ORA"

        TMSCOUNT=5

  1. tnsnames.ora

We want to use sqlnet= DB_SERVICE_1 in tuxedo configuration. Tuxedo is not supporting it. Instead we are forced to set up sqlnet= NODE1. So if NODE1 fails, server groups attached to NODE1 also fails. This truly doesn’t support Oracle RAC

NODE1 =

(DESCRIPTION =

   (ADDRESS_LIST =

       (ADDRESS = (PROTOCOL = TCP)(HOST = Virtual IP 1)(PORT = 1521))

       )

       (CONNECT_DATA =

   (SERVICE_NAME = DB_SERVICE_1)

       )

)

NODE2 =

(DESCRIPTION =

   (ADDRESS_LIST =

       (ADDRESS = (PROTOCOL = TCP)(HOST = Virtual IP 2)(PORT = 1521))

       )

       (CONNECT_DATA =

   (SERVICE_NAME = DB_SERVICE_1))

       )

)

Answers

  • Todd Little-Oracle
    Todd Little-Oracle Member Posts: 1,616 Employee
    edited August 2020

    Hi,

    I would suggest you ask this question in one of the Oracle Database forums, as Tuxedo doesn't have any information about what is in an OPENINFO string.  It's what gets passed to the xa_open() call, and the xa_open() implementation is provided by the resource manager, i.e., Oracle Database.

    -tl

Sign In or Register to comment.