Enterprise-grade Oracle Database plugin for Bacula Community 15.0.3+, written 100% in Rust. Five backup modes (Data Pump, RMAN local, RMAN-SBT direct via libobk-rs.so, continuous archivelog CDP, DR replication via Active Data Guard). Live-validated on Oracle 23ai with 523 cargo tests green. Zero Bacula AGPLv3 statically linked. Drop-in compatible with Bacula Enterprise plugin — same FileSet syntax.

Five backup modes

Mode Description
mode=dump Oracle Data Pump (expdp) on 12c+, legacy exp on 11g. Schema, tablespace or full database.
mode=rman RMAN to local staging, then streamed to Bacula SD. Zero-staging FIFO option.
mode=rman_sbt RMAN writes directly to Bacula via libobk-rs.so SBT v2 — no local staging.
mode=cdp Continuous archivelog shipping daemon with RPO tracking and Prometheus metrics.
mode=replicate DR replication via RMAN DUPLICATE FROM ACTIVE DATABASE (EE) or archivelog-apply (SE2).

Comparison vs Bacula Enterprise Oracle 18.2.3

Feature Bacula Enterprise Oracle 18.2.3 PodHeitor v1.1.0
Language Perl + shell + proprietary C libobk.so Pure Rust (cdylib + musl static-pie)
Oracle versions 11g R2 → 21c 11g R2 → 23ai
libobk implementation Proprietary, bconsole callback libobk-rs.so — Rust cdylib
Backup modes dump, rman, rman_sbt dump, rman, rman_sbt, cdp, replicate
Restore automation bs_oracle_restore.pl (SSH + shell menu) RestoreObject / pluginrestoreconf
Native DR replication ❌ (separate license) mode=replicate
CDP / continuous archivelog mode=cdp daemon
Anti-ransomware canary ✅ Block-hash mass-change detector
Prometheus observability /metrics endpoint
cgroups v2 I/O throttle
SBOM + CVE audit

Live validation (recorded in real Bacula job logs)

  • F1: Topology discovery — version, CDB/PDB, DG role, RAC detection ✅ 7/7 checks
  • F2: Data Pump expdp backup — PHTEST schema 416 KB ✅ 1m27s
  • F3: RMAN non-SBT 2-channel backup — 9 pieces / 451 MB ✅ 43 s
  • F4: RMAN SBT via libobk-rs — PTCOMM socket + multi-channel mpsc ✅
  • F5: BCT auto-enable + SCN chain validation ✅
  • F6: RESTORE PREVIEW 4 s, SCN 2090220–2090264 ✅
  • F7: CDB/PDB topology + per-PDB plan ✅
  • F8: Data Guard role gate ✅
  • F9: TDE wallet + ASM topology; cross-endian wired ✅
  • F10: VALIDATE DATABASE 16.8 s zero corrupt; DBVERIFY 131k pages 0 fail ✅
  • F11: CDP daemon + Prometheus /metrics + cgroups v2 throttle ✅
  • F12: archivelog_apply bootstrap T1 PASS; duplicate_active T2 PASS ✅
  • F13: Canary sampler + PODHEITOR-ORACLE-AUDIT in job log ✅
  • F14: RPM install on OL9.6, full backup job 4989 — T OK 26m10s ✅
  • F16–F18: bacula-fd integration, full PITR restore (job 4956: 477 MB / 19 s) ✅
  • F20: cargo audit 0 CVEs; cargo deny all-pass ✅

Minimum configuration

# /opt/bacula/etc/podheitor-oracle.conf
sid          = ORCL
mode         = rman_sbt
oracle_home  = /u01/app/oracle/product/19c/dbhome_1
oracle_user  = oracle
auth         = os
channels     = auto
compress     = zstd:3
bct          = auto
archivelog   = include
# Symlink libobk-rs into Oracle home (rman_sbt mode only)
sudo ln -sf /opt/bacula/lib/libobk-rs.so "$ORACLE_HOME/lib/libobk.so"

# Validate offline
/opt/bacula/bin/podheitor-oracle-backend --dry-run /opt/bacula/etc/podheitor-oracle.conf

# Reload FD
sudo systemctl restart bacula-fd

Installation

# EL8/EL9 (RHEL, OL, Rocky, Alma)
sudo dnf install zstd
sudo dnf install podheitor-oracle-plugin-1.1.0-1.el9.x86_64.rpm

# Debian 12 / Ubuntu 24.04
sudo apt install ./podheitor-oracle-plugin_1.1.0-1_amd64.deb

Ready to switch?

Bring us your renewal or new-contract proposal from Bacula Enterprise, Veeam, Commvault or NetBackup. We commit to a minimum 50% discount, with more capabilities included.

Heitor Faria — Founder, PodHeitor International
[email protected]
☎ +1 (789) 726-1749 · +55 (61) 98268-4220 (WhatsApp)

Technical whitepaper

📘 Read the full technical whitepaper — architecture, backup modes, integrations, anti-patterns and licensing model.

Disponível em: pt-brPortuguês (Portuguese (Brazil))enEnglishesEspañol (Spanish)