Bağlam
Yıllık 6M+ sipariş işleyen e-ticaret platformu, Oracle Enterprise Edition + Diagnostics + Tuning paketi üzerinde çalışıyordu. Lisans yenileme döneminde 5 yıllık maliyet projeksiyonu stratejik bir karar gerektirdi: lisans yenile veya açık-kaynak veritabanına geç.
Yaklaşım
10 ay süren geçiş, üretim kesintisini minimize edecek shadow read + dual-write pattern’ı üzerine kuruldu:
- Uyumluluk değerlendirmesi — ora2pg ile şema dönüşümü %88 otomatik.
- Stored procedure portu — 240+ PL/SQL → PL-pgSQL; manuel review.
- Logical replication — Oracle → PostgreSQL sürekli senkronizasyon.
- Shadow read — read trafiğin %5’i 2 ay PostgreSQL’e paralel; sonuç karşılaştırma.
- Cutover — 12 dakikalık planlı bakım penceresinde write trafiği taşındı.
- Oracle read-only mod — 30 gün geri-dönüş sigortası; sonra kapatma.
Çözüm ana hatları
- Hedef: PostgreSQL 16 + Patroni cluster (3 node) + PgBouncer transaction-mode.
- Yedekleme: pgBackRest ile incremental + WAL archive; off-site Garage S3.
- İzleme: PMM + Grafana; sorgu p99 dashboard’u.
- Index stratejisi: Mevcut Oracle indekslerinin %15’i kaldırıldı (gereksiz); 8 yeni partial index eklendi.
Sonuç
5 yıllık lisans + bakım maliyeti %58 azaldı. Sorgu p99 latency %18 iyileşti (genelde Oracle vs PostgreSQL benchmark’larından beklenmeyen kazanım — gerçek kullanım profiline yapılan partial index ayarlaması). Cutover kesintisi 12 dakika. Uygulamada ardından 60 günlük gözlem süresinde sıfır rollback ihtiyacı.