ora-tui: Retro-Oberfläche für die Verwaltung von Oracle RAC und Storage im MS-DOS-Look
Das Tool bündelt Admin-Aufgaben für Oracle RAC, Oracle Restart und SAN Multipath in einem Terminal-Interface statt vieler SSH-Sessions. Entwickelt wurde es mit Google Antigravity und Gemini 4 Argon, inklusive OpenTelemetry-Export.
Managing enterprise Oracle RAC, Oracle Restart, and Single Instance databases over SSH often feels like juggling a dozen terminal tabs at 3:00 AM. You have sqlplus open in one window, crsctl status resource -t in another, lsnrctl status in a third, rman in a fourth, and multipath -ll or df -i in a fifth to figure out why a LUN path dropped or why ORA-09925: Unable to create audit trail file just locked out connections.
What if you had a single, zero-dependency binary that:
Meet ora-tui — and in this post, I’ll share how I built and evolved it from scratch to v1.6.0 using Google Antigravity powered by Gemini 4 Argon.
The entire lifecycle of ora-tui —from low-level Linux /proc and /sys/class/fc_host parsers to SQL*Plus pipe-delimited collectors, authentic 1990s VGA palettes, an embedded OpenTelemetry server, and automated RPM/DEB packaging—was built in Google Antigravity using Gemini 4 Argon.
What made the Antigravity + Gemini 4 Argon workflow stand out during this project:
Here is what ora-tui looks like right in your terminal ( ora-tui --preview ):
╔══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗ ║ ══ NORTON COMMANDER ORA-TUI v1.6.0:: ORACLE CLUSTER, DB & SERVER MANAGER ══ ║ ╠══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╣ ║ Modo: [ORACLE RAC] │ Host: ora-rac01.corp.local │ Cluster: crs-prod-cluster │ Ver: 19.24.0.0.0 │ Tema: NORTON ║ ║ HOME: /u01/app/oracle/product/19.0.0/dbhome_1 (oracle) │ 2 Inst OPEN │ 4 PDBs │ 4 Sesiones (1 Locks) │ 1 Errores ORA-║ ╠═════════════════════════════╦════════════════════════════════════════════════════════════════════════════════════════╣ ║ MENU [Flechas ↑↓ + Enter] ║ PANTALLA ACTIVA: VISTA INTEGRAL + VENTANA EMERGENTE (Borde Simple ┌─┐ y Doble ╔═╗) ║ ╠═════════════════════════════╬════════════════════════════════════════════════════════════════════════════════════════╣ ║ ▸ 1. Cluster & DB Estado ║ ┌─ NODOS DEL CLUSTER & INSTANCIAS (ORACLE RAC / SINGLE) ─────────────────────────────┐ ║ ║ 2. Usuarios Conectados ║ │ NODO ESTADO CRS CSSD ASM INST MODO FRA_USO │ ║ ║ 3.
Tablespaces & Files ║ │ ora-rac01 ONLINE ONLINE ONLINE ONLINE(+ASM1) PRODCDB1 READ WRITE [████░░░░]│ ║ ║ 4. Tablas & Objetos ║ │ ora-rac02 ONLINE ONLINE ONLINE ONLINE(+ASM2) PRODCDB2 READ WRITE [████░░░░]│ ║ ║ 5. ASM & Red Listeners ║ └────────────────────────────────────────────────────────────────────────────────────┘ ║ ║ 6.
RMAN, Flashback & DG ║ ┌─ USUARIOS CONECTADOS (gv$session) ───────────┬─ TABLESPACES & SAN MULTIPATH ───────┐ ║ ║ 7. Alert Log & Errores ║ │ SID,SER# USUARIO ESTADO EVENTO / LOCK │ RECURSO ESTADO / USO % │ ║ ║ 8. Servidor, Discos & SAN ║ │ 142,48219 ERP_APP ACTIVE db file seq rd │ ERP_DATA_TBS [█████████░] 93.0%!! │ ║ ║ 9.
Centro Mantenimiento ║ │ 289,11042 CRM_BATCH ACTIVE enq: TX lock │ mpatha (ASM) 4/4 PATHS ACTIVE (OK) │ ║ ║ c. Cambiar Tema Color ║ │ 512,9931 CRM_ADMIN INACT BLOCKER (289) │ mpathc (FRA) 3/4 DEGRADED (FAULTY) │ ║ ║ b. Cambiar Marcos ┌─┐/╔═╗ ║ │ 604,33105 BI_REPORT ACTIVE ON CPU (512MB) │ /u01 Inodos 14.2% (Libre ORA-9925)│ ║ ║ F1/h.
Mostrar/Ocultar Ayu ║ └──────────────────────────────────────────────┴─────────────────────────────────────┘ ║ ║ t. Cambiar Topologia ║ ║ ║ q. Salir (Quit) ║ ╔══════════════════════════════════════════════════════════════════════════╗ ║ ║ ║ ║ ══ VENTANA DE MANTENIMIENTO [Seleccione con Flechas ↑↓ + Enter] ══ ║ ║ ║ ║ ╠══════════════════════════════════════════════════════════════════════════╣ ║ ║ ║ ║ ▸ Drenar / Aislar Nodo Cluster (Relocate Services + Stop CRS) ║ ║ ║ ║ ║ Parar / Arrancar Instancia o Base de Datos (srvctl / sqlplus) ║ ║ ║ ║ ║ Ampliar Tablespace Crítico (+Datafile 32G a ERP_DATA_TBS 93%) ║ ║ ║ ║ ║ Matar Sesión Bloqueante (KILL SESSION '512,9931,@2' IMMEDIATE) ║ ║ ║ ║ ║ Auditoría Completa SAN Multipath (multipath -ll) & HBA FC ║ ║ ║ ║ ║ [Esc] Cancelar / Cerrar Ventana ║ ║ ║ ║ ╚══════════════════════════════════════════════════════════════════════════╝ ║ ╠═════════════════════════════╩════════════════════════════════════════════════════════════════════════════════════════╣ ║ ┌─ C:\ORACLE> CONSOLA MS-DOS & AUDITORIA EN VIVO ──────────────────────────────────────────────────────────────────┐ ║ ║ │ C:\> [08:05:01] Auto-Discovery: Modo=ORACLE RAC │ Cluster=crs-prod-cluster │ Release=19.24.0.0.0 │ ║ ║ │ C:\> [08:05:02] ALERTA SAN: mpathc presenta 1 camino caído (3/4 DEGRADED) │ Tablespace ERP_DATA_TBS al 93.0% │ ║ ║ └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ ║ ╚══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝ Enter fullscreen mode Exit fullscreen mode 4 Live-Switchable Retro Color Themes ( c key) Pressing c at any time cycles through four themes on the fly:
One of the biggest pain points of deploying Go tools on Oracle Linux / RHEL database servers is C library dependencies ( glibc mismatches or missing libclntsh.so Instant Client libraries).
Want 24/7 historical graphs and alerting without installing heavy Java agents? Start ora-tui with --opentelemetry (or run it as a background systemd service via ora-tui-otel.service ):
# Run in headless daemon mode on port 9161 (conflict-free with Oracle ports): sudo ora-tui --opentelemetry --daemon --otel-port = 9161 # Or enable the bundled systemd service: sudo systemctl enable --now ora-tui-otel Enter fullscreen mode Exit fullscreen mode It exposes 52 metrics across:
Inside the repository (and packaged under /usr/share/ora-tui/POC/ ), we included a self-contained POC/ folder with an interactive setup script (./configure-poc.sh ).
Every time you run./configure-poc.sh on your Docker server, it prompts for the Oracle hostname or IP you want to monitor, configures Prometheus with 15 Oracle & SAN alert rules, checks connectivity, and launches Grafana with a 26-panel Full Observability Dashboard automatically loaded as the Home screen:
git clone https://github.com/mario-ezquerro/oratui.git cd oratui/POC chmod +x configure-poc.sh./configure-poc.sh Enter fullscreen mode Exit fullscreen mode ========================================================================== CONFIGURACIÓN DE LA POC ORA-TUI (PROMETHEUS + GRAFANA) ========================================================================== 👉 Introduce el nombre o IP del host Oracle a monitorizar [servidor-oracle.local]: 192.168.1.50 👉 Introduce el puerto OpenTelemetry de ora-tui [9161]: 9161 >>> Generando configuración de Prometheus para monitorizar: 192.168.1.50:9161... >>> Verificando conexión con http://192.168.1.50:9161/healthz... [OK] Conexión exitosa con ora-tui en 192.168.1.50:9161. >>> Levantando / recargando contenedores Docker (Prometheus + Grafana)... Enter fullscreen mode Exit fullscreen mode Open http://<docker-host>:3000 ( admin / admin ) and all 26 panels—covering Clusterware, Instances, FRA %, PDBs, Tablespaces, ASM Diskgroups, Active/Blocking Sessions, PGA Memory, RMAN Backups, Data Guard Lag, ORA- Alert Log errors, Linux Load/RAM/HugePages, Filesystem Inodes, and SAN Multipath health—are live out of the box!
You can install the prebuilt.rpm or.deb directly from GitHub, or test it on macOS/Linux without an Oracle database using --mock:
# RHEL / Oracle Linux 8 & 9: sudo dnf install -y https://github.com/mario-ezquerro/oratui/raw/main/dist/ora-tui-1.6.0-1.x86_64.rpm # Debian / Ubuntu: curl -fL -o /tmp/ora-tui.deb https://github.com/mario-ezquerro/oratui/raw/main/dist/ora-tui_1.6.0-1_amd64.deb sudo apt-get install -y /tmp/ora-tui.deb # Or run the interactive simulator anywhere from source: git clone https://github.com/mario-ezquerro/oratui.git cd oratui make mock Enter fullscreen mode Exit fullscreen mode 🔗 GitHub Repository: https://github.com/mario-ezquerro/oratui
Have questions or ideas for new Oracle / SAN checks? Drop a comment below or open an issue on GitHub!