---
last_verified: 2026-03-14
description: |
  Lessons learned from real OCI deployments. Anonymized but based on
  actual customer experiences.
---

lessons:
  - id: LL-001
    category: migration
    title: "Always test GoldenGate replication before cutover"
    context: |
      Customer planned zero-downtime migration using GoldenGate replication
      from on-prem Exadata to ADB-S. During cutover rehearsal, discovered
      that several PL/SQL packages used database links that didn't work with
      ADB-S private endpoints.
    lesson: |
      Run full regression testing with GoldenGate replication active for
      at least 2 weeks before cutover. Test all database links, PL/SQL
      packages, and application connectivity against the target.
    recommendation: "Add 2-week parallel-run phase to every migration plan"

  - id: LL-002
    category: sizing
    title: "P95 is not enough for seasonal workloads"
    context: |
      Retail customer sized ADB-S for P95 utilization from normal months.
      During Black Friday, actual peak was 4x normal (well above P95).
      Auto-scaling helped but wasn't fast enough for the initial surge.
    lesson: |
      For seasonal workloads, get metrics from the peak period specifically.
      Generic P95 from normal months underestimates seasonal peaks.
    recommendation: "Ask for peak-period metrics separately, size auto-scale max for peak"

  - id: LL-003
    category: networking
    title: "Plan IP addressing before anything else"
    context: |
      Customer deployed dev, staging, and production with overlapping CIDR
      ranges. When they needed VCN peering for shared services, had to
      re-architect networking — required rebuilding all subnets.
    lesson: |
      IP addressing must be planned enterprise-wide before deploying
      any VCN. Include on-prem ranges, future VCNs, and DR regions.
    recommendation: "Create IP addressing document as first deliverable"

  - id: LL-004
    category: operations
    title: "IaC from day one, not after"
    context: |
      Customer built initial infrastructure manually via console, planning
      to "Terraformify" later. After 6 months, infrastructure had drifted
      so far that reverse-engineering Terraform was more work than starting over.
    lesson: |
      Start with Terraform from the first resource. The cost of IaC on day
      one is low; the cost of retrofitting is very high.
    recommendation: "Include OCI Terraform provider setup in project kickoff"

  - id: LL-005
    category: cost
    title: "Auto-scaling costs can surprise"
    context: |
      Customer enabled ADB-S auto-scaling with 3x maximum. Workload was
      consistently hitting auto-scale range, resulting in 2x the expected
      database costs. They were effectively paying for auto-scaled OCPUs
      most of the time.
    lesson: |
      If workload consistently auto-scales, the base OCPU is too low.
      Right-size base to P75 and use auto-scaling for genuine peaks.
    recommendation: "Review auto-scaling usage monthly, adjust base OCPUs accordingly"

  - id: LL-006
    category: dr
    title: "DR drill found app-tier gap"
    context: |
      Customer had cross-region ADG for database DR. During DR drill,
      database failed over successfully in 3 minutes. But app tier had
      no DR — compute instances were only in primary region. Recovery
      took 2 hours to provision app tier in DR region.
    lesson: |
      DR must cover all tiers, not just the database. App tier, load
      balancers, DNS, and certificates all need DR strategy.
    recommendation: "Include app tier DR in all architecture proposals"

  - id: LL-007
    category: security
    title: "Cloud Guard catches what humans miss"
    context: |
      Customer deployed without Cloud Guard. 3 months later, security
      audit found public Object Storage buckets, overly permissive
      security lists, and an unused API key with admin privileges.
      Cloud Guard would have flagged all of these on day one.
    lesson: |
      Enable Cloud Guard in every deployment. It's free and catches
      common misconfigurations automatically.
    recommendation: "Cloud Guard is mandatory in security baseline"
