Plugin enterprise-grade para Oracle Database 11g R2 → 23ai no Bacula Community 15.0.3+, escrito 100% em Rust. Cinco modos de backup (Data Pump, RMAN local, RMAN-SBT direto via libobk-rs.so, CDP archivelog contínuo, replicação DR via Active Data Guard). Live-validado em Oracle 23ai com 523 cargo tests verdes. Zero AGPLv3 do Bacula vinculada estaticamente. Drop-in compatível com plugin do Bacula Enterprise — mesma sintaxe de FileSet.

Cinco modos de backup

Modo Descrição
mode=dump Oracle Data Pump (expdp) em 12c+, legacy exp em 11g. Schema, tablespace ou full database.
mode=rman RMAN para staging local, depois streamed ao Bacula SD. Opção FIFO zero-staging.
mode=rman_sbt RMAN escreve direto no Bacula via libobk-rs.so SBT v2 — sem staging local.
mode=cdp Daemon de archivelog shipping contínuo com tracking de RPO e métricas Prometheus.
mode=replicate Replicação DR via RMAN DUPLICATE FROM ACTIVE DATABASE (EE) ou archivelog-apply (SE2).

Comparativo vs Bacula Enterprise Oracle 18.2.3

Recurso Bacula Enterprise Oracle 18.2.3 PodHeitor v1.1.0
Linguagem Perl + shell + C proprietário libobk.so Pure Rust (cdylib + musl static-pie)
Versões Oracle 11g R2 → 21c 11g R2 → 23ai
Implementação libobk Proprietária, callback bconsole libobk-rs.so — Rust cdylib
Modos de backup dump, rman, rman_sbt dump, rman, rman_sbt, cdp, replicate
Restore automation bs_oracle_restore.pl (SSH + shell menu) RestoreObject / pluginrestoreconf (bconsole/Bacularis)
Replicação DR nativa ❌ (licença separada) mode=replicate (Active DG ou archivelog-apply)
CDP / archivelog contínuo ✅ daemon mode=cdp
Detector ransomware (anti-canary) ✅ Block-hash mass-change detector
Observabilidade Prometheus ✅ endpoint /metrics
Throttle I/O cgroups v2
SBOM + audit CVE make audit + make sbom

Validação ao vivo (registrada em log de jobs Bacula reais)

  • F1: Topology discovery — versão, CDB/PDB, role DG, RAC detection ✅ 7/7 checks
  • F2: Data Pump expdp backup — schema PHTEST 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 + plano per-PDB ✅
  • F8: Data Guard role gate (prefer_standby=no prossegue, =yes pula) ✅
  • 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 ✅ (parcial)
  • F13: Canary sampler + PODHEITOR-ORACLE-AUDIT no job log ✅
  • F14: RPM install em OL9.6, full backup job 4989 — T OK 26m10s ✅
  • F16–F18: integração bacula-fd, restore PITR full (job 4956: 477 MB / 19 s) ✅
  • F20: cargo audit 0 CVEs; cargo deny all-pass ✅

Configuração mínima

# /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 no Oracle home (somente modo rman_sbt)
sudo ln -sf /opt/bacula/lib/libobk-rs.so "$ORACLE_HOME/lib/libobk.so"

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

# Reload FD
sudo systemctl restart bacula-fd

Instalação

# 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

Pronto para mudar?

Traga sua proposta de renovação ou contratação do Bacula Enterprise, Veeam, Commvault ou NetBackup. Garantimos no mínimo 50% de desconto, com mais funcionalidades inclusas.

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

Whitepaper técnico

📘 Ler o whitepaper técnico completo — arquitetura, modos de backup, integrações, anti-patterns e modelo de licenciamento.

Disponível em: pt-brPortuguêsenEnglish (Inglês)esEspañol (Espanhol)