🚨 Oracle not porting Rdb to x86 and EOL on Itanium 12/2027 🚨
Technical Capabilities
Having trouble finding what you need?
Get in touch with us, so we can answer your specific questions directly.
Get In Touch

VX/TUXEDO - Tuxedo for x86 OpenVMS, wire compatible with Oracle Tuxedo

Overview

VX/TUXEDO is Tuxedo for OpenVMS x86: an ATMI and FML runtime, server framework and Oracle-compatible TDOMAIN and /Workstation protocol stack that runs natively on OpenVMS x86 and speaks Oracle Tuxedo's own wire protocols. For TDOMAIN and /Workstation service calls it is wire compatible with Oracle Tuxedo 22.1.1. A VX/TUXEDO domain on x86 exchanges calls with Oracle Tuxedo domains over TDOMAIN in both directions, and unmodified Oracle Tuxedo /Workstation clients connect to it and call its services.

That means a Tuxedo estate does not have to move in one step. Bring your OpenVMS Tuxedo services to x86 one domain at a time, while the rest of the estate, its Oracle Tuxedo 22.1.1 domains and their clients, keeps running and keeps calling them. Your C services compile against the same ATMI and FML32 headers and build with the same buildserver command, and in measured head-to-head runs on the same Linux host, VX/TUXEDO handles more calls per second than Oracle Tuxedo 22.1.1.

