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:
Português (Portuguese (Brazil))
English
Español (Spanish)