Skip to main content

Welcome to OmniView

OmniView is a powerful Go-based CLI tool designed for seamless monitoring of Oracle database background trace activities through Advanced Queuing (AQ). Built with performance and reliability in mind, it provides real-time insights into your Oracle database operations.

What is OmniView?

OmniView connects to your Oracle database and monitors trace messages generated by background processes. Using Oracle’s Advanced Queuing with sharded queues, it efficiently handles high-volume trace data through a multi-subscriber architecture, allowing you to track and debug database operations in real-time.

Key Features

Real-Time Monitoring

Listen to Oracle trace messages as they happen using Advanced Queuing subscriptions with automatic message consumption.

Multi-Subscriber Support

Register multiple subscribers to the same queue, enabling distributed monitoring and team collaboration.

Hexagonal Architecture

Clean separation of concerns with ports and adapters pattern, making the codebase maintainable and testable.

Native Oracle Integration

Built with CGO and ODPI-C for direct Oracle connectivity, eliminating the need for external drivers.

Auto-Deployment

Automatically deploys required PL/SQL packages (OMNI_TRACER_API) and manages queue initialization.

Cross-Platform

Supports Windows, macOS (ARM64), and Linux with platform-specific build configurations.

Architecture Highlights

OmniView follows hexagonal architecture (ports and adapters) with clear domain-driven design principles:
  • Core Domain: Business logic isolated in internal/core/domain and internal/core/ports
  • Adapters: Oracle adapter using ODPI-C, BoltDB for local state persistence
  • Services: Permission management, tracer deployment, and subscriber registration
  • Infrastructure: Configuration loading, auto-updates, and graceful shutdown
The application uses CGO to interface with Oracle’s native ODPI-C library, providing:
  • Direct connection to Oracle databases
  • Advanced Queuing with sharded queue support
  • Efficient bulk dequeue operations
  • Thread-safe concurrent message processing

How It Works

  1. Initialization: OmniView connects to your Oracle database and checks for required permissions
  2. Package Deployment: Automatically deploys OMNI_TRACER_API package if not present
  3. Queue Setup: Creates a sharded queue (OMNI_TRACER_QUEUE) for high-performance message handling
  4. Subscriber Registration: Registers your client as a subscriber to the trace queue
  5. Event Listening: Starts a blocking consumer loop that processes trace messages in real-time
  6. Message Display: Formats and displays trace messages with timestamp, log level, and payload

Get Started

Installation

Install OmniView and set up prerequisites including Go 1.24+ and Oracle Instant Client.

Quick Start

Get up and running in minutes with your first trace message.

Use Cases

  • Background Job Monitoring: Track long-running database jobs and processes
  • Performance Debugging: Identify bottlenecks in PL/SQL procedures
  • Audit Logging: Maintain detailed logs of database operations
  • Development Tracing: Debug complex business logic in Oracle applications
  • Real-Time Alerts: Monitor critical operations and respond to events immediately

Technology Stack

  • Language: Go 1.24
  • Oracle Integration: CGO + ODPI-C (Oracle Database Programming Interface for C)
  • Local Storage: BoltDB (embedded key-value database)
  • Build System: GNU Make with cross-platform support
  • Architecture: Hexagonal architecture with Domain-Driven Design
OmniView requires Oracle Instant Client and CGO-enabled Go environment. Make sure to review the installation prerequisites before proceeding.

Build docs developers (and LLMs) love