<div class="s7-tech-embed" data-technical-mega-embed="1" lang="en"> <h2 id="wire">Wire compatible with Oracle Tuxedo</h2><p> VX/TUXEDO does not translate or proxy. It speaks the same protocols Oracle Tuxedo speaks, in Oracle's own frame layouts, so Oracle's own gateways and clients talk to it directly. Every row below is verified live against Oracle Tuxedo 22.1.1, and TDOMAIN calls with STRING and FML32 buffers, <code>TPFAIL</code> replies and gateway failover also run natively from OpenVMS x86 against Oracle. </p><div class="table-wrapper"><table><thead><tr><th>Protocol</th><th>What interoperates</th></tr></thead><tbody> <tr><td>TDOMAIN (Oracle's GWTDOMAIN domain gateway)</td><td>Both directions: Oracle Tuxedo domains call services hosted by VX/TUXEDO, and VX/TUXEDO services call Oracle-hosted services through Oracle's gateway.</td></tr> <tr><td>/Workstation (WSL and WSH)</td><td>Unmodified Oracle Tuxedo /Workstation clients connect to VX/TUXEDO and call its services.</td></tr> <tr><td>Typed buffers on the wire</td><td>STRING, CARRAY and X_OCTET buffers, FML32 buffers carrying the seven core field types (short, long, char, float, double, string and carray), and FML buffers with string fields.</td></tr> <tr><td>Call styles</td><td><code>tpcall</code>, <code>tpacall</code> / <code>tpgetrply</code>, <code>TPNOREPLY</code>, and application failures returned as <code>TPFAIL</code>.</td></tr> <tr><td>Domain resilience</td><td>Oracle Tuxedo domains configured with <code>FAILOVERSEQ</code>, domain-level failover, mirrored gateways and <code>DMKEEPALIVE</code> fail over to, fail back to and keep alive their links with VX/TUXEDO domains, which answer Oracle's keepalives in Oracle's own format. Links reconnect after a drop.</td></tr> </tbody></table></div> <h6>Verified against real Oracle Tuxedo</h6><ul> <li>The protocols were captured from live Oracle Tuxedo 22.1.1 and reimplemented to match it: 586 captured Oracle reply frames, Oracle's forwarded <code>tpforward</code> reply among them, decode and re-encode byte for byte.</li> <li>A live regression gate on Linux runs VX/TUXEDO's TDOMAIN protocol code through 17 scenarios against real Oracle Tuxedo 22.1.1 (STRING, FML32, CARRAY, X_OCTET, FML, <code>TPFAIL</code>, <code>TPNOREPLY</code>, null replies, long service names, outbound calls from VX/TUXEDO, reconnect, failover, failback, mirrored gateways, keepalive), and passed all 17 on 29 October 2026.</li> <li>From native OpenVMS x86 to Oracle Tuxedo, TDOMAIN calls with STRING and FML32 buffers and <code>TPFAIL</code> replies pass in both directions, including failover from a primary to a secondary gateway.</li> </ul> <h2 id="migrate">Move one domain at a time</h2><p> Because VX/TUXEDO is a peer on Oracle's own protocols, a migration is a sequence of small, reversible steps rather than one cut-over: </p><ol> <li>Build your OpenVMS Tuxedo services on x86 with VX/TUXEDO, against the same headers.</li> <li>Join the new x86 domain to the existing estate through TDOMAIN. Oracle Tuxedo domains reach its services through their own GWTDOMAIN gateways.</li> <li>Keep /Workstation clients where they are: unmodified Oracle Tuxedo clients connect to VX/TUXEDO.</li> <li>Move the next domain when the last one is proven. Nothing else in the estate has to change at the same time.</li> </ol> <h2 id="build">Same headers, same build</h2><ul> <li><code>atmi.h</code>, <code>xatmi.h</code>, <code>fml.h</code>, <code>fml32.h</code> and <code>userlog.h</code> mirror Oracle Tuxedo 22.1.1: the same function signatures, error numbers, constants and structure layouts, so services and clients recompile against them.</li> <li><code>buildserver</code> takes the same command shape (<code>buildserver -k -o IMAGE -f OPTFILE -s @MAP</code>) and the same service map files, with OpenVMS <code>.OPT</code> link files on x86.</li> <li><code>mkfldhdr32</code> and <code>viewc32</code> build your field tables and VIEW definitions.</li> <li><code>tmloadcf</code> and <code>dmloadcf</code> load your UBBCONFIG and DMCONFIG text, and on Linux <code>dmunloadcf</code> prints a loaded DMCONFIG back byte for byte as Oracle's does, checked on 85 DMCONFIG files. <code>tmboot</code> and <code>tmshutdown</code> start and stop the application from DCL.</li> </ul> <h2 id="atmi">ATMI and FML, measured against Oracle</h2><p> Each part of the runtime was built by measuring what Oracle Tuxedo 22.1 actually does, then matching it, so services behave the same way on x86. </p><div class="table-wrapper"><table><thead><tr><th>Area</th><th>VX/TUXEDO</th></tr></thead><tbody> <tr><td>Service calls</td><td><code>tpcall</code>, <code>tpacall</code>, <code>tpgetrply</code>, <code>tpcancel</code>, <code>tpforward</code>, <code>tpreturn</code>, <code>tpadvertise</code> / <code>tpunadvertise</code>, <code>tpinit</code> / <code>tpterm</code>, <code>tpgetcallinfo</code>, priorities and blocking time</td></tr> <tr><td>FML and FML32</td><td>The field-manipulation library, byte-compared with Oracle Tuxedo 22.1 fixtures: boolean expressions, <code>Fread</code> / <code>Fwrite</code>, VIEW functions and XML converters</td></tr> <tr><td>Typed buffers</td><td>STRING, CARRAY, X_OCTET, XML, FML, FML32, VIEW, VIEW32 and RECORD buffers for COBOL-style records</td></tr> <tr><td>Buffer export</td><td><code>tpexport</code> and <code>tpimport</code></td></tr> <tr><td>Server lifecycle</td><td><code>tpsvrinit</code>, <code>tpsvrdone</code>, <code>tpsvrthrinit</code>, <code>tpsvrthrdone</code> and <code>tprminit</code>, measured against Oracle in 26 scenarios</td></tr> <tr><td>Server management</td><td>Oracle-compatible <code>CLOPT</code> (<code>-A</code>, <code>-p</code>, <code>-o</code>, <code>-e</code>, <code>-r</code>), <code>MIN</code> / <code>MAX</code> scaling, restart, <code>MAXGEN</code> and <code>GRACE</code></td></tr> <tr><td>Load balancing</td><td><code>LDBAL</code>, <code>LOAD</code>, MSSQ sets and data-dependent routing, reproduced from measurements of Oracle's own choices</td></tr> <tr><td>Repository</td><td><code>tpgetrepos</code> / <code>tpsetrepos</code>, byte-compared with Oracle</td></tr> </tbody></table></div> <h2 id="openvms">Native on OpenVMS x86</h2><p> VX/TUXEDO runs natively on OpenVMS x86-64 V9.2-3, built with VSI C++ and DECthreads. On 15 October 2026 the native OpenVMS suite passed in full: 41 tests and 14 probes across 45 modules, with outbound TDOMAIN, configuration loading and the schema tools executed on the x86 system itself. <code>tmboot</code>, <code>tmshutdown</code> and the supervisor are driven from DCL, so the application starts and stops the way an OpenVMS operator expects. </p> <h2 id="performance">Faster than Oracle Tuxedo</h2><p> Measured head to head against Oracle Tuxedo 22.1.1 on the same Linux host: the same application source compiled for each product, four servers in one MSSQ set, an application-shaped mix of FML32 services, every reply checked for its expected fields and row counts, and four repetitions with the product order alternated. </p><div class="table-wrapper"><table><thead><tr><th>Measure</th><th>Oracle Tuxedo 22.1.1</th><th>VX/TUXEDO</th><th>VX/TUXEDO advantage</th></tr></thead><tbody> <tr><td>Calls per second, 1 client</td><td>36,819</td><td>50,170</td><td><span class="ac-live">1.36&times;</span></td></tr> <tr><td>Calls per second, 16 clients</td><td>216,782</td><td>390,546</td><td><span class="ac-live">1.80&times;</span></td></tr> <tr><td>Median round trip, 1 client</td><td>23.6 &micro;s</td><td>17.4 &micro;s</td><td><span class="ac-live">26% lower</span></td></tr> <tr><td>CPU per call</td><td>29.3 &micro;s</td><td>19.9 &micro;s</td><td><span class="ac-live">32% less</span></td></tr> <tr><td>Client memory (RSS), 1 client</td><td>18.3 MB</td><td>14.0 MB</td><td><span class="ac-live">23% less</span></td></tr> </tbody></table></div><p> Every run counted only if it was valid: server log completions equal to the clients' successful calls, scheduler counts exact and no protocol errors. </p> <h2 id="related">Related tools</h2><ul> <li><a href="/technical/vx-acms-application-control-management-system">VX/ACMS</a>: ACMS transaction processing for Linux.</li> <li><a href="/technical/vx-rtr-openvms">VX/RTR</a>: Reliable Transaction Router.</li> <li><a href="/technical/openvms-dmq-pams-for-x86-linux">VX/DMQ</a>: DECmessageQ (PAMS) for x86 and Linux.</li> <li><a href="/technical/vx-sql-cobol-with-embedded-sql-to-pro-c-or-ecpg">SQL$PRE (VX/SQL)</a>: Rdb embedded SQL on OpenVMS x86.</li> </ul> </div>

Frequently Asked Questions

Curious about how Sector7 can facilitate your application migration? Explore our FAQs for expert insights.

What does wire compatible mean here?

VX/TUXEDO speaks Oracle Tuxedo's own protocols. Oracle Tuxedo domains call its services, and it calls theirs, over TDOMAIN through Oracle's GWTDOMAIN gateway, and unmodified Oracle Tuxedo /Workstation clients connect to it directly. The protocols were captured from live Oracle Tuxedo 22.1.1 and are verified against it in a live regression gate.

Do I have to move the whole Tuxedo estate at once?

No. Because VX/TUXEDO is a peer on Oracle's protocols, a domain on OpenVMS x86 joins the existing estate through TDOMAIN, and the Oracle Tuxedo domains and clients around it keep running and keep calling it. Move one domain, prove it, then move the next.

Does it run natively on OpenVMS x86?

Yes. VX/TUXEDO runs natively on OpenVMS x86-64 V9.2-3, built with VSI C++ and DECthreads, and its native test suite of 41 tests and 14 probes passed in full on OpenVMS x86 on 15 October 2026. tmboot and tmshutdown are driven from DCL.

Do my services change?

The ATMI and FML32 headers mirror Oracle Tuxedo 22.1.1, with the same signatures, error numbers and structure layouts, and buildserver takes the same command shape and service map files. Services and clients recompile against them, and UBBCONFIG and DMCONFIG load with tmloadcf and dmloadcf.

Which buffer types are supported?

STRING, CARRAY, X_OCTET, XML, FML, FML32, VIEW, VIEW32 and RECORD. STRING, CARRAY and X_OCTET buffers, FML32 buffers carrying the seven core field types, and FML buffers with string fields travel over the TDOMAIN wire to and from Oracle Tuxedo.

How does it perform against Oracle Tuxedo?

In head-to-head runs against Oracle Tuxedo 22.1.1 on the same Linux host, VX/TUXEDO handled 50,170 calls per second with one client against Oracle's 36,819 (1.36 times), and 390,546 against 216,782 with sixteen clients (1.80 times), using less CPU per call (19.9 against 29.3 microseconds) and less client memory (14.0 against 18.3 MB with one client).

Transform Your Legacy Software Today!

Talk to an engineer
Unlock the potential of your legacy software with our expert migration services.