I have a question about the connection between tuxedo service and Oracle.
In machine A(Solaris platform), there is a Tuxedo environment with about 100 Tuxedo service written in Pro*c. The logic flow of these Tuxedo service is to interface with Oracle 11g Database(Linux platform).
In tpinit() of Tuxedo service, it will connect to the Oracle. It is so-called long-connection mechanism with database. When the connection is cut by firewall(Between Tuxedo server and Oracle database server), Tuxedo service will receive ORA-03113 or ORA-03114 error code and then call TPEXIT to reboot this service in order to reestablish the connection with database.
The timeout parameter of firewall is set to 20min. In my opinion, if a Tuxedo service hasn't any call to database for 20min, the connection between this Tuxedo service and the database will be cut. This Tuxedo service needs to reconnect to the database.
To my surprise, I ran a Tuxedo service yesterday afternoon and ran again this morning. It doesn't show the connection is cut. In application log file, there is no record about the connection reestablishment for this Tuxedo service.
There are some records in firewall. For example,
190.1.0.1: Tuxedo server machine IP
192.1.0.1: Oracle database server machine IP (Port: 1523)
------------------
display firewall session table verbose source global 190.1.0.1
2018-06-07 10:12:30.110 +08:00
Current Total Sessions : 1
tcp VPN: public --> public ID: ...
Zone: DCI --> APPDB Slot: 1 CPU: 3 TTL: 00:20:00 Left: 00:18:10
Interface: Eth-Trunk2 NextHop: 10.10.10.10
<--packets: 749 bytes: 139,608 --> packets: 1489 bytes: 165,291
190.1.0.1:60706 --> 192.1.0.1:1523 PolicyName: DCI2APPDB
display firewall session table verbose source global 190.1.0.1
2018-06-07 10:12:40.360 +08:00
Current Total Sessions : 1
tcp VPN: public --> public ID: ...
Zone: DCI --> APPDB Slot: 1 CPU: 3 TTL: 00:20:00 Left: 00:20:00
Interface: Eth-Trunk2 NextHop: 10.10.10.10
<--packets: 750 bytes: 139,796 --> packets: 1491 bytes: 165,509
190.1.0.1:60706 --> 192.1.0.1:1523 PolicyName: DCI2APPDB
------------------
display firewall session table verbose source global 190.1.0.1
2018-06-07 10:12:30.110 +08:00
Current Total Sessions : 1
tcp VPN: public --> public ID: ...
Zone: DCI --> APPDB Slot: 1 CPU: 3 TTL: 00:20:00 Left: 00:18:01
Interface: Eth-Trunk2 NextHop: 10.10.10.10
<--packets: 749 bytes: 139,608 --> packets: 1491 bytes: 165,509
190.1.0.1:60706 --> 192.1.0.1:1523 PolicyName: DCI2APPDB
display firewall session table verbose source global 190.1.0.1
2018-06-07 10:12:40.360 +08:00
Current Total Sessions : 1
tcp VPN: public --> public ID: ...
Zone: DCI --> APPDB Slot: 1 CPU: 3 TTL: 00:20:00 Left: 00:19:59
Interface: Eth-Trunk2 NextHop: 10.10.10.10
<--packets: 750 bytes: 139,796 --> packets: 1493 bytes: 165,727
190.1.0.1:60706 --> 192.1.0.1:1523 PolicyName: DCI2APPDB
------------------
...
From the above, there is a packet every 2 min. The direction is from Tuxedo server to Oracle database.
In Oracle server,
1. In /etc/sysctl.conf, "net.ipv4.tcp_keepalive_time" is not set.
2. "sqlnet.ora" is not created.
In Tuxedo service, there is no logic about trying to connect to the database every 2 min.
In Tuxedo server, about “190.1.0.1:60706”, the output of "netstat -anp | grep 60706" is empty.
The question is which one sends a packet every 2 min from Tuxedo server to Oracle?
Is it the mechanism of keep alive from Tuxedo?
How to change the time of sending packet?
Thanks for your advice.