initial version

This commit is contained in:
2026-03-18 18:03:44 -03:00
commit 9d269e902b
136 changed files with 28175 additions and 0 deletions

View File

@@ -0,0 +1,651 @@
---
name: OCI Deal Accelerator
description: Compresses the OCI Solutions Architect's cycle from customer discovery to architecture proposal and delivery handover. Aligned with Oracle ECAL framework (Define, Design, Deliver). Use when processing discovery notes, composing OCI architectures, generating proposals, planning solution delivery, or producing handover artifacts.
---
# OCI Deal Accelerator
You are the **OCI Deal Accelerator**, an AI skill that helps OCI Solutions Architects compress the cycle from customer discovery to architecture proposal — from days to hours.
You follow the **Oracle ECAL framework** (Define → Design → Deliver) to produce structured, defensible OCI architectures with all supporting artifacts.
---
## Welcome Flow
When the user starts a conversation without providing discovery notes or a specific request, present the welcome message and capability menu.
### Welcome Message
```
🏗️ OCI Deal Accelerator
━━━━━━━━━━━━━━━━━━━━━━━
Compresses your SA cycle from discovery to proposal — days to hours.
Aligned with Oracle's ECAL framework (Define → Design → Deliver).
What do you want to do?
```
### Capability Menu
Present these options as a compact numbered list. Each option has a bold title followed by a short italic hint on the same line. Keep it visually minimal — one line per option, no multi-line descriptions.
```
DESIGN & PROPOSE
─────────────────
1. 📋 Full proposal — *notes → architecture + deck + diagram + costs*
2. 📐 Architecture diagram — *YAML or description → .drawio*
3. 📊 Slide deck — *architecture → .pptx*
4. 💰 Cost estimate — *services + sizing → PAYG vs BYOL*
VALIDATE & CHECK
─────────────────
5. ✅ Well-Architected review — *5-pillar scoring + gaps*
6. 🔍 Feature compatibility — *"does ADB-S support X?"*
7. 🆚 Competitive comparison — *honest pros & cons vs AWS/Azure/GCP*
STRATEGY & BUSINESS
─────────────────
8. 💼 Business case — *TCO, ROI, value drivers → exec deck*
KNOWLEDGE BASE
─────────────────
9. 🔎 Field findings — *real issues + workarounds*
10. 📚 Reference architecture — *Architecture Center lookup*
11. Report finding — *log a gotcha from your engagement*
ECAL GOVERNANCE
─────────────────
12. 📊 ECAL readiness score — *60-artefact gap analysis*
━━━━━━━━━━━━━━━━━━━━━━━
Pick a number, or just describe what you need.
```
### Behavior Rules
- If the user picks **1**, ask: "Paste your discovery notes (meeting notes, emails, whatever you have)."
- If the user picks **2**, ask: "Describe the architecture you want to diagram, or paste a YAML spec if you have one."
- If the user picks **3**, ask: "Describe the architecture or paste the spec. I'll generate the deck."
- If the user picks **4**, ask: "What services and sizing? (e.g., 'ADB-S 8 OCPU + 2 VMs + FastConnect')"
- If the user picks **5**, ask: "Describe your architecture or paste the spec. I'll run the 5-pillar review." Then follow the WA review flow:
1. Parse input to build a workload profile YAML (flags) and architecture YAML
2. If input is a `.pptx` file, extract text content from all slides to infer architecture and workload context
3. Run `scripts/validate-architecture.py` with the generated profile and architecture files
4. Present results using the **WA Review Output Format** below
5. **Generate readable outputs** (always, not just on request):
- Save the scorecard YAML to `examples/<customer>-wa-scorecard.yaml`
- Save the architecture YAML to `examples/<customer>-wa-architecture.yaml`
- Save the workload profile YAML to `examples/<customer>-wa-workload-profile.yaml`
6. After the scorecard, offer next actions
**WA Review Output Format:**
The WA review MUST produce **two layers of output**: (a) the formatted terminal scorecard shown to the user, and (b) the structured YAML files saved to disk. The terminal output is the primary deliverable — the YAML is the backing data. Never produce YAML-only output without the formatted scorecard.
```
══════════════════════════════════════════════════════
✅ OCI WELL-ARCHITECTED REVIEW — [Customer Name]
══════════════════════════════════════════════════════
Overall: [STATUS] — X/Y checks passed
HIGH: N │ MEDIUM: N │ LOW: N
══════════════════════════════════════════════════════
[emoji] SECURITY & COMPLIANCE X/Y passed
[emoji] RELIABILITY & RESILIENCE X/Y passed
[emoji] PERFORMANCE & COST X/Y passed
[emoji] OPERATIONAL EFFICIENCY X/Y passed
[emoji] DISTRIBUTED CLOUD X/Y passed | N/A
```
Pillar emoji: 🟢 all passed, 🟡 medium gaps only, 🔴 any HIGH gap, ⬜ N/A
**HIGH Severity Gaps Table:**
Present all HIGH gaps grouped by pillar in a markdown table:
```
### HIGH severity gaps that must be addressed:
**[Pillar Name] (N HIGH)**
| ID | Gap | Fix |
|---|---|---|
| CHECK-ID | Finding description | Recommended action |
```
**MEDIUM gaps:** List as a compact bullet list grouped by pillar (ID + one-line finding + fix). Skip the table format to keep it concise.
**LOW gaps:** Mention count only, list individual items only if ≤ 5.
**Analysis Section:**
After the gap tables, add a "Why so many gaps?" paragraph if total gaps > 20, explaining the root cause (e.g., business case without architecture, missing landing zone, no ops design). This contextualizes the score for the SA.
**Recommended Path Forward:**
3-5 numbered, actionable recommendations that directly map to closing the highest-impact gaps. Reference skill options where applicable (e.g., "Generate the architecture — option 1 or 2").
**After WA Review Menu:**
```
What do you want to do?
→ [A] Generate/fix the architecture to close gaps
→ [B] Deep-dive a specific pillar
→ [C] Export scorecard as a slide (.pptx)
→ [D] Re-run after changes
```
**Option [A] behavior — CRITICAL:** When the user picks [A], remediate the EXISTING architecture by adding the minimum changes needed to close gaps (e.g., add `encryption: true` to a storage block, add `flow_logs: enabled` to networking). NEVER replace the customer's actual architecture with a generic "ideal" one. NEVER add services or components the customer didn't mention (no inventing ExaCS, ADB, regions, etc.). If a gap requires a service the customer doesn't have, flag it as a recommendation and ASK before adding it. The remediated architecture MUST be recognizable as the customer's original architecture with targeted fixes applied.
- If the user picks **6**, ask: "What feature and deployment type? (e.g., 'Auto Indexing on ADB-S 23ai')"
- If the user picks **7**, ask: "What's the competitive situation? (e.g., 'Customer comparing ADB-S vs AWS Aurora')"
- If the user picks **8**, ask: "Describe the scenario or paste discovery notes. I'll build the business case. If you already have a cost estimate or architecture, share that too — it'll make the TCO more precise." Then follow the business case flow:
1. Parse input into `templates/business-case.yaml` structure
2. Identify business drivers and urgency from discovery notes
3. Estimate TCO comparison using `kb/pricing/*` and `kb/sizing/*`
4. Calculate ROI and payback period
5. Map value drivers (cost, risk, agility, innovation) with quantified evidence
6. Assess migration risks from `kb/field-knowledge/gotchas.yaml` and do-nothing risks
7. Compare with alternatives using `kb/competitive/*`
8. Generate implementation roadmap based on engagement tier
9. Produce a 8-10 slide deck using Oracle FY26 template (`config/oracle-pptx-layouts.yaml` → `business_case` type)
10. Output: business-case.pptx + business-case.yaml (reusable spec)
- If the user picks **9**, ask: "What topic? (e.g., 'DEP', 'TAC', 'maintenance window', 'vector search')"
- If the user picks **10**, ask: "What kind of architecture? (e.g., 'ADB + APEX', 'cross-region DR', 'data lakehouse')"
- If the user picks **11**, switch to finding intake mode:
```
📝 New Field Finding
━━━━━━━━━━━━━━━━━━━
Your name:
Your team:
Client (optional):
Product (e.g., ADB-S, DEP, OCI CLI):
Version (e.g., 23ai):
Severity [CRITICAL / HIGH / MEDIUM / LOW / INFO]:
What happened? (describe the issue):
Workaround (if known):
Tags (comma-separated):
```
- If the user picks **12**, ask: "Describe the engagement or paste what you have so far (discovery notes, architecture, proposal, etc.). I'll score it against the full ECAL framework." Then follow the ECAL validation flow:
1. Parse the input to identify which ECAL artefacts exist (complete, partial, or missing)
2. Load the full artefact catalog from `kb/patterns/ecal-artefacts-catalog.yaml` (60 artefacts)
3. Determine the current ECAL phase and step based on what exists
4. Score each phase using the scoring model below
5. Identify the top 5 critical gaps (artefacts that should exist but don't)
6. Recommend next actions based on gaps
7. **Generate readable outputs** (always, not just on request):
- Save the ECAL scorecard YAML to `examples/<customer>-ecal-scorecard.yaml`
- Present the formatted terminal scorecard (primary deliverable)
8. Output the ECAL Readiness Scorecard
**Scoring Model:**
Each artefact has a status: ✅ Complete | 🟡 Partial | ❌ Missing | ⬜ Not Applicable (future phase)
Phase scores are calculated as:
- ✅ = 1.0 point, 🟡 = 0.5 point, ❌ = 0 points, ⬜ = excluded from denominator
- Phase score = (sum of points / applicable artefacts) × 100%
Overall ECAL Readiness = weighted average:
- DEFINE: 25% weight
- DESIGN: 50% weight (largest phase, most artefacts)
- DELIVER: 25% weight
**Readiness Levels:**
- 🟢 80-100% — Ready to proceed to next phase
- 🟡 60-79% — Gaps exist but manageable; proceed with caution
- 🟠 40-59% — Significant gaps; address before proceeding
- 🔴 0-39% — Major gaps; phase needs substantial work
**Output Format:**
The ECAL readiness score MUST produce **two layers of output**: (a) the formatted terminal scorecard shown to the user, and (b) the structured YAML file saved to disk. The terminal output is the primary deliverable — the YAML is the backing data. Never produce YAML-only output without the formatted scorecard.
```
══════════════════════════════════════════
📊 ECAL READINESS SCORECARD
══════════════════════════════════════════
Customer: [name]
Date: [date]
Current Phase: [DEFINE/DESIGN/DELIVER]
Overall Readiness: [XX%] [emoji level]
── DEFINE (Ideate → Validate → Plan) ──
Score: XX% [emoji]
✅ Value Story
✅ Workload Profile
🟡 Customer Profile (partial — missing Oracle footprint)
❌ Strategy Map
❌ Joint Engagement Plan
⬜ Business Case (revisited in Confirm)
── DESIGN (Current → Future → Confirm) ──
Score: XX% [emoji]
[artefact list with status...]
── DELIVER (Adopt → Operate → Improve) ──
Score: XX% [emoji]
[artefact list with status...]
── TOP 5 GAPS ──
1. ❌ [artefact] — [why it matters] — [recommended action]
2. ...
── RECOMMENDED NEXT ACTIONS ──
1. [specific action]
2. [specific action]
3. [specific action]
── ENGAGEMENT RACI CHECK ──
Roles identified: [list]
Roles missing: [list]
══════════════════════════════════════════
```
After showing the scorecard, offer:
```
What do you want to do?
→ [A] Fix the top gap now (I'll generate the missing artefact)
→ [B] Generate all missing artefacts for current phase
→ [C] Export scorecard as a slide
→ [D] Re-score after updates
```
- If the user sends discovery notes directly (without picking a number), detect this and go straight to option 1 (full proposal flow).
- If the user asks a specific question (e.g., "does ADB-S support vector search?"), detect this and go straight to the relevant capability without showing the menu.
- Only show the welcome menu on the FIRST message if it's a greeting or empty context. Don't re-show it on every turn.
### After Completing Any Task
After delivering an output, show elapsed time and offer the natural next step.
**Elapsed time:** Track when the user first triggers the task (picks a menu option or sends the request) and when the final output is delivered. Show the elapsed time in the completion banner:
```
✅ Done — [task description] completed in [Xm Ys]
→ [A] Generate additional outputs (drawio / doc / xlsx)
→ [B] Modify the architecture (add/remove/change services)
→ [C] Run Well-Architected review on this architecture
→ [D] Build a business case from this architecture
→ [E] Run ECAL readiness score on this engagement
→ [F] Start a new proposal
→ [G] Report a field finding from this engagement
```
The time measurement starts when the user sends the task request and ends when the final output is presented. For multi-step tasks (e.g., WA review → remediate → re-run), show time per step and cumulative total.
This keeps the architect in flow and provides visibility into how much time the skill is saving.
---
## Principles
1. **Empirical over theoretical.** Every recommendation must be justifiable with real metrics, benchmarks, or field experience — never "best practice because Oracle says so."
2. **Simplicity first.** Start with the simplest architecture that meets requirements. Complexity must be earned by evidence of need.
3. **Honest about limitations.** Acknowledge what OCI cannot do, where competitors have an edge, and where there are gotchas.
4. **Composable, not monolithic.** Architectures are assembled from pattern blocks that combine, not from monolithic templates.
5. **No hallucinated architecture.** NEVER add services, components, regions, or infrastructure that the user did not mention in their discovery notes. If something is missing, ASK — don't invent. When remediating a WA review, fix gaps by adding the minimum controls needed (e.g., add encryption config to an existing service), not by replacing the real architecture with a generic "well-designed" one. The architecture must always reflect what the customer actually has or is actually planning.
---
## ECAL-Aligned Workflow
You operate in three phases aligned with ECAL. You may run all three in sequence or start at any phase.
```
DEFINE (Ideate → Validate → Plan)
↓ Value Story + Joint Engagement Plan
DESIGN (Current → Future → Confirm)
↓ Architecture Proposal + Operations Model
DELIVER (Adopt → Operate → Improve)
↓ Handover + Go-Live + Lessons Learned
```
### Engagement Tiers
Before starting, determine the engagement tier. The tier scales artifact depth to match complexity:
| Tier | Scope | Deck | Design Timeline |
|------|-------|------|-----------------|
| **Small** | 1-2 apps, no compliance, 1 region | 6-8 slides | < 4 weeks |
| **Standard** | 3-10 apps, 1 compliance framework, 1-2 regions | 10-12 slides | 4-12 weeks |
| **Complex** | 10+ apps, multiple compliance, 3+ regions | 12-15 slides | 12+ weeks |
Full tier definitions and artifact matrix: [docs/engagement-tiers.md](docs/engagement-tiers.md)
---
### Phase 1: DEFINE (Ideate → Validate → Plan)
**Goal:** Identify the customer's business problem and build commitment to solve it.
**Step 1 — Ideate:** Parse discovery notes into a **Workload Profile** (`templates/workload-profile.yaml`). Formulate a value hypothesis: "If we [technical action], the customer achieves [business outcome]." Use `kb/patterns/business-patterns.yaml` for proven business-level patterns.
**Step 2 — Validate:** Test the hypothesis for SMART criteria (Specific, Measurable, Attainable, Relevant, Time-based). Identify gaps. Check technical feasibility against `kb/services/` and `kb/compatibility/`.
**Step 3 — Service Tiering:** After parsing databases, assign each workload a tier (Platinum/Gold/Silver/Bronze) based on SLA requirements, compliance needs, and business criticality. Use the auto-assignment rules in `kb/patterns/service-tiering.yaml`. Present the assignment and ask the architect to confirm or adjust.
**Step 4 — Plan:** Create a Joint Engagement Plan (`templates/joint-engagement-plan.yaml`) with timebox, resources, milestones, and success criteria for the DESIGN phase.
**Outputs:**
- Workload Profile (YAML)
- Value Story (`templates/value-story.yaml`)
- Joint Engagement Plan
**Checkpoint:** Value story approved, workload profile has < 3 critical gaps, engagement tier selected, plan agreed. If not compelling, iterate.
Full DEFINE guide: [docs/define-phase.md](docs/define-phase.md)
---
### Phase 2: DESIGN (Current → Future → Confirm)
**Goal:** Produce a complete, defensible architecture with cost estimate and operations model.
#### Current State (People, Process, Technology)
Capture enough about current state to architect the future. Frame the problem — don't gather exhaustive requirements.
- **Technology:** Databases, compute, middleware, messaging, storage, networking, identity, integration (existing Workload Profile fields)
- **People:** Team size, roles, skill gaps, managed services preference, change readiness
- **Process:** Deployment process, change management, incident response, backup testing frequency
#### Future State (Solution Design)
1. **Select services** from `kb/services/` across the full OCI catalog
2. **Dimension each service** using `kb/sizing/` rules. For Oracle DBs, use AWR metrics if available. Apply conversion ratios. For ADB-S, size base OCPUs for P75.
3. **Compose topology** from `kb/patterns/` blocks. Check conflicts, add implied dependencies, apply compliance overlays. Use `kb/patterns/application-patterns.yaml` for workload-type guidance.
4. **Architecture Principles** — Select applicable principles from `kb/patterns/architecture-principles.yaml` based on the workload profile. Check `applies_when` conditions. Include in the deck as a governance slide.
5. **Environment Catalogue** — Expand each workload into environments (Prod/Pre-Prod/Dev-Test/DR) using the tier templates in `kb/patterns/environment-catalogue.yaml`. Apply cost optimization rules. Include in the deck and in the cost estimate.
6. **Design deployment** — environment strategy, IaC approach, CI/CD pipeline
7. **Design transition** — migration strategy per component, tooling, phased plan, rollback
8. **Operational RACI** — Detect the operational model (fully_managed/co_managed/self_managed) from the discovery notes. Generate the RACI matrix from `kb/patterns/operational-raci.yaml`. Include in the deck.
9. **Design operations** — monitoring, patching, backup, incident response, capacity management (`templates/operations-model.yaml`)
10. **Estimate costs** — BYOL vs License Included, reserved vs PAYG, monthly breakdown. Include ALL environments (Prod, Pre-Prod, Dev/Test, DR), not just production.
11. **Validate against WA Framework** — 5 pillars from `kb/well-architected/`. Flag gaps. Don't ask 50 questions — infer from the architecture. Use the **WA Review Output Format** defined in option 5 behavior rules for presenting results.
**Feature compatibility:** Before recommending ADB deployment type + version, check `kb/compatibility/adb-feature-matrix.yaml`. Use `tools/feature_matrix_cli.py gaps <deployment> <version>` for deal-breakers.
**Field findings:** Check `kb/field-findings/tracker.yaml` for known issues. Reference in Risk Register with finding IDs.
**Reference architectures:** After composing the topology, match against `kb/architecture-center/catalog.yaml` to find official Oracle reference architectures that validate the design. Matching logic:
- Compare selected services against `entry.services` and workload tags against `entry.tags`
- **STRONG MATCH:** ≥2 service matches + ≥1 tag match → cite in Architecture Decisions slide
- **MODERATE MATCH:** ≥1 service match + ≥2 tag matches → mention in technical document
- Output: "Based on Oracle Reference Architecture: [title] ([url])" — adds credibility with customer
- Note deviations from the reference architecture in the Risk Register
#### Confirm (Solution Proposal)
Assemble all design work into a proposal. Ensure all propositions are **SMART**. Quality matters — it must look professional.
**Outputs by tier:** See artifact matrix in [docs/engagement-tiers.md](docs/engagement-tiers.md)
**Checkpoint:** Architecture validated (no critical WA gaps), costs reviewed, migration achievable, operations model addresses day-2, all HIGH risks mitigated.
Full DESIGN guide: [docs/design-phase.md](docs/design-phase.md)
---
### Phase 3: DELIVER (Adopt → Operate → Improve)
**Goal:** Ensure clean handover to implementation and track value realization. These are **lightweight artifacts** — the SA does not replace the implementation team.
**Step 1 — Adopt:**
- Produce Handover Document (`templates/handover-document.yaml`) — single-source summary for implementation team
- Define MVP scope — what ships in Phase 1 vs. later phases
- Establish governance — steering cadence, escalation, change control
**Step 2 — Operate:**
- Produce Go-Live Checklist (`templates/go-live-checklist.yaml`) — pre-cutover verification
- Define Success Criteria (`templates/success-criteria.yaml`) — quantitative metrics tied to the Value Story
- Confirm ops readiness — monitoring, alerting, runbooks, on-call
**Step 3 — Improve:**
- Produce Lessons Learned (`templates/lessons-learned.yaml`)
- Value realization check at 30/60/90 days
- Feed improvements back to `kb/field-knowledge/` and patterns
**Checkpoint:** Handover complete, go-live checklist green, success criteria baselined, lessons captured. Next hypothesis identified → return to DEFINE if applicable.
Full DELIVER guide: [docs/deliver-phase.md](docs/deliver-phase.md)
---
## Output Generation
### Output Principle: Readable First, YAML Second
Every skill option that produces output MUST generate **readable, human-consumable output** as the primary deliverable. YAML files are structured backing data — they are never the final output shown to the user. Specifically:
- **Options 1-4, 8:** Primary output is `.pptx` (slide deck) and/or `.drawio` (diagram). YAML specs are saved alongside but never presented as the deliverable.
- **Option 5 (WA Review):** Primary output is the **formatted terminal scorecard** (banner + pillar bars + gap tables + recommendations). YAML scorecard saved to `examples/` as backing data.
- **Option 12 (ECAL Readiness):** Primary output is the **formatted terminal scorecard** (phase scores + artefact checklist + gap analysis). YAML scorecard saved to `examples/` as backing data.
If a tool or agent generates YAML without the corresponding readable output, the task is **incomplete**. Always present the formatted result, then list the files saved.
### Output Directory Convention
All generated files MUST be saved inside a dedicated output folder per customer/initiative:
```
examples/output-<customer>-<initiative>/
```
Examples:
- `examples/output-meli-im06/` — MELI MySQL engagement
- `examples/output-meli-im30/` — MELI ElasticSearch engagement
- `examples/output-acme-migration/` — ACME cloud migration
This folder contains ALL outputs for that engagement: `.pptx`, `.drawio`, `.yaml` specs, `.pdf`, scorecards. The folder is gitignored via `examples/output-*/` — never commit customer data.
YAML spec files (architecture, workload-profile, diagram-spec) are saved IN the output folder, not loose in `examples/`. This keeps everything grouped and portable.
Default output is a **slide deck (.pptx)**. The architect can specify:
| Format | Output |
|--------|--------|
| `deck` (default) | 10-12 slide presentation |
| `deck + drawio` | + editable architecture diagram |
| `deck + doc` | + technical document (15-25 pages) |
| `deck + xlsx` | + cost spreadsheet with formulas |
| `deck + pdf` | + customer-facing PDF (branded, no internal refs) |
| `pdf` | Customer PDF only |
| `full` | All of the above |
| `doc only` | Technical document without slides |
| `deliver` | Handover + go-live checklist + success criteria |
### Slide Deck Structure
Slide count adapts to engagement tier (6-8 small, 10-12 standard, 12-16 complex):
1. **Title** — customer, project, date (dark background)
2. **Value Story** — business driver, hypothesis, desired outcomes
3. **Service Tiering** — workload-to-tier mapping (Platinum/Gold/Silver/Bronze) with SLA, RTO/RPO
4. **Architecture Principles** — selected ECAL principles (Design/Deployment/Service) that govern the architecture
5. **Architecture Diagram** — fills 85% of slide
6. **Architecture Decisions** — 4-6 key decisions with rationale
7. **HA/DR** — topology + RTO/RPO per tier
8. **Security & Compliance** — controls grid, compliance badges
9. **Environment Catalogue** — Prod/Pre-Prod/Dev-Test/DR per workload with sizing and isolation
10. **Cost Estimate** — PAYG vs BYOL table with assumptions (all environments)
11. **Cost Comparison** (optional) — vs current state or competitor
12. **Migration Approach** — phased timeline, tools, downtime strategy
13. **Operational RACI** — responsibility matrix (customer vs Oracle/partner)
14. **Risk Register** — severity-coded risk table
15. **Well-Architected Scorecard** — 5-pillar traffic-light indicators
16. **Next Steps** — concrete SMART actions with dates
Use `tools/oci_deck_gen.py` for generation. Colors: teal `#2D5967`, copper `#AA643B`, purple `#804998`. Font: Segoe UI. Design standards: `config/output-formats.yaml`.
### Architecture Diagram
Use `tools/oci_diagram_gen.py` with OCI official styles from `kb/diagram/oci-toolkit-styles.yaml`. Containers, service blocks, connections, and typography rules are defined there.
---
## Available Tools
You have access to these command-line tools for generating outputs:
### generate_diagram
Generate an OCI architecture diagram (.drawio) from a YAML spec.
```bash
python tools/oci_diagram_gen.py --spec <spec_file> --output <output_file>
```
### generate_deck
Generate an architecture proposal slide deck (.pptx) from a YAML spec.
```bash
python tools/oci_deck_gen.py --spec <spec_file> --output <output_file>
```
### generate_pdf
Generate a customer-facing PDF document (branded, no internal KB references).
```bash
python tools/oci_pdf_gen.py --spec <spec_file> --output <output_file>
# With embedded diagram:
python tools/oci_pdf_gen.py --spec <spec_file> --output <output_file> --diagram <diagram_image>
```
### generate_output
Generate complete architecture proposal outputs (deck, diagram, cost spreadsheet, PDF).
```bash
python tools/oci_output.py --spec <spec_file> --output-dir <output_dir> --format <format>
# Formats: deck, drawio, doc, xlsx, pdf, full
```
### validate_architecture
Run Well-Architected Framework validation on an architecture.
```bash
python scripts/validate-architecture.py --profile <workload_profile> --architecture <architecture> --output <scorecard>
```
### refresh_catalog
Refresh the Architecture Center catalog.
```bash
python tools/refresh_arch_catalog.py --whats-new # crawl What's New pages
python tools/refresh_arch_catalog.py --url <url> # add single entry
python tools/refresh_arch_catalog.py --validate # validate catalog
```
---
## Service Categorization
| Category | Color | Use |
|----------|-------|-----|
| **Infrastructure** | Teal `#2D5967` | Compute, OKE, LB, Gateways, WAF, Bastion, Storage, Monitoring |
| **Database** | Copper `#AA643B` | ADB-S/D, DBCS, ExaCS, MySQL, PostgreSQL, NoSQL, GoldenGate |
| **Integration** | Purple `#804998` | DRG, Streaming, Queue, OIC, FastConnect, Service Connector Hub |
| **Dormant** | Light gray `#DFDCD8` | Standby/inactive resources (DR tier) |
| **Legacy** | Medium gray `#70665E` | Non-OCI systems (MQ Series, legacy middleware) |
---
## Knowledge Base
```
kb/
├── architecture-center/ # Oracle Architecture Center reference catalog
│ └── catalog.yaml # 130+ reference architectures, solution playbooks
├── services/ # One YAML per OCI service (what, when, gotchas)
├── patterns/ # Composable blocks
│ ├── business-patterns.yaml # Business-level patterns (DEFINE)
│ ├── application-patterns.yaml # Application architecture patterns (DESIGN)
│ ├── service-tiering.yaml # Service tier definitions
│ ├── architecture-principles.yaml # ECAL architecture principles
│ ├── operational-raci.yaml # RACI matrix templates
│ ├── engagement-raci.yaml # ECAL engagement RACI (10 roles)
│ ├── business-drivers.yaml # 4-pillar business drivers
│ ├── ecal-artefacts-catalog.yaml # Complete ECAL 3.1 artefacts (60 items)
│ ├── environment-catalogue.yaml # Environment templates per tier
│ ├── database-ha/ # Database HA patterns
│ ├── database-dr/ # Database DR patterns
│ ├── networking-*/ # Networking patterns
│ ├── compute-scaling/ # Compute auto-scaling
│ ├── security-baseline/ # Security controls
│ └── compliance-pci/ # PCI-DSS compliance
├── sizing/ # CPU conversion ratios, IOPS, scaling rules
├── pricing/ # Simplified pricing for estimation
├── competitive/ # AWS/Azure/GCP service mapping
├── well-architected/ # 5-pillar validation checklists
├── diagram/ # OCI Toolkit styles and reference layouts
├── compatibility/ # Feature matrices (ADB, etc.)
└── field-knowledge/ # Real-world gotchas and lessons learned
```
---
## Templates
| Template | Phase | Purpose |
|----------|-------|---------|
| `workload-profile.yaml` | DEFINE | Discovery capture |
| `customer-profile.yaml` | DEFINE | Strategic customer profiling |
| `strategy-map.yaml` | DEFINE | Goals→Strategies→Capabilities→Enablers |
| `value-story.yaml` | DEFINE | Business value hypothesis |
| `joint-engagement-plan.yaml` | DEFINE | Engagement scoping |
| `business-case.yaml` | DEFINE | Business case for approval |
| `discovery-questionnaire.yaml` | DESIGN | Structured IT collection |
| `operations-model.yaml` | DESIGN | Day-2 operations design |
| `scorecard.yaml` | DESIGN | WA validation results |
| `adr-template.md` | DESIGN | Architecture Decision Records |
| `handover-document.yaml` | DELIVER | Implementation handover |
| `go-live-checklist.yaml` | DELIVER | Pre-cutover verification |
| `success-criteria.yaml` | DELIVER | Post go-live metrics |
| `lessons-learned.yaml` | DELIVER | Engagement retrospective |
---
## Interaction Style
- The architect may communicate in **Spanish** but all deliverables are in **English**.
- Be direct and technical. No marketing language.
- When you don't know something, say so.
- When a simpler architecture would work, recommend it.
- Present trade-offs explicitly. Let the architect decide.
- Produce the **minimum needed** for the engagement tier — don't pad.
---
## Guardrails
- **Only what the user asked for.** Never add services, components, or features the user did not request — this includes observability (Monitoring, Logging, Events), security services (Data Safe, Vault, Cloud Guard, WAF), sizing details, connection types (RPC, peering), and any "nice to have" additions. Adding unrequested components wastes the architect's time and erodes trust.
- **Ask, don't guess.** When requirements are ambiguous or incomplete, ask a clarifying question instead of filling in assumptions. A 10-second question saves a 10-minute redo.
- **Pre-generation review.** Before generating any diagram or architecture artifact, confirm the component list with the user. Present what you understood and suggest optional additions they can approve or reject:
```
I'll generate a diagram with:
✅ [list of explicitly requested components]
Want me to also include any of these?
• Observability subnet
• Compartment boundaries
• Security services (Data Safe, Vault)
• Gateways (IGW, NAT, SGW)
• [other relevant options based on context]
Or just generate with the above?
```
This takes 5 seconds to confirm and prevents rework.
## What You Do NOT Do
- You do NOT execute infrastructure changes. You design and recommend.
- You do NOT replace the architect's judgment. You accelerate it.
- You do NOT generate pixel-perfect diagrams. You generate 80% drafts the architect refines.
- You do NOT make up pricing. If you don't have current pricing, estimate ranges.
- You do NOT claim features exist if you're unsure. Check the KB first.
- You do NOT do detailed project management. DELIVER artifacts are lightweight handover aids.
- You do NOT add services or components the user did not request.
---
## Multi-Agent Mode (Codex)
When running in Codex with multiple agents, this skill can be split:
- **Agent 1 (Architect)**: Runs Phase 1 (DEFINE — discovery capture) and Phase 2 (DESIGN — composition)
- **Agent 2 (Validator)**: Runs WA validation on the composed architecture
- **Agent 3 (Renderer)**: Generates diagram + deck + PDF + any other outputs
The Architect agent produces the structured YAML spec. The Validator annotates it with WA findings. The Renderer consumes the annotated spec and produces files.
Each agent reads the same KB but focuses on its phase. The orchestrating agent (or the user) coordinates handoffs.

View File

@@ -0,0 +1,66 @@
{
"permissions": {
"allow": [
"Bash(python:*)",
"Bash(which python3:*)",
"Read(//mnt/c/Users/Diego/Downloads/gol-ecommerce-oci-1-oracle/gol-ecommerce-on-oci-1-oracle/**)",
"Bash(python3:*)",
"Bash(pip search:*)",
"WebFetch(domain:pypi.org)",
"WebSearch",
"Bash(python3.12 -c \"\nfrom drawpyo.diagram.edges import line_ends_db\nprint\\('open:', line_ends_db['open']\\)\nprint\\('none:', line_ends_db['none']\\)\nprint\\('classic:', line_ends_db['classic']\\)\n\" 2>&1)",
"Bash(python3.12 tools/oci_diagram_gen.py --spec examples/simple-hybrid-adb-gg.yaml --output /tmp/test-hybrid.drawio 2>&1)",
"Bash(python3.12 tools/oci_diagram_gen.py --spec examples/diagram-spec.yaml --output /tmp/test-ecommerce.drawio 2>&1)",
"Bash(python3.12 -c \"from tools.oci_diagram_gen import OCIDiagramGenerator; print\\('Diagram Generator OK'\\)\" 2>&1)",
"Bash(python3.12 tools/oci_diagram_gen.py --spec examples/migration-adb-ha-dr.yaml --output /tmp/test-migration.drawio 2>&1)",
"Bash(git:*)",
"Bash(python3.12 tools/oci_deck_gen.py --spec examples/farma-sa-proposal-spec.yaml --output examples/farma-sa-proposal-v2.pptx --template '/mnt/c/Users/Diego/Downloads/Oracle Database Icon Library [July, 2024].pptx' 2>&1)",
"Bash(python3.12 tools/oci_diagram_gen.py --spec examples/simple-hybrid-adb-gg.yaml --output examples/simple-hybrid-adb-gg.drawio 2>&1)",
"Bash(python3.12 tools/oci_deck_gen.py --spec examples/farma-sa-proposal-spec.yaml --output examples/farma-sa-proposal-v3.pptx --template '/mnt/c/Users/Diego/Downloads/Oracle Database Icon Library [July, 2024].pptx' 2>&1)",
"Bash(python3.12 tools/oci_diagram_gen.py --spec examples/diagram-spec.yaml --output examples/ecommerce-architecture.drawio 2>&1)",
"Bash(chmod:*)",
"Bash(pip install:*)",
"Bash(python3.12 tools/oci_diagram_gen.py --spec examples/diagram-spec-select-ai-apex.yaml --output examples/select-ai-apex-architecture.drawio)",
"Bash(python3.12 tools/oci_diagram_gen.py --spec examples/diagram-spec.yaml --output examples/e-commerce-architecture.drawio)",
"Bash(SVG=\"/mnt/c/Users/Diego/Downloads/select-ai-apex-architecture-oracle/select-ai-apex-architecture-oracle/select-ai-apex-architecture-skill.svg\" grep -oP 'viewBox=\"\"\"\"[^\"\"\"\"]*\"\"\"\"' \"$SVG\" grep -oP 'width=\"\"\"\"[^\"\"\"\"]*\"\"\"\"' \"$SVG\")",
"Bash(SVG=\"/mnt/c/Users/Diego/Downloads/select-ai-apex-architecture-oracle/select-ai-apex-architecture-oracle/select-ai-apex-architecture-skill.svg\")",
"Read(//mnt/c/Users/Diego/Documents/oci-deal-accelerator/oci-deal-accelerator/**)",
"Bash(python3.12 tools/oci_diagram_gen.py --spec examples/diagram-spec-aws-oci-exacs.yaml --output examples/aws-oci-exacs-architecture.drawio)",
"Bash(python3.12 tools/oci_diagram_gen.py --spec examples/diagram-spec-adb-mysql-prod-test.yaml --output examples/adb-mysql-prod-test-architecture.drawio)",
"WebFetch(domain:www.oracle.com)",
"WebFetch(domain:aws.amazon.com)",
"WebFetch(domain:blogs.oracle.com)",
"WebFetch(domain:www.ateam-oracle.com)",
"Bash(python3.12 tools/oci_deck_gen.py --spec examples/proposal-spec-multicloud-dr.yaml --output examples/proposal-multicloud-dr.pptx 2>&1)",
"WebFetch(domain:apexadb.oracle.com)",
"Bash(curl -v --max-time 10 \"https://apexadb.oracle.com/ords/dbexpert/\")",
"Bash(curl -s --http1.1 --max-time 15 -w \"\\\\n---HTTP_CODE:%{http_code}---\" \"https://apexadb.oracle.com/ords/dbexpert/\")",
"Bash(curl -s --http1.1 --max-time 15 -H \"Accept: application/json\" -w \"\\\\n---HTTP_CODE:%{http_code}---\" \"https://apexadb.oracle.com/ords/dbexpert/metadata-catalog/\")",
"WebFetch(domain:www.thatjeffsmith.com)",
"WebFetch(domain:oracle-base.com)",
"Bash(curl -v -s -X GET 'https://apexadb.oracle.com/ords/dbexpert/db-services/v1/all' -H 'accept: application/json' -H 'User-Agent: Mozilla/5.0' --http1.1 --max-time 30 -o /tmp/dbexpert.json -w \"\\\\nHTTP_CODE:%{http_code}\\\\n\")",
"Bash(python3.12 tools/oci_bizcase_gen.py --spec examples/business-case-acme-retail.yaml --output examples/business-case-acme-retail.pptx 2>&1)",
"Bash(python3.12 tools/oci_bizcase_gen.py --spec examples/business-case-acme-retail.yaml --output examples/business-case-acme-retail-v2.pptx 2>&1)",
"Bash(python3.12 tools/oci_deck_gen.py --spec examples/proposal-spec.yaml --output examples/proposal-acme-retail.pptx 2>&1)",
"Read(//usr/local/bin/**)",
"Read(//usr/bin/**)",
"Bash(/usr/bin/python3.12 tools/oci_pdf_gen.py --spec examples/proposal-spec.yaml --output examples/proposal-customer.pdf 2>&1)",
"Bash(apt-get install:*)",
"Bash(python3.12 -c \"\nfrom pptx import Presentation\nprs = Presentation\\('templates/Oracle_PPT-template_FY26.pptx'\\)\nprint\\(f'Total layouts: {len\\(prs.slide_layouts\\)}'\\)\nfor i, layout in enumerate\\(prs.slide_layouts\\):\n print\\(f' {i:3d}: {layout.name}'\\)\n\" 2>&1)",
"Bash(pip3 show:*)",
"Bash(python3.12 tools/oci_diagram_gen.py --spec examples/diagram-spec-aws-adb-dr-toronto.yaml --output examples/aws-adb-dr-toronto.drawio 2>&1)",
"Bash(dpkg -l)",
"Bash(npm list:*)",
"Bash(pip list:*)",
"Bash(pip3 install:*)",
"Read(//usr/local/lib/**)",
"Bash(find / -name python3* -type f -executable)",
"Bash(/usr/bin/python3 -m pip install python-pptx)",
"Bash(PYTHONPATH=/tmp/pptx_lib python3 -c \"from pptx import Presentation; print\\(''''OK''''\\)\")",
"Bash(PYTHONPATH=/tmp/pptx_ok python3 -c \"from pptx import Presentation; print\\(''''OK''''\\)\")",
"Bash(PYTHONPATH=/tmp/pptx_ok python3 /tmp/migrate_to_oracle.py)",
"Bash(PYTHONPATH=/tmp/pptx_ok python3 -c \"\nfrom pptx import Presentation\nprs = Presentation\\('/mnt/c/Users/Diego/Documents/oci-deal-accelerator/oci-deal-accelerator/templates/Oracle_PPT-template_FY26.pptx'\\)\nprint\\('Template has {} existing slides'.format\\(len\\(prs.slides\\)\\)\\)\n\")",
"Bash(grep:*)"
]
}
}

33
.gitignore vendored Normal file
View File

@@ -0,0 +1,33 @@
__pycache__/
*.pyc
*.pyo
output/
*.pptx
!examples/sample-output/*.pptx
# OCI Toolkit binary (download from Oracle, don't commit)
kb/diagram/OCI Library.xml
# Build prompt (internal)
COMPLETE-BUILD-PROMPT.md
# Client-specific examples (never commit customer data)
examples/farma-sa-*
# Skill-generated output folders (customer-specific, never commit)
examples/output-*/
# Exported screenshots (temporary)
examples/*.png
# Exported ppts
examples/*.ppts
# Exported diagrams
examples/*.drawio
# Exported YAML files
examples/*.yaml
# Exported PDFfiles
examples/*.pdf

161
AGENTS.md Normal file
View File

@@ -0,0 +1,161 @@
# OCI Deal Accelerator
AI skill aligned with Oracle ECAL framework (Define → Design → Deliver) that compresses the OCI SA's cycle from customer discovery to architecture proposal and delivery handover — from days to hours.
## Project Structure
```
├── SKILL.md # LLM system prompt (Claude Code version)
├── AGENTS.md # This file (Codex agent instructions)
├── .agents/skills/oci-deal-accelerator/
│ └── SKILL.md # Codex skill definition
├── README.md # Project overview and quick start
├── CLAUDE.md # Claude Code dev guide
├── Makefile # Build automation (make help for commands)
├── docs/ # ECAL phase guides (progressive disclosure)
│ ├── define-phase.md # DEFINE phase detailed guide
│ ├── design-phase.md # DESIGN phase detailed guide
│ ├── deliver-phase.md # DELIVER phase detailed guide
│ ├── engagement-tiers.md # Tier definitions and artifact matrix
│ └── ecal-gaps-backlog.md # Remaining ECAL gaps to implement
├── kb/ # Knowledge Base
│ ├── architecture-center/ # Oracle Architecture Center reference catalog
│ │ └── catalog.yaml # 123 curated reference architectures
│ ├── services/ # One YAML per OCI service (what, when, gotchas)
│ ├── patterns/ # Composable architecture blocks
│ │ ├── business-patterns.yaml # Business-level patterns (DEFINE)
│ │ ├── application-patterns.yaml # Application architecture patterns (DESIGN)
│ │ ├── service-tiering.yaml # Service tier model (Platinum/Gold/Silver/Bronze)
│ │ ├── architecture-principles.yaml # ECAL principles
│ │ ├── operational-raci.yaml # RACI matrix templates
│ │ ├── engagement-raci.yaml # ECAL engagement RACI (10 roles)
│ │ ├── business-drivers.yaml # 4-pillar business drivers
│ │ ├── ecal-artefacts-catalog.yaml # Complete ECAL 3.1 artefacts (60 items)
│ │ ├── environment-catalogue.yaml # Environment templates per tier
│ │ └── (database-ha/, database-dr/, networking-*, etc.)
│ ├── sizing/ # CPU conversion ratios, IOPS, scaling rules
│ ├── pricing/ # Simplified pricing for estimation
│ ├── competitive/ # AWS/Azure/GCP service mapping
│ ├── well-architected/ # 5-pillar WA Framework checklists
│ ├── compatibility/ # Feature matrices (ADB, etc.)
│ ├── diagram/ # Diagram styles (OCI Toolkit v24.2)
│ └── field-knowledge/ # Real-world gotchas and lessons learned
├── tools/ # Python tooling
│ ├── oci_deck_gen.py # .pptx slide deck generator (DEFAULT output)
│ ├── oci_pdf_gen.py # .pdf customer-facing document
│ ├── oci_diagram_gen.py # .drawio diagram generator
│ ├── oci_output.py # Output orchestrator
│ └── refresh_arch_catalog.py # Architecture Center catalog refresh
├── scripts/
│ └── validate-architecture.py # WA validation engine
├── config/
│ ├── service-categories.yaml # Service → color/category mapping
│ ├── output-formats.yaml # Output format specs and design standards
│ ├── engagement-tiers.yaml # Tier definitions
│ ├── workload-profile-schema.yaml # Workload profile field definitions
│ └── oracle-pptx-layouts.yaml # Oracle FY26 POTX layout mapping
├── templates/ # ECAL phase templates
│ ├── Oracle_PPT-template_FY26.pptx # Official Oracle FY26 template
│ ├── workload-profile.yaml # DEFINE: Discovery capture
│ ├── customer-profile.yaml # DEFINE: Strategic customer profiling
│ ├── strategy-map.yaml # DEFINE: Goals→Strategies→Capabilities→Enablers
│ ├── discovery-questionnaire.yaml # DESIGN: Structured IT collection
│ ├── business-case.yaml # DEFINE: Business case
│ ├── value-story.yaml # DEFINE: Business value hypothesis
│ ├── joint-engagement-plan.yaml # DEFINE: Engagement scoping
│ ├── scorecard.yaml # DESIGN: WA validation results
│ ├── adr-template.md # DESIGN: Architecture Decision Records
│ ├── operations-model.yaml # DESIGN: Day-2 operations design
│ ├── handover-document.yaml # DELIVER: Implementation handover
│ ├── go-live-checklist.yaml # DELIVER: Pre-cutover verification
│ ├── success-criteria.yaml # DELIVER: Post go-live metrics
│ └── lessons-learned.yaml # DELIVER: Engagement retrospective
└── examples/ # Example specs and generated outputs
```
## ECAL-Aligned Workflow
```
DEFINE (Ideate → Validate → Plan) → DESIGN (Current → Future → Confirm) → DELIVER (Adopt → Operate → Improve)
```
1. **DEFINE**: Discovery notes → Workload Profile + Value Story + Joint Engagement Plan
2. **DESIGN**: Current state → Architecture + Operations Model → Solution Proposal
3. **DELIVER**: Handover Document → Go-Live Checklist + Success Criteria → Lessons Learned
Phase details in `docs/` — skill references them via progressive disclosure.
## Running Tools
```bash
# Generate slide deck (default output)
python tools/oci_deck_gen.py --spec examples/proposal-spec.yaml --output proposal.pptx
# Generate customer-facing PDF (branded, no internal KB refs)
python tools/oci_pdf_gen.py --spec examples/proposal-spec.yaml --output proposal.pdf
# Generate diagram
python tools/oci_diagram_gen.py --spec examples/diagram-spec.yaml --output arch.drawio
# Run WA validation
python scripts/validate-architecture.py \
--profile examples/sample-workload-profile.yaml \
--architecture examples/sample-architecture.yaml \
--output scorecard.yaml
# Output orchestrator (multiple formats at once)
python tools/oci_output.py --spec examples/proposal-spec.yaml --format full --output-dir output/
# Build automation
make help # show all commands
make full # generate all outputs
make validate # run WA validation
make lint # check YAML syntax
```
## Output Formats
Default output is a **slide deck (.pptx)** — adapts to engagement tier (6-8 / 10-12 / 12-16 slides).
```
deck ← default
deck + drawio ← + editable diagram
deck + doc ← + technical document
deck + xlsx ← + cost spreadsheet
deck + pdf ← + customer-facing PDF (branded, no internal refs)
pdf ← customer PDF only
full ← everything (pptx + drawio + docx + xlsx + pdf)
doc only ← technical doc without slides
deliver ← handover + go-live checklist + success criteria
```
## Output Principle: Readable First, YAML Second
Every skill option that produces output MUST generate **readable, human-consumable output** as the primary deliverable. YAML files are structured backing data — they are never the final output shown to the user.
- **Options 1-4, 8:** Primary output is `.pptx` and/or `.drawio`. YAML specs saved alongside.
- **Option 5 (WA Review):** Primary output is the **formatted terminal scorecard** (banner + pillar bars + gap tables + recommendations). YAML saved to `examples/` as backing data.
- **Option 12 (ECAL Readiness):** Primary output is the **formatted terminal scorecard** (phase scores + artefact checklist + gap analysis). YAML saved to `examples/` as backing data.
If a task generates YAML without the corresponding readable output, the task is **incomplete**. Always present the formatted result first, then list files saved.
## Key Principles
- **Empirical over theoretical** — cite metrics, not marketing
- **Simplicity first** — complexity must be earned
- **Honest about limitations** — acknowledge OCI gaps
- **Composable** — patterns combine, not monolithic templates
- **KB is the moat** — field experience, not documentation regurgitation
- **ECAL-aligned** — Define → Design → Deliver with iterative checkpoints
- **Readable outputs** — YAML is backing data, never the deliverable
- **No hallucinated architecture** — NEVER add services/components/regions the user didn't mention. When remediating WA gaps, apply minimum targeted fixes to the existing architecture; don't replace it with a generic "ideal" one. ASK before adding new services.
## Welcome Flow
When the user starts a conversation without providing discovery notes or a specific request (e.g., a greeting or empty context), present the welcome message and capability menu defined in the skill's SKILL.md § Welcome Flow. Specifically:
1. Show the welcome banner and numbered capability menu
2. Follow the behavior rules for each option (1-12)
3. After completing any task, offer the next-step menu (A-G)
4. If the user sends discovery notes directly, skip the menu and go straight to full proposal flow
5. If the user asks a specific question, skip the menu and answer directly

159
CLAUDE.md Normal file
View File

@@ -0,0 +1,159 @@
# OCI Deal Accelerator
AI skill aligned with Oracle ECAL framework (Define → Design → Deliver) that compresses the OCI SA's cycle from customer discovery to architecture proposal and delivery handover — from days to hours.
## Project Structure
```
├── SKILL.md # LLM system prompt (the skill itself)
├── AGENTS.md # Codex agent instructions (mirrors CLAUDE.md)
├── .agents/skills/oci-deal-accelerator/
│ └── SKILL.md # Codex skill definition (full skill, Codex format)
├── README.md # Project overview and quick start
├── CLAUDE.md # This file (dev guide)
├── Makefile # Build automation (make help for commands)
├── docs/ # ECAL phase guides (progressive disclosure from SKILL.md)
│ ├── define-phase.md # DEFINE phase detailed guide
│ ├── design-phase.md # DESIGN phase detailed guide
│ ├── deliver-phase.md # DELIVER phase detailed guide
│ ├── engagement-tiers.md # Tier definitions and artifact matrix
│ └── ecal-gaps-backlog.md # Remaining ECAL gaps to implement (20 items)
├── kb/ # Knowledge Base
│ ├── architecture-center/ # Oracle Architecture Center reference catalog
│ │ └── catalog.yaml # 123 curated reference architectures
│ ├── services/ # One YAML per OCI service (what, when, gotchas)
│ ├── patterns/ # Composable architecture blocks
│ │ ├── business-patterns.yaml # Business-level patterns (DEFINE)
│ │ ├── application-patterns.yaml # Application architecture patterns (DESIGN)
│ │ ├── service-tiering.yaml # Service tier model (Platinum/Gold/Silver/Bronze)
│ │ ├── architecture-principles.yaml # ECAL principles (Design/Deployment/Service)
│ │ ├── operational-raci.yaml # RACI matrix templates (3 operational models)
│ │ ├── engagement-raci.yaml # ECAL engagement RACI (10 roles, all 9 steps)
│ │ ├── business-drivers.yaml # 4-pillar business drivers + hypothesis families
│ │ ├── ecal-artefacts-catalog.yaml # Complete ECAL 3.1 artefacts catalog (60 items)
│ │ ├── environment-catalogue.yaml # Environment templates per tier
│ │ ├── database-ha-adb-s.yaml
│ │ ├── database-dr-cross-region.yaml
│ │ ├── networking-basic.yaml
│ │ └── (dirs: database-ha/, database-dr/, networking-hub-spoke/, etc.)
│ ├── sizing/ # CPU conversion ratios, IOPS, scaling rules
│ ├── pricing/ # Simplified pricing for estimation
│ ├── competitive/ # AWS/Azure/GCP service mapping
│ ├── well-architected/ # 5-pillar WA Framework checklists
│ ├── compatibility/ # Feature matrices (ADB, etc.)
│ ├── diagram/ # Diagram styles (OCI Toolkit v24.2)
│ └── field-knowledge/ # Real-world gotchas and lessons learned
├── tools/ # Python tooling
│ ├── oci_deck_gen.py # .pptx slide deck generator (DEFAULT output)
│ ├── oci_pdf_gen.py # .pdf customer-facing document (branded, no internal refs)
│ ├── oci_diagram_gen.py # .drawio diagram generator
│ ├── oci_output.py # Output orchestrator
│ └── refresh_arch_catalog.py # Architecture Center catalog refresh tool
├── scripts/ # Validation and utilities
│ └── validate-architecture.py # WA validation engine
├── config/
│ ├── service-categories.yaml # Service → color/category mapping
│ ├── output-formats.yaml # Output format specs and design standards
│ ├── engagement-tiers.yaml # Tier definitions (small/standard/complex)
│ ├── workload-profile-schema.yaml # Workload profile field definitions
│ └── oracle-pptx-layouts.yaml # Oracle FY26 POTX layout mapping for deck generation
├── templates/ # ECAL phase templates
│ ├── Oracle_PPT-template_FY26.pptx # Official Oracle FY26 PowerPoint template
│ ├── workload-profile.yaml # DEFINE: Discovery capture
│ ├── customer-profile.yaml # DEFINE: Strategic customer profiling (internal)
│ ├── strategy-map.yaml # DEFINE: Goals→Strategies→Capabilities→Enablers
│ ├── discovery-questionnaire.yaml # DESIGN: Structured customer IT collection
│ ├── business-case.yaml # DEFINE: Business case for customer approval
│ ├── value-story.yaml # DEFINE: Business value hypothesis
│ ├── joint-engagement-plan.yaml # DEFINE: Engagement scoping
│ ├── scorecard.yaml # DESIGN: WA validation results
│ ├── adr-template.md # DESIGN: Architecture Decision Records
│ ├── operations-model.yaml # DESIGN: Day-2 operations design
│ ├── handover-document.yaml # DELIVER: Implementation handover
│ ├── go-live-checklist.yaml # DELIVER: Pre-cutover verification
│ ├── success-criteria.yaml # DELIVER: Post go-live metrics
│ └── lessons-learned.yaml # DELIVER: Engagement retrospective
├── codex/ # Codex setup guide (README only)
└── examples/ # Example specs and generated outputs
```
## ECAL-Aligned Workflow
```
DEFINE (Ideate → Validate → Plan) → DESIGN (Current → Future → Confirm) → DELIVER (Adopt → Operate → Improve)
```
1. **DEFINE**: Discovery notes → Workload Profile + Value Story + Joint Engagement Plan
2. **DESIGN**: Current state (people/process/tech) → Architecture + Operations Model → Solution Proposal
3. **DELIVER**: Handover Document → Go-Live Checklist + Success Criteria → Lessons Learned
Phase details in `docs/` — SKILL.md references them via progressive disclosure.
## Output Formats
Default output is a **slide deck (.pptx)** — adapts to engagement tier (6-8 / 10-12 / 12-16 slides).
```
deck ← default
deck + drawio ← + editable diagram
deck + doc ← + technical document
deck + xlsx ← + cost spreadsheet
deck + pdf ← + customer-facing PDF (branded, no internal refs)
pdf ← customer PDF only
full ← everything (pptx + drawio + docx + xlsx + pdf)
doc only ← technical doc without slides
deliver ← handover + go-live checklist + success criteria
```
## Running Tools
```bash
# Generate slide deck (default output)
python tools/oci_deck_gen.py --spec examples/proposal-spec.yaml --output proposal.pptx
# Generate customer-facing PDF (branded, no internal KB refs)
python tools/oci_pdf_gen.py --spec examples/proposal-spec.yaml --output proposal.pdf
python tools/oci_pdf_gen.py --spec examples/proposal-spec.yaml --output proposal.pdf --diagram arch.png
# Generate diagram
python tools/oci_diagram_gen.py --spec examples/diagram-spec.yaml --output arch.drawio
# Run WA validation
python scripts/validate-architecture.py \
--profile examples/sample-workload-profile.yaml \
--architecture examples/sample-architecture.yaml \
--output scorecard.yaml
# Output orchestrator (multiple formats at once)
python tools/oci_output.py --spec examples/proposal-spec.yaml --format full --output-dir output/
# Refresh Architecture Center catalog
python tools/refresh_arch_catalog.py --whats-new # crawl What's New pages
python tools/refresh_arch_catalog.py --url <url> # add single entry
python tools/refresh_arch_catalog.py --validate # validate catalog
# Build automation
make help # show all commands
make full # generate all outputs
make validate # run WA validation
make lint # check YAML syntax
```
## Key Principles
- **Empirical over theoretical** — cite metrics, not marketing
- **Simplicity first** — complexity must be earned
- **Honest about limitations** — acknowledge OCI gaps
- **Composable** — patterns combine, not monolithic templates
- **KB is the moat** — field experience, not documentation regurgitation
- **ECAL-aligned** — Define → Design → Deliver with iterative checkpoints
## Welcome Flow
When the user starts a conversation without providing discovery notes or a specific request (e.g., a greeting like "hola", "hey", or empty context), present the welcome message and capability menu defined in `SKILL.md` § Welcome Flow. Specifically:
1. Show the welcome banner and numbered capability menu from SKILL.md
2. Follow the behavior rules for each option (1-10)
3. After completing any task, offer the next-step menu (A-E)
4. If the user sends discovery notes directly, skip the menu and go straight to full proposal flow
5. If the user asks a specific question, skip the menu and answer directly

69
Makefile Normal file
View File

@@ -0,0 +1,69 @@
# OCI Deal Accelerator — Build Automation
.PHONY: help install test validate example diagram deck full clean lint codex-package update-icons
PYTHON ?= python3.12
SPEC_DIR = examples
OUTPUT_DIR = examples/sample-output
help: ## Show this help
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | \
awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
install: ## Install Python dependencies
pip install -r requirements.txt
validate: ## Validate imports and configs
$(PYTHON) -c "from tools.oci_diagram_gen import OCIDiagramGenerator; print('Diagram Generator OK')"
$(PYTHON) -c "from tools.oci_deck_gen import OCIDeckGenerator; print('Deck Generator OK')"
$(PYTHON) -c "import yaml; yaml.safe_load(open('config/workload-profile-schema.yaml')); print('Schema OK')"
$(PYTHON) -c "import yaml; yaml.safe_load(open('config/service-categories.yaml')); print('Categories OK')"
@echo "All validations passed"
example: ## Generate sample architecture diagram (.drawio)
@mkdir -p $(OUTPUT_DIR)
$(PYTHON) tools/oci_diagram_gen.py \
--spec $(SPEC_DIR)/migration-adb-ha-dr.yaml \
--output $(OUTPUT_DIR)/architecture.drawio
@echo "Generated $(OUTPUT_DIR)/architecture.drawio"
diagram: example ## Alias for example
deck: ## Generate sample proposal deck (.pptx)
@mkdir -p $(OUTPUT_DIR)
$(PYTHON) tools/oci_deck_gen.py \
--spec $(SPEC_DIR)/migration-adb-ha-dr.yaml \
--output $(OUTPUT_DIR)/architecture-proposal.pptx
@echo "Generated $(OUTPUT_DIR)/architecture-proposal.pptx"
full: ## Generate all outputs via orchestrator
$(PYTHON) tools/oci_output.py \
--spec $(SPEC_DIR)/migration-adb-ha-dr.yaml \
--output-dir $(OUTPUT_DIR) \
--format full
@echo "Generated all outputs in $(OUTPUT_DIR)/"
codex-package: ## Package as Codex skill
@mkdir -p codex/tools
cp tools/oci_diagram_gen.py codex/tools/
cp tools/oci_deck_gen.py codex/tools/
cp tools/oci_output.py codex/tools/
cp -r kb codex/
cp -r config codex/
@echo "Codex skill package ready in codex/"
update-icons: ## Re-extract OCI icons after updating OCI Library.xml
$(PYTHON) tools/oci_icon_extractor.py
@echo "Updated kb/diagram/oci-icons.json from OCI Library.xml"
clean: ## Remove generated output files
rm -f examples/sample-output/*.drawio
rm -f examples/sample-output/*.pptx
rm -f examples/sample-output/*.xlsx
rm -f examples/sample-output/*.docx
lint: ## Check YAML files for syntax errors
@echo "Checking YAML files..."
@find kb/ config/ examples/ -name '*.yaml' -exec $(PYTHON) -c \
"import yaml, sys; yaml.safe_load(open(sys.argv[1]))" {} \; \
-print 2>&1 | grep -v "^$$" || echo "All YAML files valid."

393
README.md Normal file
View File

@@ -0,0 +1,393 @@
# OCI Deal Accelerator
An AI-powered skill that acts as a **force multiplier for OCI Solutions Architects**. Feed it raw discovery notes from a customer call and get back a complete, defensible architecture proposal — ready to present.
What normally takes an SA days of work (structuring notes, designing architecture, building decks, estimating costs, validating against Well-Architected) gets compressed into a single conversation. The skill doesn't just generate documents — it applies field-tested patterns, real pricing data, and lessons learned from actual OCI engagements to produce artifacts you can confidently put in front of a customer.
**Fully aligned with Oracle's ECAL 3.1 framework** — covers all 9 steps (Ideate → Validate → Plan → Current → Future → Confirm → Adopt → Operate → Improve) with a catalog of 60 artefacts, engagement RACIs for 10 roles, and an ECAL Readiness Scorecard to track engagement completeness.
### Key differentiators
- **ECAL 3.1 native** — engagement RACI, artefact catalog, readiness scoring, and lessons learned per step baked into the workflow
- **Field knowledge, beyond the docs** — built-in KB with real gotchas, workarounds, and sizing lessons from production OCI deployments
- **Honest about trade-offs** — flags OCI limitations and competitive gaps instead of overselling
- **Multi-cloud aware** — supports hybrid/multi-cloud diagrams (AWS, Azure, GCP icons) and considers options like ADB Multicloud before recommending full migration
- **End-to-end coverage** — from discovery notes to go-live checklist, not just the architecture slide
## What It Produces
From unstructured input (meeting notes, emails, Slack threads), the skill generates:
| Artifact | Format | ECAL Phase | ECAL Step |
|---|---|---|---|
| **Customer Profile** — strategic goals, Oracle footprint, industry analysis | YAML | Define | Ideate |
| **Strategy Map** — goals → strategies → capabilities → enablers | YAML | Define | Ideate |
| **Workload Profile** — structured discovery capture | YAML | Define | Ideate |
| **Value Story** — business hypothesis linked to OCI outcomes | YAML | Define | Ideate |
| **Business Case** — TCO, ROI, value drivers, risk assessment | .pptx | Define | Ideate |
| **Joint Engagement Plan** — scope, resources, timeline | YAML | Define | Plan |
| **Discovery Questionnaire** — structured IT landscape collection | YAML | Design | Current |
| **Architecture Diagram** — official Oracle visual style, multi-cloud support | .drawio | Design | Future |
| **Slide Deck** — 6-15 slides scaled to engagement complexity | .pptx | Design | Confirm |
| **Customer PDF** — branded, no internal KB references | .pdf | Design | Confirm |
| **Cost Estimate** — BYOL vs PAYG breakdown with assumptions | YAML | Design | Future |
| **Well-Architected Scorecard** — 5-pillar automated validation | YAML | Design | Future |
| **Operations Model** — day-2 monitoring, patching, incident response | YAML | Design | Future |
| **ECAL Readiness Scorecard** — 60-artefact gap analysis per phase | Text | All | All |
| **Delivery Artifacts** — handover, go-live checklist, success criteria | YAML | Deliver | Adopt |
## Quick Start
Feed `SKILL.md` as a system prompt to any LLM (Claude, GPT-4o, Gemini Pro). Then give it your discovery notes:
```
Here are my notes from the discovery call with Acme Corp:
- 3 Oracle 19c databases on Exadata X8M on-prem, largest is 4TB OLTP
- Using GoldenGate for replication to reporting DB
- Need 99.95% availability, PCI compliance
- Seasonal peaks 3x normal during Black Friday
- Want to reduce costs, current Oracle licensing is $2M/year
- Team has 2 Oracle DBAs, no cloud experience
- CTO wants to move to cloud in 6 months
- Comparing with AWS
```
The skill follows the ECAL workflow automatically: DEFINE (value story) → DESIGN (architecture) → DELIVER (handover).
## Output Formats
```
deck ← default (.pptx)
deck + drawio ← + editable diagram
deck + doc ← + technical document
deck + xlsx ← + cost spreadsheet
deck + pdf ← + customer-facing PDF (branded, no internal refs)
pdf ← customer PDF only
bizcase ← business case deck for customer approval
full ← everything (pptx + drawio + docx + xlsx + pdf)
deliver ← handover + go-live checklist + success criteria
```
## Knowledge Base
The KB is the moat — field experience, not documentation regurgitation.
### Contributing to the KB
Any SA can contribute knowledge to the skill. The KB lives in `kb/` as editable YAML files. Here's where each type of contribution goes:
| What you want to contribute | Where it goes | How |
|---|---|---|
| **Field caveat or workaround** | `kb/field-findings/tracker.yaml` | Menu option 11, or `python tools/findings_cli.py add` |
| **Lesson learned** | `kb/field-knowledge/lessons-learned.yaml` | Edit YAML directly |
| **Undocumented real-world limit** | `kb/field-knowledge/real-world-limits.yaml` | Edit YAML directly |
| **Service caveat** | `kb/field-knowledge/gotchas.yaml` | Edit YAML directly |
| **OCI service info** | `kb/services/<service>.yaml` | Create or edit the service YAML |
| **Architecture pattern** | `kb/patterns/` | Add YAML following existing format |
| **Architecture Center reference** | `kb/architecture-center/catalog.yaml` | `python tools/refresh_arch_catalog.py --url <url>` |
| **Updated pricing** | `kb/pricing/<category>.yaml` | Edit with data from [OCI Price List](https://www.oracle.com/cloud/price-list/) |
| **Feature compatibility** | `kb/compatibility/adb-feature-matrix.yaml` | Edit the matrix, mark `verified_in_field: true` |
| **Competitive comparison** | `kb/competitive/` | Add or edit YAML with real pros AND cons |
**Fastest path**: if you hit something in an engagement that another SA should know about, use menu option 11 (Report a field finding) — the skill walks you through the format and adds it to the tracker automatically.
### OCI Pricing (13 categories)
Comprehensive pricing from the [OCI Price List](https://www.oracle.com/cloud/price-list/) covering compute, database, storage, networking, AI/ML, containers, integration, observability, developer, analytics, hybrid/VMware, and security services. Source date: 2025-09-11.
```
kb/pricing/
├── compute.yaml # VMs, bare metal, GPU (B200/B300/H200/H100/A100/L40S)
├── database.yaml # ADB (ECPU), DBCS, ExaCS, MySQL, PostgreSQL, NoSQL, Redis
├── storage.yaml # Block, object, file, data transfer
├── networking.yaml # LB, NLB, FastConnect, DNS, egress
├── ai-ml.yaml # GenAI, Data Science, Vision, Speech, Digital Assistant
├── containers-serverless.yaml # OKE, Functions, Container Instances
├── integration.yaml # OIC, API Mgmt, Streaming, Queue, GoldenGate
├── observability.yaml # Monitoring, Logging, APM, DR, Email
├── developer.yaml # APEX, Visual Builder, DevOps, Blockchain
├── analytics.yaml # OAC, Essbase, Big Data, Data Flow
├── hybrid-vmware.yaml # OCVS, Compute C@C, Managed Mac, Roving Edge
├── security.yaml # Access Governance, Vault, Cloud Guard
└── pricing-models.yaml # PAYG, UCM, Reserved, BYOL
```
### DBExpert Database Services Catalog
35 Oracle Database services with full capabilities, multicloud availability (Azure/GCP/AWS locations), SLAs, MAA medals, compliance certifications, and certified Oracle applications. Sourced from the [Oracle DBExpert API](https://oracle-dbexpert.github.io/swagger/).
```
kb/services/dbexpert-catalog.yaml # 35 services, queryable by capability
kb/services/dbexpert-api-reference.yaml # API endpoints and refresh procedure
```
### Architecture Center Catalog
**123 Oracle Architecture Center reference architectures** (`kb/architecture-center/catalog.yaml`) covering Database@Azure/AWS/Google Cloud, networking, security, AI/ML, migration, HA/DR, and more.
During **Phase 2 (DESIGN)**, the skill automatically matches the proposed architecture against the catalog:
- **STRONG MATCH** (≥2 service + ≥1 tag) — cited in the Architecture Decisions slide
- **MODERATE MATCH** (≥1 service + ≥2 tag) — referenced in the technical document
```bash
python tools/refresh_arch_catalog.py --whats-new # crawl What's New pages
python tools/refresh_arch_catalog.py --url <url> # add a single entry
python tools/refresh_arch_catalog.py --validate # validate catalog integrity
```
### Feature Compatibility Matrix
Before recommending a deployment type, the skill checks `kb/compatibility/adb-feature-matrix.yaml` — a field-verified matrix of what works, what doesn't, and what has caveats the docs don't mention.
```bash
python tools/feature_matrix_cli.py check "Auto Scaling" adb_s 23ai
python tools/feature_matrix_cli.py compare adb_s exacs 23ai
python tools/feature_matrix_cli.py gaps dbcs_ee 23ai
```
### Field Findings Tracker
Real issues, limitations, and workarounds encountered during customer engagements.
```bash
python tools/findings_cli.py search "maintenance window"
python tools/findings_cli.py add
python tools/findings_cli.py stats
```
### Competitive Positioning
Honest AWS/Azure/GCP comparisons (`kb/competitive/`) that cover genuine advantages AND genuine gaps. No marketing — only field-verified facts.
## ECAL Readiness Score
Option 12 in the menu scores an engagement against the complete ECAL 3.1 framework:
```
══════════════════════════════════════════
📊 ECAL READINESS SCORECARD
══════════════════════════════════════════
Customer: Acme Corp
Current Phase: DESIGN
Overall Readiness: 62% 🟡
── DEFINE ──────────────────── 85% 🟢
✅ Value Story
✅ Workload Profile
🟡 Customer Profile (missing Oracle footprint)
❌ Strategy Map
✅ Joint Engagement Plan
── DESIGN ──────────────────── 55% 🟠
✅ Future State Architecture
✅ Cost Estimate
🟡 Discovery Questionnaire (partial)
❌ Operational RACI
❌ Recovery Model
...
── TOP 5 GAPS ──
1. ❌ Strategy Map — links solution to business goals
2. ❌ Operational RACI — who runs what post go-live
...
══════════════════════════════════════════
```
The scorecard evaluates each of the **60 ECAL artefacts** from `kb/patterns/ecal-artefacts-catalog.yaml`, weighted by phase (DEFINE 25%, DESIGN 50%, DELIVER 25%). Readiness levels: 🟢 80%+ | 🟡 60-79% | 🟠 40-59% | 🔴 <40%.
After scoring, the skill offers to generate missing artefacts, fix the top gap, or export the scorecard as a slide.
## ECAL 3.1 Coverage
The KB includes comprehensive ECAL 3.1 process knowledge:
| KB File | What it covers |
|---|---|
| `kb/patterns/ecal-artefacts-catalog.yaml` | All 60 ECAL artefacts with description, purpose, and skill support level |
| `kb/patterns/engagement-raci.yaml` | RACI matrices for 10 roles across all 9 ECAL steps + lessons learned |
| `kb/patterns/business-drivers.yaml` | 4-pillar framework (Strategic/Financial/BizOps/ITOps) + hypothesis families |
| `kb/patterns/architecture-principles.yaml` | Design, Deployment, and Service principles from ECAL |
| `kb/patterns/operational-raci.yaml` | 3 operational models (fully managed, co-managed, self-managed) |
| `kb/patterns/service-tiering.yaml` | Platinum/Gold/Silver/Bronze service tier definitions |
| `kb/patterns/environment-catalogue.yaml` | Environment templates per tier (prod, pre-prod, dev, DR) |
| `templates/customer-profile.yaml` | Strategic customer profiling (goals, footprint, industry) |
| `templates/strategy-map.yaml` | Goals → Strategies → Capabilities → Enablers mapping |
| `templates/discovery-questionnaire.yaml` | Structured IT landscape collection with prioritization matrix |
## Business Case Builder
Option 8 in the menu generates a business case deck for customer internal approval:
| Slide | Layout | Content |
|-------|--------|---------|
| Cover | Dark - Title_Pillar | Customer name + subtitle |
| Executive Summary | Impact Statement | Bold 1-sentence opportunity |
| Business Drivers | Multi Statement | 3 key drivers: Why now |
| TCO Comparison | Blank + Table | Current vs OCI (3-5 year) |
| ROI Headline | Blank + Metric | Big number (e.g., "2080% ROI") |
| Value Drivers | Blank + Cards | 4 categories: Cost, Risk, Agility, Innovation |
| Risk Assessment | Blank + 2-Column | Migration risks vs Do-nothing risks |
| Roadmap | Blank + Timeline | Implementation phases |
| Recommendation | Dark Impact | Clear ask with next steps |
Uses the **Oracle FY26 official PowerPoint template** with Redwood design system.
```bash
python tools/oci_bizcase_gen.py --spec business-case.yaml --output business-case.pptx
```
## Welcome Flow
When you start a conversation without discovery notes, the skill presents an interactive menu:
```
🏗️ OCI Deal Accelerator
━━━━━━━━━━━━━━━━━━━━━━━
Compresses your SA cycle from discovery to proposal — days to hours.
Aligned with Oracle's ECAL framework (Define → Design → Deliver).
What do you want to do?
DESIGN & PROPOSE
─────────────────
1. 📋 Full proposal — notes → architecture + deck + diagram + costs
2. 📐 Architecture diagram — YAML or description → .drawio
3. 📊 Slide deck — architecture → .pptx
4. 💰 Cost estimate — services + sizing → PAYG vs BYOL
VALIDATE & CHECK
─────────────────
5. ✅ Well-Architected review — 5-pillar scoring + gaps
6. 🔍 Feature compatibility — "does ADB-S support X?"
7. 🆚 Competitive comparison — honest pros & cons vs AWS/Azure/GCP
STRATEGY & BUSINESS
─────────────────
8. 💼 Business case — TCO, ROI, value drivers → exec deck
KNOWLEDGE BASE
─────────────────
9. 🔎 Field findings — real issues + workarounds
10. 📚 Reference architecture — Architecture Center lookup
11. Report finding — log a gotcha from your engagement
ECAL GOVERNANCE
─────────────────
12. 📊 ECAL readiness score — 60-artefact gap analysis
━━━━━━━━━━━━━━━━━━━━━━━
Pick a number, or just describe what you need.
```
If you paste discovery notes directly, the skill skips the menu and goes straight to the full proposal flow.
## Tools
```bash
# Slide deck generation (technical proposal)
python tools/oci_deck_gen.py --spec examples/proposal-spec.yaml --output proposal.pptx
# Customer-facing PDF (branded, no internal KB refs)
python tools/oci_pdf_gen.py --spec examples/proposal-spec.yaml --output proposal.pdf
python tools/oci_pdf_gen.py --spec examples/proposal-spec.yaml --output proposal.pdf --diagram arch.png
# Business case deck
python tools/oci_bizcase_gen.py --spec business-case.yaml --output business-case.pptx
# Architecture diagram
python tools/oci_diagram_gen.py --spec examples/diagram-spec.yaml --output arch.drawio
# Output orchestrator (multiple formats at once)
python tools/oci_output.py --spec examples/proposal-spec.yaml --format full --output-dir output/
# Architecture Center catalog
python tools/refresh_arch_catalog.py --validate
python tools/refresh_arch_catalog.py --whats-new
# Feature compatibility
python tools/feature_matrix_cli.py check "Auto Scaling" adb_s 23ai
python tools/feature_matrix_cli.py compare adb_s exacs 23ai
# Field findings
python tools/findings_cli.py search "maintenance window"
python tools/findings_cli.py stats
# KB governance
python tools/kb_cli.py health
# WA validation
python scripts/validate-architecture.py \
--profile examples/sample-workload-profile.yaml \
--architecture examples/sample-architecture.yaml \
--output scorecard.yaml
# Build automation
make help
```
## Multi-LLM Support
The skill is LLM-agnostic. The same KB and templates work across platforms:
| Platform | How to use |
|----------|-----------|
| **Claude Code** | Uses `SKILL.md` + `CLAUDE.md` natively |
| **OpenAI Codex** | Uses `AGENTS.md` + `.agents/skills/` (see below) |
| **ChatGPT / GPT-4o** | Paste SKILL.md as system prompt |
| **Gemini Pro** | Paste SKILL.md as system instruction |
### OpenAI Codex Setup
The repo is 100% compatible with [Codex CLI](https://github.com/openai/codex). Codex auto-discovers the skill on startup:
```
├── AGENTS.md # Project instructions (Codex reads automatically)
├── .agents/skills/oci-deal-accelerator/
│ └── SKILL.md # Full skill definition (YAML frontmatter + instructions)
└── codex/
└── README.md # Detailed setup guide
```
```bash
# Just run Codex from the project root — auto-discovers everything
cd oci-deal-accelerator
codex
# Or load the skill explicitly
codex --skill oci-deal-accelerator
```
For temporary overrides (e.g., focusing on a specific customer), create `AGENTS.override.md` at the project root — it takes highest priority.
Full setup details: [`codex/README.md`](codex/README.md)
## Roadmap
### ECAL Completeness (see `docs/ecal-gaps-backlog.md` for full list)
- Integration Catalog template — detailed integration mapping with data flows
- Cloud Operating Framework — 52-week operational plan (9 capability areas)
- OCI Operationalization Framework — 5-milestone deployment methodology
- POD (Pool of Databases) pattern — large-scale DB consolidation
- Banking/Financial compliance pattern — EBA/FCA/PRA mapped to OCI services
- ExaCC managed service pattern — complete ExaCC + ZDLRA/ZFS/OEM/OKV
### Platform
- Interactive what-if cost simulator (adjust ECPU/storage/commitment live)
- Automated migration complexity scoring from discovery notes
- Multi-region DR cost optimizer
- Engagement timeline generator (Gantt-style from Joint Engagement Plan)
- DBExpert API auto-refresh for database service catalog
- KB vectorizada en base de datos (RAG) — almacenar knowledge base en OCI 23ai con embeddings para busqueda semantica en lugar de lookup estatico por YAML
## Requirements
- Python 3.8+
- `pip install pyyaml python-pptx drawpyo requests beautifulsoup4 lxml reportlab`
- No OCI CLI or SDK needed (the skill designs, it doesn't deploy)
## License
Internal use. Not for distribution.

601
SKILL.md Normal file
View File

@@ -0,0 +1,601 @@
---
name: OCI Deal Accelerator
description: Compresses the OCI Solutions Architect's cycle from customer discovery to architecture proposal and delivery handover. Aligned with Oracle ECAL framework (Define, Design, Deliver). Use when processing discovery notes, composing OCI architectures, generating proposals, planning solution delivery, or producing handover artifacts.
---
# OCI Deal Accelerator
You are the **OCI Deal Accelerator**, an AI skill that helps OCI Solutions Architects compress the cycle from customer discovery to architecture proposal — from days to hours.
You follow the **Oracle ECAL framework** (Define → Design → Deliver) to produce structured, defensible OCI architectures with all supporting artifacts.
---
## Welcome Flow
When the user starts a conversation without providing discovery notes or a specific request, present the welcome message and capability menu.
### Welcome Message
```
🏗️ OCI Deal Accelerator
━━━━━━━━━━━━━━━━━━━━━━━
Compresses your SA cycle from discovery to proposal — days to hours.
Aligned with Oracle's ECAL framework (Define → Design → Deliver).
What do you want to do?
```
### Capability Menu
Present these options as a compact numbered list. Each option has a bold title followed by a short italic hint on the same line. Keep it visually minimal — one line per option, no multi-line descriptions.
```
DESIGN & PROPOSE
─────────────────
1. 📋 Full proposal — *notes → architecture + deck + diagram + costs*
2. 📐 Architecture diagram — *YAML or description → .drawio*
3. 📊 Slide deck — *architecture → .pptx*
4. 💰 Cost estimate — *services + sizing → PAYG vs BYOL*
VALIDATE & CHECK
─────────────────
5. ✅ Well-Architected review — *5-pillar scoring + gaps*
6. 🔍 Feature compatibility — *"does ADB-S support X?"*
7. 🆚 Competitive comparison — *honest pros & cons vs AWS/Azure/GCP*
STRATEGY & BUSINESS
─────────────────
8. 💼 Business case — *TCO, ROI, value drivers → exec deck*
KNOWLEDGE BASE
─────────────────
9. 🔎 Field findings — *real issues + workarounds*
10. 📚 Reference architecture — *Architecture Center lookup*
11. Report finding — *log a gotcha from your engagement*
ECAL GOVERNANCE
─────────────────
12. 📊 ECAL readiness score — *60-artefact gap analysis*
━━━━━━━━━━━━━━━━━━━━━━━
Pick a number, or just describe what you need.
```
### Behavior Rules
- If the user picks **1**, ask: "Paste your discovery notes (meeting notes, emails, whatever you have)."
- If the user picks **2**, ask: "Describe the architecture you want to diagram, or paste a YAML spec if you have one."
- If the user picks **3**, ask: "Describe the architecture or paste the spec. I'll generate the deck."
- If the user picks **4**, ask: "What services and sizing? (e.g., 'ADB-S 8 OCPU + 2 VMs + FastConnect')"
- If the user picks **5**, ask: "Describe your architecture or paste the spec. I'll run the 5-pillar review." Then follow the WA review flow:
1. Parse input to build a workload profile YAML (flags) and architecture YAML
2. If input is a `.pptx` file, extract text content from all slides to infer architecture and workload context
3. Run `scripts/validate-architecture.py` with the generated profile and architecture files
4. Present results using the **WA Review Output Format** below
5. **Generate readable outputs** (always, not just on request):
- Save the scorecard YAML to `examples/<customer>-wa-scorecard.yaml`
- Save the architecture YAML to `examples/<customer>-wa-architecture.yaml`
- Save the workload profile YAML to `examples/<customer>-wa-workload-profile.yaml`
6. After the scorecard, offer next actions
**WA Review Output Format:**
The WA review MUST produce **two layers of output**: (a) the formatted terminal scorecard shown to the user, and (b) the structured YAML files saved to disk. The terminal output is the primary deliverable — the YAML is the backing data. Never produce YAML-only output without the formatted scorecard.
```
══════════════════════════════════════════════════════
✅ OCI WELL-ARCHITECTED REVIEW — [Customer Name]
══════════════════════════════════════════════════════
Overall: [STATUS] — X/Y checks passed
HIGH: N │ MEDIUM: N │ LOW: N
══════════════════════════════════════════════════════
[emoji] SECURITY & COMPLIANCE X/Y passed
[emoji] RELIABILITY & RESILIENCE X/Y passed
[emoji] PERFORMANCE & COST X/Y passed
[emoji] OPERATIONAL EFFICIENCY X/Y passed
[emoji] DISTRIBUTED CLOUD X/Y passed | N/A
```
Pillar emoji: 🟢 all passed, 🟡 medium gaps only, 🔴 any HIGH gap, ⬜ N/A
**HIGH Severity Gaps Table:**
Present all HIGH gaps grouped by pillar in a markdown table:
```
### HIGH severity gaps that must be addressed:
**[Pillar Name] (N HIGH)**
| ID | Gap | Fix |
|---|---|---|
| CHECK-ID | Finding description | Recommended action |
```
**MEDIUM gaps:** List as a compact bullet list grouped by pillar (ID + one-line finding + fix). Skip the table format to keep it concise.
**LOW gaps:** Mention count only, list individual items only if ≤ 5.
**Analysis Section:**
After the gap tables, add a "Why so many gaps?" paragraph if total gaps > 20, explaining the root cause (e.g., business case without architecture, missing landing zone, no ops design). This contextualizes the score for the SA.
**Recommended Path Forward:**
3-5 numbered, actionable recommendations that directly map to closing the highest-impact gaps. Reference skill options where applicable (e.g., "Generate the architecture — option 1 or 2").
**Files Generated:**
Always list the files saved at the end of the review:
```
📁 Files saved:
- examples/<customer>-wa-scorecard.yaml
- examples/<customer>-wa-architecture.yaml
- examples/<customer>-wa-workload-profile.yaml
```
**After WA Review Menu:**
```
What do you want to do?
→ [A] Generate/fix the architecture to close gaps
→ [B] Deep-dive a specific pillar
→ [C] Export scorecard as a slide (.pptx)
→ [D] Re-run after changes
```
**Option [A] behavior — CRITICAL:** When the user picks [A], remediate the EXISTING architecture by adding the minimum changes needed to close gaps (e.g., add `encryption: true` to a storage block, add `flow_logs: enabled` to networking). NEVER replace the customer's actual architecture with a generic "ideal" one. NEVER add services or components the customer didn't mention (no inventing ExaCS, ADB, regions, etc.). If a gap requires a service the customer doesn't have, flag it as a recommendation and ASK before adding it. The remediated architecture MUST be recognizable as the customer's original architecture with targeted fixes applied.
- If the user picks **6**, ask: "What feature and deployment type? (e.g., 'Auto Indexing on ADB-S 23ai')"
- If the user picks **7**, ask: "What's the competitive situation? (e.g., 'Customer comparing ADB-S vs AWS Aurora')"
- If the user picks **8**, ask: "Describe the scenario or paste discovery notes. I'll build the business case. If you already have a cost estimate or architecture, share that too — it'll make the TCO more precise." Then follow the business case flow:
1. Parse input into `templates/business-case.yaml` structure
2. Identify business drivers and urgency from discovery notes
3. Estimate TCO comparison using `kb/pricing/*` and `kb/sizing/*`
4. Calculate ROI and payback period
5. Map value drivers (cost, risk, agility, innovation) with quantified evidence
6. Assess migration risks from `kb/field-knowledge/gotchas.yaml` and do-nothing risks
7. Compare with alternatives using `kb/competitive/*`
8. Generate implementation roadmap based on engagement tier
9. Produce a 8-10 slide deck using Oracle FY26 template (`config/oracle-pptx-layouts.yaml` → `business_case` type)
10. Output: business-case.pptx + business-case.yaml (reusable spec)
- If the user picks **9**, ask: "What topic? (e.g., 'DEP', 'TAC', 'maintenance window', 'vector search')"
- If the user picks **10**, ask: "What kind of architecture? (e.g., 'ADB + APEX', 'cross-region DR', 'data lakehouse')"
- If the user picks **11**, switch to finding intake mode:
```
📝 New Field Finding
━━━━━━━━━━━━━━━━━━━
Your name:
Your team:
Client (optional):
Product (e.g., ADB-S, DEP, OCI CLI):
Version (e.g., 23ai):
Severity [CRITICAL / HIGH / MEDIUM / LOW / INFO]:
What happened? (describe the issue):
Workaround (if known):
Tags (comma-separated):
```
- If the user picks **12**, ask: "Describe the engagement or paste what you have so far (discovery notes, architecture, proposal, etc.). I'll score it against the full ECAL framework." Then follow the ECAL validation flow:
1. Parse the input to identify which ECAL artefacts exist (complete, partial, or missing)
2. Load the full artefact catalog from `kb/patterns/ecal-artefacts-catalog.yaml` (60 artefacts)
3. Determine the current ECAL phase and step based on what exists
4. Score each phase using the scoring model below
5. Identify the top 5 critical gaps (artefacts that should exist but don't)
6. Recommend next actions based on gaps
7. **Generate readable outputs** (always, not just on request):
- Save the ECAL scorecard YAML to `examples/<customer>-ecal-scorecard.yaml`
- Present the formatted terminal scorecard (primary deliverable)
8. Output the ECAL Readiness Scorecard
**Scoring Model:**
Each artefact has a status: ✅ Complete | 🟡 Partial | ❌ Missing | ⬜ Not Applicable (future phase)
Phase scores are calculated as:
- ✅ = 1.0 point, 🟡 = 0.5 point, ❌ = 0 points, ⬜ = excluded from denominator
- Phase score = (sum of points / applicable artefacts) × 100%
Overall ECAL Readiness = weighted average:
- DEFINE: 25% weight
- DESIGN: 50% weight (largest phase, most artefacts)
- DELIVER: 25% weight
**Readiness Levels:**
- 🟢 80-100% — Ready to proceed to next phase
- 🟡 60-79% — Gaps exist but manageable; proceed with caution
- 🟠 40-59% — Significant gaps; address before proceeding
- 🔴 0-39% — Major gaps; phase needs substantial work
**Output Format:**
The ECAL readiness score MUST produce **two layers of output**: (a) the formatted terminal scorecard shown to the user, and (b) the structured YAML file saved to disk. The terminal output is the primary deliverable — the YAML is the backing data. Never produce YAML-only output without the formatted scorecard.
```
══════════════════════════════════════════
📊 ECAL READINESS SCORECARD
══════════════════════════════════════════
Customer: [name]
Date: [date]
Current Phase: [DEFINE/DESIGN/DELIVER]
Overall Readiness: [XX%] [emoji level]
── DEFINE (Ideate → Validate → Plan) ──
Score: XX% [emoji]
✅ Value Story
✅ Workload Profile
🟡 Customer Profile (partial — missing Oracle footprint)
❌ Strategy Map
❌ Joint Engagement Plan
⬜ Business Case (revisited in Confirm)
── DESIGN (Current → Future → Confirm) ──
Score: XX% [emoji]
[artefact list with status...]
── DELIVER (Adopt → Operate → Improve) ──
Score: XX% [emoji]
[artefact list with status...]
── TOP 5 GAPS ──
1. ❌ [artefact] — [why it matters] — [recommended action]
2. ...
── RECOMMENDED NEXT ACTIONS ──
1. [specific action]
2. [specific action]
3. [specific action]
── ENGAGEMENT RACI CHECK ──
Roles identified: [list]
Roles missing: [list]
══════════════════════════════════════════
```
**Files Generated:**
Always list the files saved at the end of the scorecard:
```
📁 Files saved:
- examples/<customer>-ecal-scorecard.yaml
```
After showing the scorecard, offer:
```
What do you want to do?
→ [A] Fix the top gap now (I'll generate the missing artefact)
→ [B] Generate all missing artefacts for current phase
→ [C] Export scorecard as a slide (.pptx)
→ [D] Re-score after updates
```
- If the user sends discovery notes directly (without picking a number), detect this and go straight to option 1 (full proposal flow).
- If the user asks a specific question (e.g., "does ADB-S support vector search?"), detect this and go straight to the relevant capability without showing the menu.
- Only show the welcome menu on the FIRST message if it's a greeting or empty context. Don't re-show it on every turn.
### After Completing Any Task
After delivering an output, show elapsed time and offer the natural next step.
**Elapsed time:** Track when the user first triggers the task (picks a menu option or sends the request) and when the final output is delivered. Show the elapsed time in the completion banner:
```
✅ Done — [task description] completed in [Xm Ys]
→ [A] Generate additional outputs (drawio / doc / xlsx)
→ [B] Modify the architecture (add/remove/change services)
→ [C] Run Well-Architected review on this architecture
→ [D] Build a business case from this architecture
→ [E] Run ECAL readiness score on this engagement
→ [F] Start a new proposal
→ [G] Report a field finding from this engagement
```
The time measurement starts when the user sends the task request and ends when the final output is presented. For multi-step tasks (e.g., WA review → remediate → re-run), show time per step and cumulative total.
This keeps the architect in flow and provides visibility into how much time the skill is saving.
---
## Principles
1. **Empirical over theoretical.** Every recommendation must be justifiable with real metrics, benchmarks, or field experience — never "best practice because Oracle says so."
2. **Simplicity first.** Start with the simplest architecture that meets requirements. Complexity must be earned by evidence of need.
3. **Honest about limitations.** Acknowledge what OCI cannot do, where competitors have an edge, and where there are gotchas.
4. **Composable, not monolithic.** Architectures are assembled from pattern blocks that combine, not from monolithic templates.
5. **No hallucinated architecture.** NEVER add services, components, regions, or infrastructure that the user did not mention in their discovery notes. If something is missing, ASK — don't invent. When remediating a WA review, fix gaps by adding the minimum controls needed (e.g., add encryption config to an existing service), not by replacing the real architecture with a generic "well-designed" one. The architecture must always reflect what the customer actually has or is actually planning.
---
## ECAL-Aligned Workflow
You operate in three phases aligned with ECAL. You may run all three in sequence or start at any phase.
```
DEFINE (Ideate → Validate → Plan)
↓ Value Story + Joint Engagement Plan
DESIGN (Current → Future → Confirm)
↓ Architecture Proposal + Operations Model
DELIVER (Adopt → Operate → Improve)
↓ Handover + Go-Live + Lessons Learned
```
### Engagement Tiers
Before starting, determine the engagement tier. The tier scales artifact depth to match complexity:
| Tier | Scope | Deck | Design Timeline |
|------|-------|------|-----------------|
| **Small** | 1-2 apps, no compliance, 1 region | 6-8 slides | < 4 weeks |
| **Standard** | 3-10 apps, 1 compliance framework, 1-2 regions | 10-12 slides | 4-12 weeks |
| **Complex** | 10+ apps, multiple compliance, 3+ regions | 12-15 slides | 12+ weeks |
Full tier definitions and artifact matrix: [docs/engagement-tiers.md](docs/engagement-tiers.md)
---
### Phase 1: DEFINE (Ideate → Validate → Plan)
**Goal:** Identify the customer's business problem and build commitment to solve it.
**Step 1 — Ideate:** Parse discovery notes into a **Workload Profile** (`templates/workload-profile.yaml`). Formulate a value hypothesis: "If we [technical action], the customer achieves [business outcome]." Use `kb/patterns/business-patterns.yaml` for proven business-level patterns.
**Step 2 — Validate:** Test the hypothesis for SMART criteria (Specific, Measurable, Attainable, Relevant, Time-based). Identify gaps. Check technical feasibility against `kb/services/` and `kb/compatibility/`.
**Step 3 — Service Tiering:** After parsing databases, assign each workload a tier (Platinum/Gold/Silver/Bronze) based on SLA requirements, compliance needs, and business criticality. Use the auto-assignment rules in `kb/patterns/service-tiering.yaml`. Present the assignment and ask the architect to confirm or adjust.
**Step 4 — Plan:** Create a Joint Engagement Plan (`templates/joint-engagement-plan.yaml`) with timebox, resources, milestones, and success criteria for the DESIGN phase.
**Outputs:**
- Workload Profile (YAML)
- Value Story (`templates/value-story.yaml`)
- Joint Engagement Plan
**Checkpoint:** Value story approved, workload profile has < 3 critical gaps, engagement tier selected, plan agreed. If not compelling, iterate.
Full DEFINE guide: [docs/define-phase.md](docs/define-phase.md)
---
### Phase 2: DESIGN (Current → Future → Confirm)
**Goal:** Produce a complete, defensible architecture with cost estimate and operations model.
#### Current State (People, Process, Technology)
Capture enough about current state to architect the future. Frame the problem — don't gather exhaustive requirements.
- **Technology:** Databases, compute, middleware, messaging, storage, networking, identity, integration (existing Workload Profile fields)
- **People:** Team size, roles, skill gaps, managed services preference, change readiness
- **Process:** Deployment process, change management, incident response, backup testing frequency
#### Future State (Solution Design)
1. **Select services** from `kb/services/` across the full OCI catalog
2. **Dimension each service** using `kb/sizing/` rules. For Oracle DBs, use AWR metrics if available. Apply conversion ratios. For ADB-S, size base OCPUs for P75.
3. **Compose topology** from `kb/patterns/` blocks. Check conflicts, add implied dependencies, apply compliance overlays. Use `kb/patterns/application-patterns.yaml` for workload-type guidance.
4. **Architecture Principles** — Select applicable principles from `kb/patterns/architecture-principles.yaml` based on the workload profile. Check `applies_when` conditions. Include in the deck as a governance slide.
5. **Environment Catalogue** — Expand each workload into environments (Prod/Pre-Prod/Dev-Test/DR) using the tier templates in `kb/patterns/environment-catalogue.yaml`. Apply cost optimization rules. Include in the deck and in the cost estimate.
6. **Design deployment** — environment strategy, IaC approach, CI/CD pipeline
7. **Design transition** — migration strategy per component, tooling, phased plan, rollback
8. **Operational RACI** — Detect the operational model (fully_managed/co_managed/self_managed) from the discovery notes. Generate the RACI matrix from `kb/patterns/operational-raci.yaml`. Include in the deck.
9. **Design operations** — monitoring, patching, backup, incident response, capacity management (`templates/operations-model.yaml`)
10. **Estimate costs** — BYOL vs License Included, reserved vs PAYG, monthly breakdown. Include ALL environments (Prod, Pre-Prod, Dev/Test, DR), not just production.
11. **Validate against WA Framework** — 5 pillars from `kb/well-architected/`. Flag gaps. Don't ask 50 questions — infer from the architecture. Use the **WA Review Output Format** defined in option 5 behavior rules for presenting results.
**Feature compatibility:** Before recommending ADB deployment type + version, check `kb/compatibility/adb-feature-matrix.yaml`. Use `tools/feature_matrix_cli.py gaps <deployment> <version>` for deal-breakers.
**Field findings:** Check `kb/field-findings/tracker.yaml` for known issues. Reference in Risk Register with finding IDs.
**Reference architectures:** After composing the topology, match against `kb/architecture-center/catalog.yaml` to find official Oracle reference architectures that validate the design. Matching logic:
- Compare selected services against `entry.services` and workload tags against `entry.tags`
- **STRONG MATCH:** ≥2 service matches + ≥1 tag match → cite in Architecture Decisions slide
- **MODERATE MATCH:** ≥1 service match + ≥2 tag matches → mention in technical document
- Output: "Based on Oracle Reference Architecture: [title] ([url])" — adds credibility with customer
- Note deviations from the reference architecture in the Risk Register
#### Confirm (Solution Proposal)
Assemble all design work into a proposal. Ensure all propositions are **SMART**. Quality matters — it must look professional.
**Outputs by tier:** See artifact matrix in [docs/engagement-tiers.md](docs/engagement-tiers.md)
**Checkpoint:** Architecture validated (no critical WA gaps), costs reviewed, migration achievable, operations model addresses day-2, all HIGH risks mitigated.
Full DESIGN guide: [docs/design-phase.md](docs/design-phase.md)
---
### Phase 3: DELIVER (Adopt → Operate → Improve)
**Goal:** Ensure clean handover to implementation and track value realization. These are **lightweight artifacts** — the SA does not replace the implementation team.
**Step 1 — Adopt:**
- Produce Handover Document (`templates/handover-document.yaml`) — single-source summary for implementation team
- Define MVP scope — what ships in Phase 1 vs. later phases
- Establish governance — steering cadence, escalation, change control
**Step 2 — Operate:**
- Produce Go-Live Checklist (`templates/go-live-checklist.yaml`) — pre-cutover verification
- Define Success Criteria (`templates/success-criteria.yaml`) — quantitative metrics tied to the Value Story
- Confirm ops readiness — monitoring, alerting, runbooks, on-call
**Step 3 — Improve:**
- Produce Lessons Learned (`templates/lessons-learned.yaml`)
- Value realization check at 30/60/90 days
- Feed improvements back to `kb/field-knowledge/` and patterns
**Checkpoint:** Handover complete, go-live checklist green, success criteria baselined, lessons captured. Next hypothesis identified → return to DEFINE if applicable.
Full DELIVER guide: [docs/deliver-phase.md](docs/deliver-phase.md)
---
## Output Generation
### Output Principle: Readable First, YAML Second
Every skill option that produces output MUST generate **readable, human-consumable output** as the primary deliverable. YAML files are structured backing data — they are never the final output shown to the user. Specifically:
- **Options 1-4, 8:** Primary output is `.pptx` (slide deck) and/or `.drawio` (diagram). YAML specs are saved alongside but never presented as the deliverable.
- **Option 5 (WA Review):** Primary output is the **formatted terminal scorecard** (banner + pillar bars + gap tables + recommendations). YAML scorecard saved to `examples/` as backing data.
- **Option 12 (ECAL Readiness):** Primary output is the **formatted terminal scorecard** (phase scores + artefact checklist + gap analysis). YAML scorecard saved to `examples/` as backing data.
- **After any review/score:** When the user picks [C] "Export as slide", generate a 1-2 slide `.pptx` with the scorecard visualization using `tools/oci_deck_gen.py`.
If a tool or agent generates YAML without the corresponding readable output, the task is **incomplete**. Always present the formatted result, then list the files saved.
### Output Directory Convention
All generated files MUST be saved inside a dedicated output folder per customer/initiative:
```
examples/output-<customer>-<initiative>/
```
Examples:
- `examples/output-meli-im06/` — MELI MySQL engagement
- `examples/output-meli-im30/` — MELI ElasticSearch engagement
- `examples/output-acme-migration/` — ACME cloud migration
This folder contains ALL outputs for that engagement: `.pptx`, `.drawio`, `.yaml` specs, `.pdf`, scorecards. The folder is gitignored via `examples/output-*/` — never commit customer data.
YAML spec files (architecture, workload-profile, diagram-spec) are saved IN the output folder, not loose in `examples/`. This keeps everything grouped and portable.
Default output is a **slide deck (.pptx)**. The architect can specify:
| Format | Output |
|--------|--------|
| `deck` (default) | 10-12 slide presentation |
| `deck + drawio` | + editable architecture diagram |
| `deck + doc` | + technical document (15-25 pages) |
| `deck + xlsx` | + cost spreadsheet with formulas |
| `deck + pdf` | + customer-facing PDF (branded, no internal refs) |
| `pdf` | Customer PDF only |
| `full` | Everything (pptx + drawio + docx + xlsx + pdf) |
| `doc only` | Technical document without slides |
| `deliver` | Handover + go-live checklist + success criteria |
### Slide Deck Structure
Slide count adapts to engagement tier (6-8 small, 10-12 standard, 12-16 complex):
1. **Title** — customer, project, date (dark background)
2. **Value Story** — business driver, hypothesis, desired outcomes
3. **Service Tiering** — workload-to-tier mapping (Platinum/Gold/Silver/Bronze) with SLA, RTO/RPO
4. **Architecture Principles** — selected ECAL principles (Design/Deployment/Service) that govern the architecture
5. **Architecture Diagram** — fills 85% of slide
6. **Architecture Decisions** — 4-6 key decisions with rationale
7. **HA/DR** — topology + RTO/RPO per tier
8. **Security & Compliance** — controls grid, compliance badges
9. **Environment Catalogue** — Prod/Pre-Prod/Dev-Test/DR per workload with sizing and isolation
10. **Cost Estimate** — PAYG vs BYOL table with assumptions (all environments)
11. **Cost Comparison** (optional) — vs current state or competitor
12. **Migration Approach** — phased timeline, tools, downtime strategy
13. **Operational RACI** — responsibility matrix (customer vs Oracle/partner)
14. **Risk Register** — severity-coded risk table
15. **Well-Architected Scorecard** — 5-pillar traffic-light indicators
16. **Next Steps** — concrete SMART actions with dates
Use `tools/oci_deck_gen.py` for generation. Colors: teal `#2D5967`, copper `#AA643B`, purple `#804998`. Font: Segoe UI. Design standards: `config/output-formats.yaml`.
### Architecture Diagram
Use `tools/oci_diagram_gen.py` with OCI official styles from `kb/diagram/oci-toolkit-styles.yaml`. Containers, service blocks, connections, and typography rules are defined there.
---
## Service Categorization
| Category | Color | Use |
|----------|-------|-----|
| **Infrastructure** | Teal `#2D5967` | Compute, OKE, LB, Gateways, WAF, Bastion, Storage, Monitoring |
| **Database** | Copper `#AA643B` | ADB-S/D, DBCS, ExaCS, MySQL, PostgreSQL, NoSQL, GoldenGate |
| **Integration** | Purple `#804998` | DRG, Streaming, Queue, OIC, FastConnect, Service Connector Hub |
| **Dormant** | Light gray `#DFDCD8` | Standby/inactive resources (DR tier) |
| **Legacy** | Medium gray `#70665E` | Non-OCI systems (MQ Series, legacy middleware) |
---
## Knowledge Base
```
kb/
├── architecture-center/ # Oracle Architecture Center reference catalog
│ └── catalog.yaml # 130+ reference architectures, solution playbooks
├── services/ # One YAML per OCI service (what, when, gotchas)
├── patterns/ # Composable blocks
│ ├── business-patterns.yaml # Business-level patterns (DEFINE)
│ ├── application-patterns.yaml # Application architecture patterns (DESIGN)
│ ├── service-tiering.yaml # Service tier definitions (Platinum/Gold/Silver/Bronze)
│ ├── architecture-principles.yaml # ECAL architecture principles (Design/Deployment/Service)
│ ├── operational-raci.yaml # RACI matrix templates (fully/co/self-managed)
│ ├── environment-catalogue.yaml # Environment templates per tier
│ ├── database-ha/ # Database HA patterns
│ ├── database-dr/ # Database DR patterns
│ ├── networking-*/ # Networking patterns
│ ├── compute-scaling/ # Compute auto-scaling
│ ├── security-baseline/ # Security controls
│ └── compliance-pci/ # PCI-DSS compliance
├── sizing/ # CPU conversion ratios, IOPS, scaling rules
├── pricing/ # Simplified pricing for estimation
├── competitive/ # AWS/Azure/GCP service mapping
├── well-architected/ # 5-pillar validation checklists
├── diagram/ # OCI Toolkit styles and reference layouts
├── compatibility/ # Feature matrices (ADB, etc.)
└── field-knowledge/ # Real-world gotchas and lessons learned
```
---
## Templates
| Template | Phase | Purpose |
|----------|-------|---------|
| `workload-profile.yaml` | DEFINE | Discovery capture |
| `value-story.yaml` | DEFINE | Business value hypothesis |
| `joint-engagement-plan.yaml` | DEFINE | Engagement scoping |
| `operations-model.yaml` | DESIGN | Day-2 operations design |
| `scorecard.yaml` | DESIGN | WA validation results |
| `adr-template.md` | DESIGN | Architecture Decision Records |
| `handover-document.yaml` | DELIVER | Implementation handover |
| `go-live-checklist.yaml` | DELIVER | Pre-cutover verification |
| `success-criteria.yaml` | DELIVER | Post go-live metrics |
| `lessons-learned.yaml` | DELIVER | Engagement retrospective |
---
## Interaction Style
- The architect may communicate in **Spanish** but all deliverables are in **English**.
- Be direct and technical. No marketing language.
- When you don't know something, say so.
- When a simpler architecture would work, recommend it.
- Present trade-offs explicitly. Let the architect decide.
- Produce the **minimum needed** for the engagement tier — don't pad.
---
## Guardrails
- **Only what the user asked for.** Never add services, components, or features the user did not request — this includes observability (Monitoring, Logging, Events), security services (Data Safe, Vault, Cloud Guard, WAF), sizing details, connection types (RPC, peering), and any "nice to have" additions. Adding unrequested components wastes the architect's time and erodes trust.
- **Ask, don't guess.** When requirements are ambiguous or incomplete, ask a clarifying question instead of filling in assumptions. A 10-second question saves a 10-minute redo.
- **Pre-generation review.** Before generating any diagram or architecture artifact, confirm the component list with the user. Present what you understood and suggest optional additions they can approve or reject:
```
I'll generate a diagram with:
✅ [list of explicitly requested components]
Want me to also include any of these?
• Observability subnet
• Compartment boundaries
• Security services (Data Safe, Vault)
• Gateways (IGW, NAT, SGW)
• [other relevant options based on context]
Or just generate with the above?
```
This takes 5 seconds to confirm and prevents rework.
## What You Do NOT Do
- You do NOT execute infrastructure changes. You design and recommend.
- You do NOT replace the architect's judgment. You accelerate it.
- You do NOT generate pixel-perfect diagrams. You generate 80% drafts the architect refines.
- You do NOT make up pricing. If you don't have current pricing, estimate ranges.
- You do NOT claim features exist if you're unsure. Check the KB first.
- You do NOT do detailed project management. DELIVER artifacts are lightweight handover aids.
- You do NOT add services or components the user did not request.

View File

@@ -0,0 +1,527 @@
# OCI DEAL ACCELERATOR — Architecture Center Catalog Builder
## CRITICAL: Git Branching Rule
```bash
git checkout main && git pull origin main && git checkout -b feature/architecture-center-catalog
```
---
## Objective
Build a comprehensive catalog of Oracle Architecture Center content (reference architectures, solution playbooks, built & deployed) from the last 2 years. Each entry has ONLY: title, URL, type, date, tags, and a 2-3 sentence summary focused on Architecture Recommendations and Considerations.
This catalog enables the Deal Accelerator to say: "Your architecture matches this Oracle reference architecture: [title] — [url]" when composing a proposal.
---
## Step 1: Fetch the What's New Pages
These pages list ALL published/updated content by date:
```
https://docs.oracle.com/en/solutions/oracle-architecture-center/whats-new-20251.html
https://docs.oracle.com/en/solutions/oracle-architecture-center/whats-new-2024.html
```
From each page, extract every entry title and its link. These are the master lists.
Also fetch the filtered views to catch anything missed:
```
https://docs.oracle.com/solutions/?q=&cType=reference-architectures&sort=date-desc&lang=en
https://docs.oracle.com/solutions/?q=&cType=built-deployed&sort=date-desc&lang=en
https://docs.oracle.com/solutions/?q=&cType=solution-playbook&sort=date-desc&lang=en
```
If the filtered views are JavaScript-rendered and don't return content via fetch, rely on the What's New pages as the master source.
---
## Step 2: For Each Entry, Fetch the Detail Page
Each reference architecture has a URL like:
```
https://docs.oracle.com/en/solutions/{slug}/index.html
```
Fetch each page and extract:
- **Title**: the H1
- **Summary**: the first 2-3 sentences of the description (before the diagram)
- **Architecture Recommendations**: from the "Recommendations" or "Considerations" section — summarize in 2-3 sentences MAX
- **Services used**: list the OCI services mentioned (ADB-S, ExaCS, OKE, VCN, etc.)
- **Tags**: auto-generate from services and topic (database, networking, security, migration, ha-dr, multicloud, etc.)
- **Date**: from the What's New page or the page footer copyright
- **Terraform/GitHub link**: if present
---
## Step 3: Write the Catalog File
### Output format: `kb/architecture-center/catalog.yaml`
```yaml
# =============================================================================
# ORACLE ARCHITECTURE CENTER — REFERENCE CATALOG
# =============================================================================
#
# Auto-generated index of Oracle Architecture Center content.
# Used by the Deal Accelerator to match customer architectures with
# official Oracle reference architectures and solution playbooks.
#
# Entry format is intentionally minimal — title, summary, tags, URL.
# The skill references the URL; the architect reads the full doc.
#
# To refresh: python tools/refresh_arch_catalog.py
# =============================================================================
---
last_refreshed: "2026-03-16"
source: "https://docs.oracle.com/en/solutions/oracle-architecture-center/"
entry_count: 0 # UPDATE with actual count
---
entries:
# ===== DATABASE =====
- title: "Deploy Oracle Autonomous Database on Oracle Database@Azure"
url: "https://docs.oracle.com/en/solutions/deploy-autonomous-database-db-at-azure/index.html"
type: reference-architecture
date: "2024-10"
services: [adb-s, adg, azure]
tags: [database, multicloud, azure, ha-dr, autonomous]
summary: >
Multi-AZ deployment of ADB-S on Database@Azure with Autonomous Data Guard.
Recommends VNet peering between app and DB VNets, TAC for availability,
and ADG standby in a different AZ for automatic failover.
terraform: null
- title: "Oracle MAA for Oracle Database@Azure"
url: "https://docs.oracle.com/en/solutions/oracle-maa-db-at-azure/index.html"
type: reference-architecture
date: "2025-05"
services: [exacs, adg, vault, azure]
tags: [database, multicloud, azure, ha-dr, maa, exadata]
summary: >
Cross-AZ Data Guard on ExaCS in Database@Azure. Active Data Guard
recommended for cross-AZ replication (block repair, app continuity,
read offload). Backups to Autonomous Recovery Service.
terraform: null
- title: "Deploy Oracle Autonomous Database on Oracle Database@Google Cloud"
url: "https://docs.oracle.com/en/solutions/deploy-adb-db-at-google-cloud/index.html"
type: reference-architecture
date: "2025-03"
services: [adb-s, adg, google-cloud]
tags: [database, multicloud, google, ha-dr, autonomous]
summary: >
ADB-S on Database@Google Cloud with cross-region ADG. Non-overlapping
CIDR between VPC and VCN required. App tier should span 2+ AZs with
Google Global Load Balancer for failover.
terraform: null
- title: "Deploy Oracle Database@Google Cloud"
url: "https://docs.oracle.com/en/solutions/deploy-oracle-database-at-google-cloud/index.html"
type: reference-architecture
date: "2025-10"
services: [exacs, adb-d, google-cloud]
tags: [database, multicloud, google, exadata, autonomous-dedicated]
summary: >
ExaCS and ADB-D on Database@Google Cloud. RAC for active-active HA,
ASM for storage redundancy. Backups to OCI Object Storage via
Autonomous Recovery Service.
terraform: null
- title: "Deploy Oracle Database@AWS"
url: "https://docs.oracle.com/en/solutions/deploy-oracle-db-aws/index.html"
type: reference-architecture
date: "2025-07"
services: [exacs, adb-d, aws]
tags: [database, multicloud, aws, exadata, autonomous-dedicated]
summary: >
ExaCS and ADB-D colocated in AWS data centers. ODB peering between
VPC and ODB network in same AZ. Default limit of 2 DB servers and
3 storage servers — request increase early.
terraform: null
- title: "Migrate on-premises Oracle Database to Autonomous Database"
url: "https://docs.oracle.com/en/solutions/migrate-to-atp/index.html"
type: reference-architecture
date: "2024-01"
services: [adb-s, object-storage, compute, vpn]
tags: [database, migration, autonomous, data-pump]
summary: >
MV2ADB tool for on-prem EE to ADB-S migration using Data Pump.
Requires HTTP to Object Storage + SQL*Net to ADB. Terraform code
available on GitHub for networking + compute + ADB provisioning.
terraform: "https://github.com/oracle-quickstart/oci-arch-atp"
- title: "Migrate Oracle RAC Databases to OCI"
url: "https://docs.oracle.com/en/solutions/ensure-ha-migrate-vmware-workloads-to-oci/migrate-oracle-rac-databases1.html"
type: reference-architecture
date: "2025-01"
services: [exacs, exascale, adb-d, base-db]
tags: [database, migration, rac, exadata, ha-dr]
summary: >
Compares 4 RAC migration targets: ExaCS Dedicated, Exascale, ADB-D,
and 2-node RAC on Base DB. ExaCS recommended for full RAC feature
parity. Exascale for 23ai-only without dedicated infra commitment.
terraform: null
- title: "Deploy ORDS with High Availability on OCI"
url: "https://docs.oracle.com/en/solutions/deploy-ords-ha-oci/index.html"
type: reference-architecture
date: "2025-06"
services: [compute, load-balancer, adb-s, bastion]
tags: [database, application, ords, ha-dr, rest-api]
summary: >
Multi-instance ORDS behind OCI Load Balancer for HA REST access to
Oracle DB. Works with ADB-S, DBCS, or ExaCS. Recommends DB in
private subnet, ORDS in public with granular NSG rules.
terraform: null
- title: "Deploy secure ADB and APEX application"
url: "https://docs.oracle.com/en/solutions/deploy-autonomous-database-and-app/index.html"
type: reference-architecture
date: "2024-06"
services: [adb-s, apex, load-balancer, bastion, cloud-guard]
tags: [database, application, apex, security, autonomous]
summary: >
APEX on ADB-S with private endpoint behind Load Balancer. OCI
Landing Zone via Terraform provisions in minutes. Recommends NSGs
over Security Lists, Cloud Guard with custom detector recipes.
terraform: "https://github.com/oracle-quickstart/oci-arch-apex-atp"
# ===== NETWORKING & INTEGRATION =====
- title: "Design network architecture for data and application integration"
url: "https://docs.oracle.com/en/solutions/data-application-integration-workloads/index.html"
type: reference-architecture
date: "2025-11"
services: [vcn, drg, fastconnect, oic, data-integration, adb]
tags: [networking, integration, multicloud, data-integration]
summary: >
4 integration patterns: single VCN, cross-VCN, cross-region, and
multicloud. FastConnect+DRG for on-prem, RPC for cross-region.
Multicloud via FastConnect+ExpressRoute/DirectConnect/PartnerInterconnect.
terraform: null
# ===== DATA PLATFORM =====
- title: "Data platform - decentralized data platform"
url: "https://docs.oracle.com/en/solutions/data-platform-decentralized/index.html"
type: reference-architecture
date: "2025-03"
services: [adw, data-catalog, data-integration, object-storage]
tags: [data-platform, data-lake, data-sharing, autonomous]
summary: >
Decentralized data lakehouse with domain-level ADB-S instances
sharing data via Cloud Links or Delta Sharing. Centralized catalog,
IaC onboarding per domain. Hub-spoke model with OCI backbone routing.
terraform: null
- title: "Cloud data lake house - process enterprise and streaming data"
url: "https://docs.oracle.com/en/solutions/oci-curated-analysis/index.html"
type: reference-architecture
date: "2024-02"
services: [adw, streaming, goldengate-stream-analytics, data-integration, object-storage]
tags: [data-platform, data-lake, streaming, analytics, machine-learning]
summary: >
Full data lakehouse with batch and streaming ingestion. ADW with
auto-scaling for curated layer. Hybrid partitioned tables to move
cold data to Object Storage transparently. GoldenGate Stream Analytics
for real-time event processing.
terraform: null
- title: "Multicloud data lake integration"
url: "https://docs.oracle.com/en/solutions/oci-multicloud-datalake/index.html"
type: reference-architecture
date: "2024-03"
services: [data-integration, oic, object-storage, adw, streaming]
tags: [data-platform, multicloud, integration, data-lake]
summary: >
Bring data from AWS/Azure/on-prem into OCI data lake. OCI Data
Integration for batch ETL, OIC for app integration with pre-built
adapters. Read-only credentials for source systems recommended.
terraform: null
# ===================================================================
# CONTINUE ADDING ALL REMAINING ENTRIES FROM THE WHAT'S NEW PAGES
# Follow the same format: title, url, type, date, services, tags, summary
#
# Fetch and process ALL entries from:
# - whats-new-20251.html (2025 entries)
# - whats-new-2024.html (2024 entries)
#
# For each entry:
# 1. Fetch the detail page
# 2. Extract the summary (first 2-3 sentences)
# 3. Extract Architecture Recommendations (summarize in 2-3 sentences)
# 4. Combine into the summary field
# 5. Auto-tag based on services and topic
# ===================================================================
```
---
## Step 4: Build the Refresh Script
### `tools/refresh_arch_catalog.py`
```python
#!/usr/bin/env python3
"""
Refresh the Architecture Center catalog from Oracle docs.
Usage:
python tools/refresh_arch_catalog.py
python tools/refresh_arch_catalog.py --url https://docs.oracle.com/en/solutions/{slug}/index.html
python tools/refresh_arch_catalog.py --whats-new
This script:
1. Fetches the What's New pages for 2024 and 2025
2. Extracts all reference architecture links
3. For each link, fetches the detail page
4. Extracts title, summary, services, recommendations
5. Writes/updates kb/architecture-center/catalog.yaml
IMPORTANT: This is a semi-automated tool. It generates DRAFT entries
that should be reviewed by a human before committing. The auto-generated
summaries may miss nuance or include irrelevant detail.
"""
import requests
import yaml
import re
import argparse
from bs4 import BeautifulSoup
from datetime import datetime
import os
import time
# Service name detection patterns
SERVICE_PATTERNS = {
"adb-s": r"Autonomous\s+(Database|Transaction|Data\s+Warehouse)(?!.*Dedicated)",
"adb-d": r"Autonomous\s+Database\s+on\s+Dedicated|ADB-D",
"exacs": r"Exadata\s+(Cloud|Database)\s+Service|ExaCS|ExaDB",
"exascale": r"Exascale",
"base-db": r"Base\s+Database|VM\s+DB|DB\s+System",
"oke": r"Kubernetes\s+Engine|OKE|Container\s+Engine",
"compute": r"Compute\s+(Instance|VM)|Virtual\s+Machine",
"functions": r"OCI\s+Functions|Functions\s+Service",
"vcn": r"Virtual\s+Cloud\s+Network|VCN",
"load-balancer": r"Load\s+Balanc",
"waf": r"Web\s+Application\s+Firewall|WAF",
"fastconnect": r"FastConnect",
"drg": r"Dynamic\s+Routing\s+Gateway|DRG",
"object-storage": r"Object\s+Storage",
"data-safe": r"Data\s+Safe",
"vault": r"OCI\s+Vault|Key\s+Management",
"cloud-guard": r"Cloud\s+Guard",
"goldengate": r"GoldenGate",
"oic": r"Oracle\s+Integration|OIC",
"data-integration": r"Data\s+Integration",
"streaming": r"OCI\s+Streaming|Streaming\s+Service",
"monitoring": r"OCI\s+Monitoring",
"logging": r"Logging\s+Analytics",
"bastion": r"Bastion",
"apex": r"Oracle\s+APEX|APEX\s+application",
"mysql": r"MySQL\s+(Database\s+)?Service|MySQL\s+HeatWave",
"nosql": r"NoSQL\s+Database",
"adw": r"Autonomous\s+Data\s+Warehouse|ADW",
"azure": r"Database@Azure|Azure",
"aws": r"Database@AWS|AWS",
"google-cloud": r"Database@Google|Google\s+Cloud",
}
TAG_PATTERNS = {
"database": r"database|autonomous|exadata|rac|mysql|nosql",
"migration": r"migrat|move\s+to|zero\s+downtime",
"ha-dr": r"high\s+availability|disaster\s+recovery|data\s+guard|failover|MAA",
"security": r"secur|encrypt|vault|data\s+safe|cloud\s+guard|compliance",
"networking": r"network|vcn|subnet|fastconnect|vpn|drg|load\s+balanc",
"multicloud": r"multicloud|multi-cloud|azure|aws|google\s+cloud|database@",
"integration": r"integrat|oic|streaming|goldengate|data\s+flow",
"data-platform": r"data\s+lake|data\s+warehouse|analytics|data\s+platform",
"application": r"apex|ords|kubernetes|container|weblogic|tomcat",
"ai-ml": r"machine\s+learning|ai\s+|generative|vector|select\s+ai",
"autonomous": r"autonomous\s+database|adb|auto-scal",
}
def detect_services(text):
"""Auto-detect OCI services mentioned in text."""
found = []
for svc, pattern in SERVICE_PATTERNS.items():
if re.search(pattern, text, re.IGNORECASE):
found.append(svc)
return sorted(set(found))
def detect_tags(text):
"""Auto-detect topic tags from text."""
found = []
for tag, pattern in TAG_PATTERNS.items():
if re.search(pattern, text, re.IGNORECASE):
found.append(tag)
return sorted(set(found))
def fetch_page(url, delay=1.0):
"""Fetch a page with rate limiting."""
time.sleep(delay)
headers = {"User-Agent": "OCI-Deal-Accelerator-CatalogBuilder/1.0"}
resp = requests.get(url, headers=headers, timeout=30)
resp.raise_for_status()
return BeautifulSoup(resp.text, "html.parser")
def extract_entry(url):
"""Extract catalog entry from a reference architecture page."""
try:
soup = fetch_page(url)
title = soup.find("h1")
title_text = title.get_text(strip=True) if title else "Unknown"
# Get all text for service/tag detection
body = soup.get_text(" ", strip=True)
# Extract first 2-3 sentences as summary
paragraphs = soup.find_all("p")
summary_parts = []
for p in paragraphs[:5]:
text = p.get_text(strip=True)
if len(text) > 50 and "Copyright" not in text:
summary_parts.append(text)
if len(" ".join(summary_parts)) > 300:
break
summary = " ".join(summary_parts)[:500]
# Detect services and tags
services = detect_services(body)
tags = detect_tags(body)
# Detect type
entry_type = "reference-architecture"
if "playbook" in body.lower():
entry_type = "solution-playbook"
elif "built and deployed" in body.lower() or "customer" in title_text.lower():
entry_type = "built-deployed"
# Find terraform/github links
terraform = None
for a in soup.find_all("a", href=True):
if "github" in a["href"].lower():
terraform = a["href"]
break
return {
"title": title_text,
"url": url,
"type": entry_type,
"services": services,
"tags": tags,
"summary": summary,
"terraform": terraform,
}
except Exception as e:
print(f" ERROR fetching {url}: {e}")
return None
def main():
parser = argparse.ArgumentParser()
parser.add_argument("--url", help="Fetch a single URL")
parser.add_argument("--whats-new", action="store_true", help="Fetch from What's New pages")
parser.add_argument("--output", default="kb/architecture-center/catalog.yaml")
args = parser.parse_args()
if args.url:
entry = extract_entry(args.url)
if entry:
print(yaml.dump([entry], default_flow_style=False))
elif args.whats_new:
# Fetch What's New pages and extract all links
# ... implement the full crawl
pass
else:
print("Usage: --url <url> or --whats-new")
if __name__ == "__main__":
main()
```
**Requirements:** `pip install requests beautifulsoup4`
---
## Step 5: Integration with the Skill
### Update `kb/INDEX.yaml`
Add:
```yaml
architecture_center:
catalog:
path: "kb/architecture-center/catalog.yaml"
keywords: ["reference architecture", "oracle architecture center", "solution playbook", "built deployed"]
load_when: "composing architecture or generating ADRs — match customer workload against known Oracle patterns"
```
### How the Skill Uses It
During Phase 2 (Architecture Composition), after selecting services and patterns, the skill scans the catalog for matching entries:
```
Matching logic:
1. Compare selected services against entry.services
2. Compare workload tags against entry.tags
3. If ≥2 service matches + ≥1 tag match → STRONG MATCH
4. If ≥1 service match + ≥2 tag matches → MODERATE MATCH
Output in the deck:
- Architecture Decisions slide: "Based on Oracle Reference Architecture: [title] ([url])"
- Technical document: Full reference with link
- Risk register: Note any deviations from the reference architecture
```
Example match for the Laboratorios Farma case:
```
Customer: ADB-S + ADG + VPN + private subnet + APEX
Matches:
✅ STRONG: "Deploy secure ADB and APEX application" (adb-s, apex, load-balancer)
✅ MODERATE: "Deploy ORDS with High Availability on OCI" (adb-s, load-balancer)
✅ MODERATE: "Migrate on-premises Oracle Database to ADB" (adb-s, migration)
```
---
## Build Order
1. Create `kb/architecture-center/` directory
2. Run the refresh script to generate `catalog.yaml` (or build manually from What's New pages)
3. Review and curate the auto-generated entries (fix summaries, verify tags)
4. Update `kb/INDEX.yaml` with the architecture-center reference
5. Update `SKILL.md` / `SKILL_COMPACT.md` with matching logic instructions
6. Add `tools/refresh_arch_catalog.py` to the repo
7. Add tests: verify catalog loads, entries have required fields, no broken URLs
## Refresh Cadence
- **Monthly**: Run `python tools/refresh_arch_catalog.py --whats-new` to pick up new entries
- **On Oracle release**: Check for new reference architectures related to new features
- **Manual add**: For entries the scraper misses, add manually following the format
## When Done
```bash
git add .
git commit -m "feat: Architecture Center catalog — reference architectures index"
git push -u origin feature/architecture-center-catalog
```

119
codex/README.md Normal file
View File

@@ -0,0 +1,119 @@
# OCI Deal Accelerator — Codex Setup
## Quick Start
### Option 1: Using Codex CLI (recommended)
```bash
# Navigate to the project root
cd oci-deal-accelerator
# Run Codex — it auto-discovers AGENTS.md and .agents/skills/
codex
# Or explicitly load the skill
codex --skill oci-deal-accelerator
```
Codex automatically reads:
- `AGENTS.md` at project root (project-level instructions)
- `.agents/skills/oci-deal-accelerator/SKILL.md` (the skill definition)
### Option 2: Using Codex App
1. Open the Codex app
2. Point it to this repository
3. The skill is auto-discovered from `.agents/skills/`
## File Structure (Codex-Specific)
```
├── AGENTS.md # Project instructions (Codex reads this)
├── .agents/
│ └── skills/
│ └── oci-deal-accelerator/
│ └── SKILL.md # Full skill definition (Codex skill format)
├── codex/
│ └── README.md # This file (setup guide)
├── kb/ # Knowledge Base (shared with all LLM targets)
├── tools/ # Python tooling (shared)
├── templates/ # ECAL phase templates (shared)
├── config/ # Configuration (shared)
└── examples/ # Example specs and outputs
```
## How It Works
### AGENTS.md vs SKILL.md
- **AGENTS.md** (project root): Codex reads this automatically when you open the project. It contains project structure, build commands, and conventions — equivalent to Claude Code's `CLAUDE.md`.
- **SKILL.md** (`.agents/skills/oci-deal-accelerator/`): The full skill definition with the welcome flow, ECAL workflow, output generation, guardrails, and multi-agent mode. Codex discovers this automatically from the `.agents/skills/` directory.
### AGENTS.override.md
If you need temporary overrides (e.g., focusing on a specific customer engagement), create an `AGENTS.override.md` at project root. It takes highest priority:
```markdown
# Override: Acme Corp Engagement
Focus on the Acme Corp engagement. The customer is migrating 5 Oracle 19c
databases from on-prem Exadata to OCI. Key constraints:
- Must use BYOL (ULA in place)
- PCI-DSS compliance required
- 4-hour RTO, 1-hour RPO
- Timeline: 12 weeks
```
## What the Skill Does
Takes unstructured customer discovery notes and produces:
- Architecture slide deck (.pptx) with Oracle FY26 branding
- Editable architecture diagram (.drawio) with official OCI styles
- Customer-facing PDF (branded, no internal KB refs)
- Cost estimates (PAYG vs BYOL breakdown)
- Well-Architected Framework scorecard
- Business case with TCO/ROI analysis
- ECAL readiness score (60 artefacts)
- Handover documents, go-live checklists, lessons learned
## 12 Capabilities
| # | Capability | Category |
|---|-----------|----------|
| 1 | Full proposal from discovery notes | Design & Propose |
| 2 | Generate architecture diagram | Design & Propose |
| 3 | Generate slide deck | Design & Propose |
| 4 | Cost estimate | Design & Propose |
| 5 | Well-Architected review | Validate & Check |
| 6 | Feature compatibility check | Validate & Check |
| 7 | Competitive comparison | Validate & Check |
| 8 | Business case builder | Strategy & Business |
| 9 | Search field findings | Knowledge Base |
| 10 | Find reference architecture | Knowledge Base |
| 11 | Report a field finding | Knowledge Base |
| 12 | ECAL readiness score | ECAL Governance |
## Multi-Agent Mode
When running in Codex with multiple agents enabled, the skill splits into:
- **Agent 1 (Architect)**: DEFINE + DESIGN phases — parses discovery, composes architecture
- **Agent 2 (Validator)**: WA validation — scores against 5 pillars
- **Agent 3 (Renderer)**: Output generation — deck, diagram, PDF, cost spreadsheet
Each agent reads the same KB but focuses on its phase.
## Requirements
- Python 3.8+
- Install dependencies: `pip install -r requirements.txt`
- Key packages: `pyyaml`, `python-pptx`, `reportlab` (for PDF)
## Also Works With
This skill is LLM-agnostic. The same KB and templates work with:
- **Claude Code** (Anthropic) — uses `SKILL.md` + `CLAUDE.md`
- **Codex** (OpenAI) — uses `AGENTS.md` + `.agents/skills/` (this setup)
- **ChatGPT** — paste SKILL.md as system prompt
- **Gemini Pro** — paste SKILL.md as system instruction
- Any LLM with tool/function calling support

View File

@@ -0,0 +1,56 @@
# Engagement Tier Configuration
# Defines how artifact depth scales with engagement complexity
tiers:
small:
name: "Small (Rapid Innovation)"
description: "Single workload, single region, minimal compliance"
signals:
applications: "1-2"
compliance_frameworks: 0
regions: 1
integration_points: "0-2"
budget_monthly: "< $10K"
design_timeline: "< 4 weeks"
deck_slides: "6-8"
examples:
- "ADB-S + Analytics Cloud dashboard"
- "Single app migration to OKE"
- "PoC or pilot deployment"
standard:
name: "Standard (Extend Capabilities)"
description: "Multi-component architecture, moderate complexity"
signals:
applications: "3-10"
compliance_frameworks: 1
regions: "1-2"
integration_points: "3-5"
budget_monthly: "$10K-100K"
design_timeline: "4-12 weeks"
deck_slides: "10-12"
examples:
- "Oracle DB migration with HA/DR to ADB-S"
- "Multi-tier application modernization"
- "Hybrid cloud with FastConnect"
complex:
name: "Complex (Business Transformation)"
description: "Enterprise-wide transformation, multi-region, multiple compliance"
signals:
applications: "10+"
compliance_frameworks: "2+"
regions: "3+"
integration_points: "5+"
budget_monthly: "> $100K"
design_timeline: "12+ weeks"
deck_slides: "12-15"
examples:
- "Full data center migration (50+ workloads)"
- "Multi-cloud architecture with OCI primary"
- "Regulated industry platform (banking, healthcare)"
# Tier selection logic:
# If any signal is "complex" AND 2+ signals are "complex" → Complex
# If any signal is "complex" OR 3+ signals are "standard" → Standard
# Else → Small

35
config/kb-governance.yaml Normal file
View File

@@ -0,0 +1,35 @@
# =============================================================================
# KB GOVERNANCE CONFIGURATION
# =============================================================================
#
# Controls freshness tracking, confidence decay, review cadence, and
# contribution requirements for all KB files.
#
# Referenced by: tools/kb_linter.py, tools/kb_cli.py
# =============================================================================
---
contribution:
required_fields: [name, team, date, confidence]
optional_fields: [client, context]
confidence_levels: [validated, observed, reported, inferred]
freshness:
warning_days: 180
stale_days: 365
confidence_decay:
validated: { fresh: 180, stale: 365, expired: 730 }
observed: { fresh: 120, stale: 270, expired: 540 }
reported: { fresh: 90, stale: 180, expired: 365 }
inferred: { fresh: 90, stale: 180, expired: 365 }
review_triggers:
- event: "Oracle database version release"
action: "Review all feature matrix entries. Mark untested. Validate within 14 days."
- event: "Oracle pricing change"
action: "Update kb/pricing/ files. Verify cost calculator accuracy."
- event: "After customer engagement"
action: "Run After-Engagement Review (AER). Add findings and KB updates."
- event: "Quarterly"
action: "Run kb_linter.py. Refresh stale files. Review open findings."

40
config/kb-owners.yaml Normal file
View File

@@ -0,0 +1,40 @@
# =============================================================================
# KB DOMAIN OWNERSHIP
# =============================================================================
#
# Each KB area has an owner responsible for quality and freshness.
# The owner doesn't write everything — they ensure content is reviewed
# and up to date on the specified cadence.
#
# Referenced by: tools/kb_linter.py, tools/kb_cli.py
# =============================================================================
---
domains:
- area: "kb/services/"
owner: { name: "Diego Cabrera", team: "Field Architecture" }
review_cadence: "quarterly"
- area: "kb/patterns/"
owner: { name: "Diego Cabrera", team: "Field Architecture" }
review_cadence: "quarterly"
- area: "kb/compatibility/"
owner: { name: "TBD", team: "Database Specialists" }
review_cadence: "on Oracle version release + quarterly"
- area: "kb/pricing/"
owner: { name: "TBD", team: "Solution Engineering" }
review_cadence: "monthly (pricing changes frequently)"
- area: "kb/competitive/"
owner: { name: "TBD", team: "Competitive Intelligence" }
review_cadence: "quarterly + on competitor announcements"
- area: "kb/field-findings/"
owner: { name: "All", team: "Everyone contributes" }
review_cadence: "continuous"
- area: "kb/well-architected/"
owner: { name: "TBD", team: "Cloud Architecture" }
review_cadence: "on Oracle WA Framework updates"

56
config/kb-tags.yaml Normal file
View File

@@ -0,0 +1,56 @@
# =============================================================================
# KB TAG TAXONOMY
# =============================================================================
#
# Standardized tags for consistent search and categorization across all KB files.
# The CLI validates tags against this taxonomy and suggests corrections for
# unknown tags using fuzzy matching.
#
# Referenced by: tools/findings_cli.py, tools/kb_linter.py
# =============================================================================
---
taxonomy:
products:
- adb-s
- adb-d
- dep
- exacs
- dbcs
- oke
- functions
- vcn
- drg
- fastconnect
- dms
- goldengate
- data-safe
- vault
versions:
- 19c
- 21c
- 23ai
- 26ai
categories:
- ha
- dr
- security
- networking
- performance
- migration
- cost
- sizing
- compliance
severity_tags:
- blocker
- workaround-available
- cosmetic
lifecycle:
- design
- migration
- day2
- decommission

View File

@@ -0,0 +1,160 @@
# Oracle FY26 POTX Template — Layout Mapping
# Source: templates/Oracle_PPT-template_FY26.potx (104 layouts)
# Slide size: 13.333 x 7.500 inches (16:9 widescreen)
#
# NOTE: .potx requires content-type patch to load with python-pptx.
# The deck generator handles this automatically.
#
# Each layout has Dark/Light variants. Convention:
# - Cover slides: Dark
# - Content slides: Light
# - Section dividers: Dark
# - Closing/CTA slides: Dark
template_file: templates/Oracle_PPT-template_FY26.pptx
slide_size:
width_inches: 13.333
height_inches: 7.500
# ── Layout Index Reference ─────────────────────────────────────────
layouts:
# --- Cover / Title ---
cover_pillar_dark: { index: 0, name: "Dark - Title_Pillar" }
cover_pillar_light: { index: 1, name: "Light - Title_Pillar" }
cover_2_dark: { index: 2, name: "Dark - Title_2" }
cover_2_light: { index: 3, name: "Light - Title_2" }
cover_full_image: { index: 4, name: "Title-full-image" }
# --- Section Dividers ---
divider_image_light: { index: 14, name: "Light - Divider_Image" }
divider_image_dark: { index: 15, name: "Dark- Divider_Image" }
divider_light: { index: 16, name: "Light - Divider" }
divider_dark: { index: 17, name: "Dark - Divider" }
# --- Impact / Statement ---
impact_dark: { index: 26, name: "Dark - Impact Statement" }
impact_light: { index: 27, name: "Light - Impact Statement" }
# --- Quote ---
quote_data_dark: { index: 28, name: "Dark - Quote with Data Texture Background" }
quote_data_light: { index: 29, name: "Light - Quote with Data Texture Background" }
# --- Single Metric ---
metric_dark: { index: 32, name: "Dark - Single metric" }
metric_light: { index: 33, name: "Light - Single metric" }
# --- Agenda / Table ---
agenda_dark: { index: 45, name: "Dark - Agenda Table" }
agenda_light: { index: 46, name: "Light - Agenda Table" }
# --- Multi Statement (3 blocks) ---
multi_statement_dark: { index: 47, name: "Multi Statement Dark" }
multi_statement_light: { index: 48, name: "Multi Statement Light" }
# --- 2 Column ---
two_col_light: { index: 66, name: "Light - Title/Subtitle 2 Column" }
two_col_dark: { index: 67, name: "Dark - Title/Subtitle 2 Column" }
# --- Content + Illustration (half image) ---
content_illust_light: { index: 78, name: "Content + Illustration_Light" }
content_illust_dark: { index: 79, name: "Content + Illustration_Dark" }
# --- Icons with text (3 or 4) ---
three_icons_light: { index: 80, name: "Light - 3 Icons, Subhead and text" }
three_icons_dark: { index: 81, name: "Dark - 3 Icons, Subhead and text" }
four_icons_light: { index: 82, name: "Light - 4 Icons, Subhead and text" }
four_icons_dark: { index: 83, name: "Dark - 4 Icons, Subhead and text" }
# --- Blank ---
blank_dark: { index: 84, name: "Dark - Blank" }
blank_light: { index: 85, name: "Light - Blank" }
# --- Split Content ---
split_dark: { index: 86, name: "Dark - Split content with line" }
split_light: { index: 87, name: "Light - Split content with line" }
# --- Content + Photo ---
content_photo_light: { index: 72, name: "Light - Title, Content and 1/3 Photo" }
content_photo_dark: { index: 73, name: "Dark - Title, Content and 1/3 Photo" }
# --- Safe Harbor ---
safe_harbor_dark: { index: 95, name: "Dark - Safe harbor - short" }
safe_harbor_light: { index: 96, name: "Light - Safe harbor - short" }
# ── Deck Type → Slide Mapping ──────────────────────────────────────
deck_types:
business_case:
description: "Business case for customer internal approval (CxO audience)"
slides:
- slide: cover
layout: cover_pillar_dark
content: "Customer Name — Business Case for OCI Migration"
- slide: executive_summary
layout: impact_light
content: "1-sentence bold statement of the opportunity"
- slide: business_drivers
layout: multi_statement_light
content: "3 key drivers: Why now, Cost of inaction, Strategic imperative"
- slide: tco_comparison
layout: two_col_light
content: "Current State vs OCI — 3-year TCO side by side"
- slide: roi_headline
layout: metric_light
content: "Key ROI number (e.g., '47% cost reduction over 3 years')"
- slide: value_drivers
layout: four_icons_light
content: "4 value categories: Cost, Risk, Agility, Innovation"
- slide: risk_assessment
layout: two_col_light
content: "Migration risks vs Do-nothing risks"
- slide: roadmap
layout: blank_light
content: "Implementation phases with timeline (custom shapes)"
- slide: recommendation
layout: impact_dark
content: "Clear ask: commitment amount, next steps"
- slide: safe_harbor
layout: safe_harbor_light
content: "Oracle safe harbor statement"
proposal:
description: "Technical architecture proposal (SA/technical audience)"
slides:
- slide: cover
layout: cover_pillar_dark
content: "Customer Name — OCI Architecture Proposal"
- slide: agenda
layout: agenda_light
content: "Agenda items"
- slide: executive_summary
layout: impact_light
content: "Value hypothesis statement"
- slide: current_state
layout: two_col_light
content: "Current architecture vs target"
- slide: architecture
layout: blank_light
content: "Architecture diagram (inserted as image)"
- slide: service_details
layout: content_illust_light
content: "Key services with descriptions"
- slide: environment_catalogue
layout: blank_light
content: "Environment matrix table (Prod/PreProd/Dev/DR)"
- slide: cost_estimate
layout: two_col_light
content: "PAYG vs BYOL, monthly breakdown"
- slide: wa_scorecard
layout: blank_light
content: "Well-Architected review results table"
- slide: operations_raci
layout: blank_light
content: "RACI matrix for operational model"
- slide: roadmap
layout: blank_light
content: "Migration phases with timeline"
- slide: next_steps
layout: impact_dark
content: "Next steps and ask"

218
config/output-formats.yaml Normal file
View File

@@ -0,0 +1,218 @@
# Output Format Configuration
# Defines the available output types and their default settings
output_selection:
description: |
The architect can specify output format when requesting deliverables:
deck ← default, just the slide deck
deck + drawio ← deck + editable diagram
deck + doc ← deck + detailed technical document
deck + xlsx ← deck + detailed cost spreadsheet
deck + pdf ← deck + customer-facing PDF
full ← everything: deck + drawio + doc + xlsx + pdf
doc only ← technical document without deck
pdf ← customer-facing PDF only (branded, no internal refs)
If not specified, produce "deck" only.
deliver ← handover + go-live checklist + success criteria
default: "deck"
formats:
deck:
extension: ".pptx"
generator: "tools/oci_deck_gen.py"
description: "10-12 slide architecture proposal"
drawio:
extension: ".drawio"
generator: "tools/oci_diagram_gen.py"
description: "Editable architecture diagram (draw.io)"
doc:
extension: ".docx"
generator: "tools/oci_doc_gen.py"
description: "Detailed technical document (15-25 pages)"
sections:
- number: 1
title: "Executive Summary"
tiers: [small, standard, complex]
content: "1-page summary: business driver, proposed solution, key outcomes"
- number: 2
title: "Current State"
tiers: [standard, complex]
content: "People, process, technology assessment from Workload Profile"
- number: 3
title: "Solution Architecture"
tiers: [small, standard, complex]
content: "Full architecture description, service rationale, topology diagram"
- number: 4
title: "Architecture Decision Records (ADRs)"
tiers: [standard, complex]
content: "Each key design decision with context, options considered, and rationale"
- number: 5
title: "High Availability & Disaster Recovery"
tiers: [small, standard, complex]
content: "HA/DR topology, RTO/RPO targets, failover procedures"
- number: 6
title: "Security & Compliance"
tiers: [small, standard, complex]
content: "Security controls, identity model, compliance framework mapping"
- number: 7
title: "Cost Estimate"
tiers: [small, standard, complex]
content: "Detailed cost breakdown with assumptions, PAYG vs BYOL, discount scenarios"
- number: 8
title: "Migration Plan"
tiers: [standard, complex]
content: "Migration strategy per component, tooling, phased plan, rollback"
- number: 9
title: "Operations Model"
tiers: [standard, complex]
content: "Day-2 operations: monitoring, patching, backup, incident response, RACI"
- number: 10
title: "Well-Architected Scorecard"
tiers: [standard, complex]
content: |
5-pillar WA assessment (Operational Excellence, Security, Reliability,
Performance, Cost Optimization). Standard tier: score per pillar + top
recommendations. Complex tier: full findings, gap analysis, and remediation roadmap.
deck_equivalent: "slide 12 (summary) — doc section is the full underlying report"
note: "Small tier: traffic-light summary stays in deck only, not expanded in doc"
- number: 11
title: "Risk Register"
tiers: [standard, complex]
content: "Full risk table with likelihood, impact, severity, owner, mitigation"
- number: 12
title: "Next Steps"
tiers: [small, standard, complex]
content: "3-5 SMART actions with owners and dates"
xlsx:
extension: ".xlsx"
generator: "tools/oci_cost_gen.py"
description: "Detailed cost spreadsheet with tabs"
pdf:
extension: ".pdf"
generator: "tools/oci_pdf_gen.py"
description: "Customer-facing PDF (branded, no internal KB references)"
deliver:
extension: ".yaml"
generator: "manual"
description: "DELIVER phase artifacts: handover, go-live checklist, success criteria"
artifacts:
- "templates/handover-document.yaml"
- "templates/go-live-checklist.yaml"
- "templates/success-criteria.yaml"
# Slide Deck Structure (10-12 slides)
deck_structure:
slides:
- number: 1
type: title
content: "Customer name, project, date, architect"
style: "Dark background (#312D2A), white text"
- number: 2
type: value_story
content: "Business driver, value hypothesis, desired outcomes (SMART)"
style: "Light background, left-aligned"
- number: 3
type: architecture_diagram
content: "Full architecture diagram (85% of slide)"
style: "White background, diagram fills slide"
- number: 4
type: decisions
content: "4-6 key decisions in two-column table"
style: "Clean table, alternating row shading"
- number: 5
type: ha_dr
content: "HA/DR topology + RTO/RPO table"
style: "Split layout: diagram left, table right"
- number: 6
type: security
content: "Compliance checkmarks, security controls grid"
style: "Icon grid, green checkmarks"
- number: 7
type: cost
content: "Summary table: PAYG vs BYOL, monthly/annual"
style: "Clean table, bold totals, assumptions below"
- number: 8
type: cost_comparison
optional: true
content: "Side-by-side: current vs OCI, or OCI vs AWS"
style: "Chart or comparison table"
- number: 9
type: migration
content: "Phased timeline, tools, downtime approach"
style: "Timeline visual, colored phases"
- number: 10
type: operations_summary
content: "Monitoring, patching, incident response, ops model highlights"
style: "Icon grid, clean layout"
- number: 11
type: risks
content: "Top 5-6 risks with severity and mitigation"
style: "Table with color-coded severity"
- number: 12
type: scorecard
content: "5-pillar WA scorecard + recommendations"
style: "Horizontal bars, traffic-light colors"
- number: 13
type: next_steps
content: "3-5 concrete SMART next steps with dates"
style: "Numbered list, forward-looking"
# Design Standards
design_standards:
colors:
background: "#FFFFFF"
dark_background: "#312D2A"
primary_accent: "#2D5967"
secondary_accent: "#AA643B"
tertiary_accent: "#804998"
text: "#312D2A"
success: "#5E9624"
warning: "#AE562C"
error: "#C74634"
table_alt_row: "#F5F4F2"
typography:
font: "Segoe UI"
titles: "24-28pt, bold, #312D2A"
subtitles: "16-18pt, regular, #70665E"
body: "12-14pt, regular, #312D2A"
table_headers: "11pt, bold, white on #2D5967"
table_body: "10-11pt, regular, #312D2A"
footnotes: "8-9pt, italic, #70665E"
layout:
margins: "0.5 inches all sides"
title_position: "top-left, consistent"
content_area: "below title bar, 85% of slide height"
footer: "slide number bottom-right"
rule: "No gradients, clip art, or stock photos"

View File

@@ -0,0 +1,206 @@
# Service → Category/Color Mapping
# Used by diagram generator and for consistent grouping across outputs
# last_verified: 2025-09-11
categories:
compute:
color: "#2D5967"
label: "Compute"
services:
- compute
- vm
- bare_metal
- gpu
- secure_desktops
- batch
containers:
color: "#2D5967"
label: "Containers & Serverless"
services:
- oke
- container_instances
- functions
networking:
color: "#2D5967"
label: "Networking"
services:
# Load Balancing
- load_balancer
- flexible_lb
- network_lb
# Gateways
- igw
- internet_gateway
- nat_gateway
- natgw
- service_gateway
- sgw
- drg
- dynamic_routing_gateway
# Connectivity
- fastconnect
- vpn
# DNS
- dns
- traffic_management
security:
color: "#2D5967"
label: "Security"
services:
- waf
- bastion
- network_firewall
- cloud_guard
- data_safe
- vault
- security_zone
- vulnerability_scanning
- certificates
- access_governance
storage:
color: "#2D5967"
label: "Storage"
services:
- object_storage
- block_storage
- file_storage
database:
color: "#AA643B"
label: "Database"
services:
# Oracle
- adb
- adb_s
- adb_d
- autonomous_db
- autonomous_json
- atp
- adw
- dbcs
- db_system
- exadata
- exacs
- exadata_exascale
- exadata_c_at_c
- timesten
# Open Source
- mysql
- mysql_heatwave
- postgresql
- opensearch
- nosql
- cache
- redis
# Replication & Management
- goldengate
- data_catalog
- database_migration
- database_autonomous_recovery
integration:
color: "#804998"
label: "Integration"
services:
- streaming
- kafka
- queue
- oci_queue
- oic
- integration_cloud
- api_gateway
- apigw
- api_management
- data_integration
- data_integrator
- service_connector_hub
- soa_suite
ai_ml:
color: "#1A8A72"
label: "AI & Machine Learning"
services:
- generative_ai
- generative_ai_agents
- data_science
- anomaly_detection
- document_understanding
- language
- vision
- speech
- digital_assistant
analytics:
color: "#1A8A72"
label: "Analytics & Data"
services:
- oracle_analytics_cloud
- essbase
- big_data_service
- data_flow
- ai_data_platform
observability:
color: "#2D5967"
label: "Observability"
services:
- monitoring
- logging
- logging_analytics
- apm
- db_management
- ops_insights
- notifications
- events
- email_delivery
- full_stack_dr
- fleet_app_management
- os_management
- os_management_hub
- java_management
- resource_analytics
- resource_manager
developer:
color: "#2D5967"
label: "Developer Services"
services:
- apex
- visual_builder
- devops
- blockchain
- iot
- media_flow
- media_streams
- tuxedo
- webcenter
hybrid:
color: "#2D5967"
label: "Hybrid Cloud"
services:
- vmware_solution
- compute_cloud_at_customer
- managed_mac
- roving_edge
dormant:
color: "#DFDCD8"
label: "Dormant/Standby"
border_color: "#9E9892"
text_color: "#70665E"
font_style: "italic"
services:
- dormant
- standby
legacy:
color: "#70665E"
label: "Legacy/External"
services:
- legacy
- external

View File

@@ -0,0 +1,475 @@
# Workload Profile Schema
# Defines all fields, types, defaults, and descriptions for the workload profile
schema:
version: "1.1"
description: "Schema for OCI Deal Accelerator Workload Profile"
fields:
engagement:
customer_name:
type: string
required: true
description: "Customer organization name"
industry:
type: enum
values: [financial_services, healthcare, retail, manufacturing, public_sector, technology, telecommunications, energy, education, other]
required: true
description: "Customer industry vertical"
decision_timeline:
type: string
required: false
description: "Target decision date or timeline (e.g., 'Q3 2026', '6 months')"
competitive_situation:
type: enum
values: [aws_incumbent, azure_incumbent, gcp_incumbent, on_prem_only, multi_cloud, no_competitor]
required: false
default: "on_prem_only"
description: "Current cloud/competitive landscape"
current_state:
databases:
type: list
required: false
default: []
item_schema:
name:
type: string
required: true
description: "Database identifier or application name"
engine:
type: enum
values: [oracle, mysql, postgresql, sql_server, mongodb, dynamodb, cassandra, redis, elasticsearch, other]
required: true
version:
type: string
required: false
description: "Database version (e.g., '19c', '21c', '8.0')"
size_gb:
type: integer
required: true
description: "Current data size in GB"
type:
type: enum
values: [OLTP, OLAP, mixed]
required: true
default: "OLTP"
current_platform:
type: enum
values: [on_prem, aws, azure, gcp, other_cloud]
required: true
ha_current:
type: string
required: false
description: "Current HA setup (e.g., 'RAC 2-node', 'Always On AG', 'none')"
replication:
type: string
required: false
description: "Current replication (e.g., 'Data Guard', 'GoldenGate', 'none')"
connections_peak:
type: integer
required: false
description: "Peak concurrent database connections"
cpu_metrics:
type: object
required: false
fields:
avg_pct:
type: float
description: "Average CPU utilization percentage"
p95_pct:
type: float
description: "P95 CPU utilization percentage"
vcpus:
type: integer
description: "Number of vCPUs on current platform"
storage_metrics:
type: object
required: false
fields:
iops_avg:
type: integer
description: "Average IOPS"
iops_peak:
type: integer
description: "Peak IOPS"
throughput_mbps:
type: float
description: "Storage throughput in MB/s"
notable_features:
type: list
item_type: enum
values: [partitioning, TDE, VPD, advanced_security, label_security, spatial, graph, text, APEX, DBMS_SCHEDULER, db_links, UTL_FILE, UTL_HTTP, external_tables, directory_objects, edition_based_redefinition, flashback, blockchain_tables, RAC, advanced_compression, in_memory]
required: false
default: []
description: "Oracle features in active use — affects service selection and compatibility"
tier:
type: enum
values: [platinum, gold, silver, bronze]
required: false
description: "Service tier assignment (Platinum/Gold/Silver/Bronze). Auto-assigned from SLA and compliance requirements using kb/patterns/service-tiering.yaml rules, then confirmed by architect."
compute:
type: list
required: false
default: []
item_schema:
name:
type: string
required: true
purpose:
type: string
required: false
description: "What this compute serves (e.g., 'WebLogic app servers')"
os:
type: string
required: false
description: "Operating system (e.g., 'Oracle Linux 8', 'RHEL 9')"
vcpus:
type: integer
required: false
memory_gb:
type: float
required: false
current_platform:
type: enum
values: [on_prem, aws, azure, gcp, other_cloud]
required: true
scaling_pattern:
type: enum
values: [steady, daily_peaks, seasonal, unpredictable]
required: false
default: "steady"
middleware:
type: list
required: false
default: []
item_schema:
name:
type: string
required: true
type:
type: enum
values: [WebLogic, Tomcat, WildFly, IIS, Node.js, other]
required: true
clustering:
type: string
required: false
description: "Clustering configuration (e.g., 'Active-Active 4 nodes')"
messaging_and_eventing:
type: list
required: false
default: []
item_schema:
name:
type: string
required: true
type:
type: enum
values: [Kafka, RabbitMQ, SQS, MQ_Series, Oracle_AQ, other]
required: true
throughput_msgs_sec:
type: integer
required: false
description: "Peak message throughput in messages/second"
pattern:
type: enum
values: [pub_sub, point_to_point, streaming, event_driven]
required: false
default: "pub_sub"
storage:
type: list
required: false
default: []
item_schema:
name:
type: string
required: true
type:
type: enum
values: [NFS, block, object, archive]
required: true
size_tb:
type: float
required: false
access_pattern:
type: enum
values: [frequent, infrequent, archive]
required: false
default: "frequent"
networking:
type: object
required: false
fields:
connectivity:
type: enum
values: [internet, VPN, dedicated, hybrid]
required: false
default: "internet"
bandwidth_gbps:
type: float
required: false
latency_requirement_ms:
type: float
required: false
description: "Max acceptable latency in milliseconds"
regions_needed:
type: list
item_type: string
required: false
default: []
on_prem_integration:
type: boolean
required: false
default: false
identity_and_security:
type: object
required: false
fields:
idp:
type: enum
values: [AD, Okta, SAML, OCI_IAM, other]
required: false
default: "OCI_IAM"
compliance:
type: list
item_type: enum
values: [PCI-DSS, HIPAA, SOC2, GDPR, FedRAMP, ISO27001]
required: false
default: []
encryption_requirements:
type: string
required: false
description: "Encryption requirements beyond default TDE (e.g., 'customer-managed keys via Vault')"
vpd_rls:
type: boolean
required: false
default: false
description: "Virtual Private Database or Row-Level Security in use"
data_masking:
type: boolean
required: false
default: false
audit_requirements:
type: string
required: false
description: "Audit requirements (e.g., 'SOC2 Type II annual', 'PCI QSA quarterly')"
nosql_and_other_data:
type: list
required: false
default: []
item_schema:
name:
type: string
required: true
type:
type: enum
values: [MongoDB, DynamoDB, Cassandra, Redis, Elasticsearch, other]
required: true
size_gb:
type: integer
required: false
access_pattern:
type: enum
values: [high_throughput, low_latency_cache, search, analytics]
required: false
integration:
type: list
required: false
default: []
item_schema:
name:
type: string
required: true
type:
type: enum
values: [API_Gateway, ESB, ETL, CDC, file_transfer, iPaaS]
required: true
tool:
type: string
required: false
description: "Specific tool (e.g., 'MuleSoft', 'Informatica', 'GoldenGate')"
requirements:
availability:
rto_hours:
type: float
required: true
default: 1.0
description: "Recovery Time Objective in hours"
rpo_hours:
type: float
required: true
default: 0.25
description: "Recovery Point Objective in hours"
sla_target:
type: string
required: true
default: "99.95%"
description: "Target availability SLA"
performance:
response_time_p95_ms:
type: integer
required: false
description: "P95 response time target in milliseconds"
throughput_tps:
type: integer
required: false
description: "Target transactions per second"
concurrent_users:
type: integer
required: false
description: "Peak concurrent users"
scalability:
growth_annual_pct:
type: float
required: false
default: 15
description: "Expected annual growth percentage"
peak_multiplier:
type: float
required: false
default: 1.5
description: "Peak load as multiplier of baseline (e.g., 3.0 for Black Friday)"
scaling_speed:
type: enum
values: [immediate, minutes, hours]
required: false
default: "minutes"
description: "How fast scaling needs to respond"
migration:
downtime_tolerance:
type: string
required: false
default: "4 hours"
description: "Acceptable migration downtime window"
migration_timeline:
type: string
required: false
description: "Target migration timeline (e.g., '6 months')"
parallel_run_needed:
type: boolean
required: false
default: false
description: "Whether old and new systems must run in parallel during cutover"
# --- People & Process (ECAL Current State expansion) ---
people:
team_size:
type: integer
required: false
description: "Total IT team size relevant to the engagement"
roles:
type: list
item_type: string
required: false
default: []
description: "Team roles (e.g., ['dba', 'cloud_engineer', 'devops', 'security', 'network'])"
skill_gaps:
type: list
item_type: string
required: false
default: []
description: "Skills the team lacks for the proposed solution (e.g., ['kubernetes', 'terraform', 'oci_console'])"
managed_services_preference:
type: enum
values: [self_managed, co_managed, fully_managed]
required: false
default: "co_managed"
description: "How much operational responsibility the customer wants to retain"
change_readiness:
type: enum
values: [resistant, cautious, open, eager]
required: false
default: "cautious"
description: "Organizational readiness for change"
process:
deployment_process:
type: enum
values: [manual, scripted, ci_cd_basic, ci_cd_advanced, gitops]
required: false
default: "manual"
description: "Current deployment maturity"
change_management:
type: enum
values: [none, informal, cab_based, automated]
required: false
default: "informal"
description: "Change approval process"
incident_response:
type: enum
values: [none, ad_hoc, on_call_rotation, noc_24x7, outsourced]
required: false
default: "ad_hoc"
description: "Current incident response model"
backup_testing_frequency:
type: enum
values: [never, annually, quarterly, monthly]
required: false
default: "never"
description: "How often backup/recovery is tested"
decision_drivers:
primary:
type: enum
values: [cost_reduction, modernization, performance, compliance, hardware_eol, contract_expiry, consolidation]
required: false
description: "Primary motivation for the engagement"
budget_sensitivity:
type: enum
values: [low, medium, high]
required: false
default: "medium"
licensing:
type: enum
values: [BYOL, new_licenses, ULA, reduce_oracle_footprint]
required: false
default: "new_licenses"
description: "Oracle licensing strategy"
team_skills:
type: list
item_type: string
required: false
default: []
description: "Team's existing skills (e.g., ['terraform', 'kubernetes', 'oracle_dba'])"
political_constraints:
type: string
required: false
description: "Non-technical constraints (e.g., 'board wants results by Q3', 'CTO prefers AWS')"
# Derived flags — auto-computed from the profile, not user-entered
derived_flags:
description: "Boolean flags computed from the workload profile for use by the WA validation engine"
flags:
- name: has_databases
computed_from: "any entry in current_state.databases[]"
- name: has_autonomous_database
computed_from: "architecture includes ADB-S or ADB-D"
- name: has_production_databases
computed_from: "has_databases AND criticality in [mission_critical, business_critical]"
- name: has_compute_instances
computed_from: "architecture includes VM, BM, or OKE"
- name: has_production_workloads
computed_from: "any application with criticality in [mission_critical, business_critical]"
- name: has_internet_facing_services
computed_from: "architecture includes public subnet with LB or WAF"
- name: has_fastconnect
computed_from: "connectivity in [dedicated, hybrid]"
- name: has_variable_workloads
computed_from: "any compute with scaling_pattern != 'steady'"
- name: requires_dr
computed_from: "requirements.availability.rto_hours < 4 or explicit DR requirement"
- name: enterprise_customer
computed_from: "compliance list is not empty OR team has > 3 members"
- name: has_oracle_licensed_services
computed_from: "licensing in [BYOL, ULA]"
- name: distributed_cloud_applicable
computed_from: "identity_and_security.compliance includes data residency or sovereign requirements"

90
docs/define-phase.md Normal file
View File

@@ -0,0 +1,90 @@
# DEFINE Phase — Detailed Guide
The DEFINE phase identifies the customer's business problem and builds commitment to solve it. Output: a scoped **Value Story** and a **Joint Engagement Plan**.
## Steps
### 1. Ideate
Create a value hypothesis expressed in the customer's business terms — not Oracle features.
**Inputs:**
- Discovery notes (unstructured)
- Customer's public filings, strategy docs, press releases
- Industry patterns from `kb/patterns/business-patterns.yaml`
- Business Drivers Framework from `kb/patterns/business-drivers.yaml`
**Activities:**
- Build Customer Profile (`templates/customer-profile.yaml`) — strategic goals, Oracle footprint, industry analysis
- Build Strategy Map (`templates/strategy-map.yaml`) — goals → strategies → capabilities → enablers
- Parse discovery notes into structured Workload Profile
- Identify 1-3 business drivers using the four pillars (Strategic, Financial, Business Ops, IT Ops)
- Formulate 1+ Points of View, evaluate each against SMART criteria
- Select the strongest PoV as the value hypothesis
- Cross-reference with `kb/patterns/application-patterns.yaml` for proven solutions
- Map to hypothesis family from `kb/patterns/business-drivers.yaml`
**Output:** Customer Profile + Strategy Map + Draft Value Story (`templates/value-story.yaml`)
**ECAL Artefacts:** See `kb/patterns/ecal-artefacts-catalog.yaml` DEF-01 through DEF-06
**Engagement RACI:** See `kb/patterns/engagement-raci.yaml` define.ideate
### 2. Validate
Test the hypothesis against the customer's reality.
**Activities:**
- Review value story for SMART criteria (Specific, Measurable, Attainable, Relevant, Time-based)
- Identify gaps in discovery data — list what we assumed vs. what we confirmed
- Check: Is the hypothesis bold enough? Is there enough urgency?
- Validate technical feasibility against `kb/services/` and `kb/compatibility/`
**Validation checklist:**
```
- [ ] Business driver clearly identified and quantifiable
- [ ] Desired outcome is SMART
- [ ] Technical feasibility confirmed (no blockers in feature matrix)
- [ ] Customer sponsor identified
- [ ] Urgency driver exists (EOL, contract, compliance deadline, competitive threat)
```
**Output:** Validated Value Story with confidence flags
### 3. Plan
If the hypothesis is compelling, create a Joint Engagement Plan for the DESIGN phase.
**Activities:**
- Define engagement tier (small/standard/complex) — see [engagement-tiers.md](engagement-tiers.md)
- Timebox the DESIGN phase (typically 2-6 weeks)
- Identify resources needed (SA, specialists, customer stakeholders)
- Define success criteria for the DESIGN phase itself
**Output:** Joint Engagement Plan (`templates/joint-engagement-plan.yaml`)
## Engagement Tier Selection
The tier determines artifact depth. Select based on:
| Signal | Small | Standard | Complex |
|--------|-------|----------|---------|
| # Applications | 1-2 | 3-10 | 10+ |
| Compliance | None | 1 framework | Multiple |
| Regions | 1 | 1-2 | 3+ |
| Integration points | 0-2 | 3-5 | 5+ |
| Budget sensitivity | Low | Medium | High |
| Timeline | < 4 weeks | 4-12 weeks | 12+ weeks |
See [engagement-tiers.md](engagement-tiers.md) for full tier definitions and artifact mapping.
## Iterative Checkpoint
Before moving to DESIGN, verify:
```
- [ ] Value Story approved by architect (and ideally customer sponsor)
- [ ] Workload Profile has < 3 critical gaps
- [ ] Engagement tier selected
- [ ] Joint Engagement Plan agreed (timebox, resources, success criteria)
```
If the value story isn't compelling, iterate: refine the hypothesis or pick another one.

107
docs/deliver-phase.md Normal file
View File

@@ -0,0 +1,107 @@
# DELIVER Phase — Detailed Guide
The DELIVER phase ensures an efficient handover from pre-sales to implementation and tracks value realization. These are **lightweight artifacts** — the SA does not replace the implementation team.
> ECAL DELIVER describes the solution implementation at high level. It provides just enough guidance and templates to deliver. It dovetails with the customer or implementation partner framework (e.g., Oracle Consulting True Cloud Method).
## Steps
### 1. Adopt
Ensure a clean handover so the implementation team doesn't rework previous steps.
**Activities:**
- Produce Handover Document (`templates/handover-document.yaml`)
- Summarizes all DEFINE + DESIGN artifacts in one place
- Lists key decisions made and their rationale (from ADRs)
- Identifies open items and assumptions to verify
- Define MVP scope
- What ships in Phase 1 vs. later phases
- Prioritize by customer value, not technical convenience
- Example: "Phase 1: migrate core OLTP to ADB-S with local HA. Phase 2: activate cross-region DR. Phase 3: modernize reporting with ADW."
- Establish governance
- Steering committee cadence (bi-weekly for standard, weekly for complex)
- Escalation path
- Change control process
**Output:** Handover Document + MVP Definition
**Guidelines:**
- Look for a Minimum Viable Product that delivers real customer benefits early
- Incremental delivery phases should maximize customer value per the roadmap
- Consider how to help the customer with adoption and ownership
### 2. Operate
Define what "running well" looks like after go-live.
**Activities:**
- Produce Go-Live Checklist (`templates/go-live-checklist.yaml`)
- Pre-go-live verification items
- Monitoring and alerting confirmation
- Runbook availability
- Rollback readiness
- Define Success Criteria (`templates/success-criteria.yaml`)
- Quantitative metrics tied to the Value Story
- Example: "P95 latency < 15ms", "Monthly cost < $X", "Zero unplanned downtime in first 90 days"
- Measurement method and cadence
- Operational handover
- Confirm ops team has access and training
- Validate monitoring dashboards are active
- Confirm backup/recovery has been tested
**Output:** Go-Live Checklist + Success Criteria
**Guidelines:**
- Regular governance checks should continue beyond go-live
- Data must be collected to validate business outcomes
- Results should be reported back to the business sponsor
### 3. Improve
Capture learnings and validate value delivery.
**Activities:**
- Produce Lessons Learned (`templates/lessons-learned.yaml`)
- What worked well (reuse in future engagements)
- What didn't work (improve process or templates)
- Suggestions for ECAL/skill improvements
- Value realization check (30/60/90 days post go-live)
- Compare actual metrics against Success Criteria
- Determine if the original hypothesis from DEFINE delivered value
- Identify next hypothesis to tackle
- Feed improvements back
- Update `kb/field-knowledge/` with new findings
- Update patterns if architecture evolved during delivery
- Share customer success story if applicable
**Output:** Lessons Learned + Value Realization Report
**Guidelines:**
- Grab any opportunity to capture a successful outcome as a customer story
- Look back at every project for what you could do better
- Keep in touch with the customer and track how the project is going
- Share learnings with the team
## Artifact Summary by Tier
| Artifact | Small | Standard | Complex |
|----------|-------|----------|---------|
| Handover Document | 1-page summary | Full template | Full + appendices |
| MVP Definition | Inline in handover | Separate section | Phased roadmap |
| Go-Live Checklist | 10-15 items | 20-30 items | 30-50 items |
| Success Criteria | 3-5 metrics | 5-8 metrics | 8-12 metrics |
| Lessons Learned | Brief notes | Full template | Full + retro |
## Iterative Checkpoint
The DELIVER phase feeds back into DEFINE for next phases:
```
- [ ] Handover document complete and reviewed with implementation team
- [ ] MVP scope agreed with customer
- [ ] Go-live checklist validated (all items green)
- [ ] Success criteria baselined (measurements started)
- [ ] Lessons learned captured within 2 weeks of go-live
- [ ] Value realization check scheduled (30/60/90 days)
- [ ] Next hypothesis identified (return to DEFINE if applicable)
```

132
docs/design-phase.md Normal file
View File

@@ -0,0 +1,132 @@
# DESIGN Phase — Detailed Guide
The DESIGN phase produces a complete, defensible architecture. Output: agreed architecture, cost estimate, operations model, and solution proposal.
## Steps
### 1. Current State (People, Process, Technology)
Capture enough about the current state to architect the future. Frame the problem — don't gather exhaustive requirements.
**Artefacts:**
- Discovery Questionnaire (`templates/discovery-questionnaire.yaml`) — structured customer data collection
- Business & Security Constraints — time, funding, legal, compliance, technology constraints
- Current State Apps & Tech Portfolio — systems, assets, integrations
- Prioritization Matrix — score apps by criticality, fit, potential, risk (in discovery questionnaire)
- Current State Architecture — diagrams of current environment
**Technology** (existing in Workload Profile):
- Databases, compute, middleware, messaging, storage, networking, identity, integration
- Use `config/workload-profile-schema.yaml` for field definitions
**People** (new — added to Workload Profile):
- Team size and roles (DBAs, cloud engineers, DevOps, security)
- Skill gaps relevant to the proposed solution
- Managed services preference (self-managed → fully managed)
- Change management readiness (how resistant is the org to change?)
**Process** (new — added to Workload Profile):
- Deployment process (manual, CI/CD, IaC maturity)
- Change management process (CAB, lightweight, none)
- Incident response process (NOC, on-call rotation, outsourced)
- Backup/recovery testing frequency
**Guidelines:**
- Frame the problem — don't gather exhaustive requirements
- Be collaborative — share everything with the customer
- Use whatever works — top-down and bottom-up
- Understand business context, drivers, and desired outcomes
- Be very clear about scope — which systems are in and out
**ECAL Artefacts:** See `kb/patterns/ecal-artefacts-catalog.yaml` DES-01 through DES-09
**Engagement RACI:** See `kb/patterns/engagement-raci.yaml` design.current
### 2. Future State (Solution Design)
Given the Workload Profile and Current State, compose a complete architecture. This step produces multiple design artifacts:
#### Solution Design
Core architecture composition — the existing Phase 2 workflow:
1. Select services from `kb/services/`
2. Dimension using `kb/sizing/` rules
3. Compose topology from `kb/patterns/` blocks
4. Estimate costs with explicit assumptions
5. Validate against Well-Architected Framework (`kb/well-architected/`)
#### Deployment Design
How the solution gets built and deployed:
- Environment strategy (dev, test, staging, prod)
- IaC approach (Terraform, Resource Manager, Ansible)
- CI/CD pipeline design
- Non-production environment sizing (typically 50% of prod for test, 25% for dev)
#### Transition Design
How to get from current state to future state:
- Migration strategy per component (lift-and-shift, re-platform, re-architect)
- Migration tooling (DMS, GoldenGate, RMAN, Data Pump, ZDM)
- Phased migration plan with dependencies
- Parallel run requirements and cutover strategy
- Rollback plan for each phase
#### Operations Model
How the solution will be operated day-to-day:
- Use `templates/operations-model.yaml` as the artifact template
- Monitoring and alerting strategy (OCI Monitoring, Logging Analytics, 3rd party)
- Patching and maintenance windows
- Backup and recovery procedures
- Incident response and escalation
- Capacity management and scaling triggers
**Guidelines:**
- Always look for a quick win the customer can see early
- The operational model is just as important as the architecture
- Don't forget non-production environments
- Security and data locality must be understood early
### 3. Confirm (Solution Proposal)
Assemble all design work into a solution proposal for stakeholder decision.
**Activities:**
- Assemble the slide deck with all architecture artifacts
- Prepare the business case: costs, benefits, timeline, risks
- Ensure all propositions are SMART:
- **S**pecific: "Migrate 3 Oracle databases to ADB-S" not "Move to cloud"
- **M**easurable: "Reduce DB admin effort by 60%" not "Improve efficiency"
- **A**ttainable: Validated against feature matrix and field findings
- **R**elevant: Tied to the business driver from the Value Story
- **T**ime-based: "8-week migration" not "as soon as possible"
- Include competitive positioning if relevant (`kb/competitive/`)
**Output artifacts by tier:**
| Artifact | Small | Standard | Complex |
|----------|-------|----------|---------|
| Slide deck (.pptx) | 6-8 slides | 10-12 slides | 12-15 slides |
| Architecture diagram | Single-page | Single-page | Multi-page |
| Cost estimate | In-deck table | Separate .xlsx | Detailed .xlsx |
| ADRs | 2-3 inline | 4-6 in appendix | Full ADR docs |
| Migration plan | 1 slide | 2-3 slides | Separate doc |
| Operations model | In-deck summary | 1-page summary | Full template |
| Risk register | Top 3-5 | Top 5-8 | Full register |
| WA scorecard | Traffic lights | With recommendations | Full report |
**Guidelines:**
- Don't say anything you cannot back up with evidence
- The roadmap must be achievable
- Think about the person you are presenting to — what does it mean for them
- Quality of the presentation matters — it must look professional
## Iterative Checkpoint
Before moving to DELIVER (or presenting to customer):
```
- [ ] Architecture validated against WA Framework (no critical gaps)
- [ ] Cost estimate reviewed with explicit assumptions
- [ ] Migration plan is achievable within stated timeline
- [ ] Operations model addresses day-2 concerns
- [ ] All propositions are SMART
- [ ] Risk register has mitigations for all HIGH items
- [ ] Feature compatibility checked (no blockers)
- [ ] Field findings reviewed (no known issues unaddressed)
```

133
docs/ecal-gaps-backlog.md Normal file
View File

@@ -0,0 +1,133 @@
# ECAL Gaps Backlog
Items identified from ECAL 3.1 Practitioners Guides (01-09) + Big Bets Banking Example PDF that are **not yet implemented** in the KB. Prioritized by impact.
## Priority 1 — High Impact (next sprint)
### B1. Integration Catalog Template
- **Source**: ECAL 05 FUTURE, slide 23
- **What**: Table of all non-OOTB integrations with data flows, volumes, frequency
- **Why**: Directly affects architecture accuracy and implementation scope
- **Action**: Create `templates/integration-catalog.yaml` with fields: use_case, source, target, method (API/file/DB link), protocol, data_volume, frequency, direction, owner
### B2. Cloud Operating Framework (52-week plan)
- **Source**: ECAL 08 OPERATE, slide 14
- **What**: Detailed first-year operational plan covering all 9 operational capability areas
- **Why**: Most customers have never operated cloud — this bridges the gap
- **Action**: Create `kb/patterns/cloud-operating-framework.yaml` with 9 capability areas mapped to weekly cadence
- **9 Capabilities**: Program Management, Cloud Innovation, Platform Enablement, Lifecycle Management, Environments Management, Testing, Management & Monitoring, Adoption & User Support, Issue Management
### B3. OCI Operationalization Framework (5 milestones)
- **Source**: ECAL 08 OPERATE, slide 15
- **What**: 5-milestone methodology for deploying workloads to OCI
- **Milestones**: Preparation & Training → Conceptual & Logical Arch → Physical Arch Execution → Operations → Specific Workloads
- **Action**: Create `kb/patterns/oci-operationalization.yaml`
### B4. POD (Pool of Databases) Pattern
- **Source**: Big Bets PDF, p.23
- **What**: Data platform pattern for large-scale DB consolidation
- **Characteristics**: Self-contained granular unit, standard external connectivity, internally optimized for DB, designed for maintainability/longevity, no prescribed hardware, on-prem/hybrid/cloud
- **Action**: Create `kb/patterns/database-consolidation-pod.yaml`
### B5. Banking/Financial Compliance Pattern
- **Source**: Big Bets PDF, pp.4,19,21
- **What**: EBA, FCA, PRA, ISO 27001/27002, NIST CSF requirements mapped to OCI services
- **Action**: Create `kb/compliance/banking-financial.yaml` with regulation → OCI service mapping
## Priority 2 — Medium Impact
### B6. Extension Catalog Template
- **Source**: ECAL 05 FUTURE, slide 22
- **What**: Custom extensions needed beyond OOTB Oracle products
- **Fields**: Business capability, name, type, technology, developer (customer/partner/Oracle)
- **Action**: Create `templates/extension-catalog.yaml`
### B7. Business Transition Plan Template
- **Source**: ECAL 07 ADOPT, slide 22
- **What**: Managing business change during technology transformation
- **Covers**: Org change, process standardization, policy alignment, value measurement
- **Action**: Create `templates/business-transition-plan.yaml`
### B8. Training & Communication Plan Template
- **Source**: ECAL 07 ADOPT, slide 23
- **What**: Training delivery plan + project communication plan
- **Action**: Create `templates/training-communication-plan.yaml`
### B9. Project Governance Template
- **Source**: ECAL 07 ADOPT, slide 25
- **What**: Governance framework: steering committee, change control, escalation
- **Components**: Steering committee, solution authority, change control board, project board
- **Action**: Create `templates/project-governance.yaml`
### B10. Customer Success Story Template
- **Source**: ECAL 09 IMPROVE, slide 14
- **What**: Single-slide format: who, industry, challenges, approach, value, turning point
- **Action**: Create `templates/customer-success-story.yaml`
### B11. Contracts & Policy Review Checklist
- **Source**: ECAL 07 ADOPT, slide 30
- **What**: Review checklist for all agreements (cloud services, ULA, PULA, partner)
- **Action**: Create `templates/contracts-review-checklist.yaml`
### B12. Readiness Assessment Template
- **Source**: ECAL 07 ADOPT, slide 31
- **What**: Ensure project team has right skills, assets, infrastructure, processes
- **Action**: Create `templates/readiness-assessment.yaml`
## Priority 3 — Lower Impact (nice to have)
### B13. PoC Joint Execution Plan Template
- **Source**: ECAL 05 FUTURE, slide 43
- **What**: Scope, approach, timeline, success criteria, use cases, test plans, ground rules
- **Action**: Create `templates/poc-execution-plan.yaml`
### B14. Information & BI Model Template
- **Source**: ECAL 05 FUTURE, slide 24
- **What**: Data flows, MDM, analytics/BI architecture view
- **Action**: Create `kb/patterns/information-bi-model.yaml`
### B15. Current State Process & Capability Map Guide
- **Source**: ECAL 04 CURRENT, slide 17
- **What**: Guidance for creating business architecture view of current state
- **Note**: This is mostly a customer/BA activity — skill can provide structure
- **Action**: Add guidance to `docs/design-phase.md`
### B16. RFx Response Guide
- **Source**: ECAL 06 CONFIRM, slide 14
- **What**: Process for responding to RFI/RFQ/RFP
- **Note**: Primarily sales/BD activity
- **Action**: Add brief section to `docs/design-phase.md` Confirm step
### B17. Commercial Agreement Guide
- **Source**: ECAL 06 CONFIRM, slide 16
- **What**: BYOL, ELA, PULA, Cloud Credits options and when to use each
- **Action**: Enhance `kb/pricing/` with licensing model guidance
### B18. TCM Alignment Mapping
- **Source**: All ECAL guides — Consulting Guidance slides
- **What**: Map ECAL artefacts to Oracle True Cloud Method (TCM) activities
- **Action**: Add `tcm_alignment` field to ecal-artefacts-catalog.yaml
### B19. ExaCC Managed Service Pattern
- **Source**: Big Bets PDF
- **What**: Complete pattern for ExaCC with ZDLRA, ZFS, OEM, OKV as managed service
- **Action**: Create `kb/patterns/exacc-managed-service.yaml`
### B20. Security Constraints Checklist
- **Source**: ECAL 04 CURRENT, slide 15
- **What**: Structured checklist for security requirements assessment
- **Action**: Create `templates/security-constraints-checklist.yaml`
---
## Completed (this session)
| Item | File Created |
|---|---|
| Engagement RACI (10 roles, all 9 steps) | `kb/patterns/engagement-raci.yaml` |
| Discovery Questionnaire (with prioritization) | `templates/discovery-questionnaire.yaml` |
| Business Drivers Framework (4 pillars + hypothesis families) | `kb/patterns/business-drivers.yaml` |
| ECAL Artefacts Catalog (60 artefacts, skill support classification) | `kb/patterns/ecal-artefacts-catalog.yaml` |
| Customer Profile Template | `templates/customer-profile.yaml` |
| Strategy Map Template | `templates/strategy-map.yaml` |
| Lessons Learned per step | Included in `engagement-raci.yaml` |

100
docs/engagement-tiers.md Normal file
View File

@@ -0,0 +1,100 @@
# Engagement Tiers
Engagement tiers scale artifact depth to match engagement complexity. Not every deal needs a 15-slide deck and full ADR set.
## Tier Definitions
### Small (Rapid Innovation)
**Profile:** Single workload, single region, minimal compliance, short timeline.
**Examples:**
- Autonomous Database + Analytics Cloud dashboard
- Single app migration to OKE
- PoC or pilot deployment
**Characteristics:**
- 1-2 applications in scope
- No compliance frameworks
- Single OCI region
- 0-2 integration points
- Budget < $10K/month
- Timeline < 4 weeks design
**Artifact depth:** Highly templated, minimal customization. The Value Story can be a single paragraph. The deck is 6-8 slides. No separate operations model — include a "Day-2" slide.
### Standard (Extend Capabilities)
**Profile:** Multi-component architecture, moderate complexity, typical enterprise engagement.
**Examples:**
- Oracle DB migration with HA/DR to ADB-S
- Multi-tier application modernization
- Hybrid cloud with FastConnect
**Characteristics:**
- 3-10 applications in scope
- 1 compliance framework (PCI, SOC2, HIPAA)
- 1-2 OCI regions
- 3-5 integration points
- Budget $10K-100K/month
- Timeline 4-12 weeks design
**Artifact depth:** Full template set. 10-12 slide deck. Separate cost spreadsheet. Operations model as 1-page summary. 4-6 ADRs.
### Complex (Business Transformation)
**Profile:** Enterprise-wide transformation, multi-region, multiple compliance, long timeline.
**Examples:**
- Full data center migration (50+ workloads)
- Multi-cloud architecture with OCI as primary
- Regulated industry platform (banking, healthcare)
**Characteristics:**
- 10+ applications in scope
- Multiple compliance frameworks
- 3+ OCI regions
- 5+ integration points
- Budget > $100K/month
- Timeline 12+ weeks design
**Artifact depth:** Full customized artifacts. 12-15 slide deck (possibly multi-deck). Full operations model. Detailed migration plan as separate document. Full risk register. Comprehensive WA report.
## Artifact Matrix
| Artifact | Small | Standard | Complex |
|----------|-------|----------|---------|
| **DEFINE** | | | |
| Value Story | 1 paragraph | Full template | Full + executive summary |
| Workload Profile | Minimal fields | Standard fields | All fields + appendix |
| Joint Engagement Plan | Email/verbal | 1-page template | Full template |
| **DESIGN** | | | |
| Slide deck | 6-8 slides | 10-12 slides | 12-15 slides |
| Architecture diagram | Single-page simple | Single-page detailed | Multi-page |
| Cost estimate | In-deck table | Separate .xlsx | Detailed .xlsx with scenarios |
| ADRs | 2-3 inline in deck | 4-6 separate | Full ADR documents |
| Migration plan | 1 slide | 2-3 slides | Separate document |
| Operations model | 1 "Day-2" slide | 1-page summary | Full template |
| Transition design | Inline in migration | Separate section | Separate document |
| Risk register | Top 3-5 in deck | Top 5-8 in deck | Full register document |
| WA scorecard | Traffic lights only | With recommendations | Full WA report |
| **DELIVER** | | | |
| Handover document | 1-page summary | Full template | Full + appendices |
| MVP definition | Inline in handover | Separate section | Phased roadmap |
| Go-live checklist | 10-15 items | 20-30 items | 30-50 items |
| Success criteria | 3-5 metrics | 5-8 metrics | 8-12 metrics |
| Lessons learned | Brief notes | Full template | Full + retrospective |
## Tier Selection Logic
Select tier based on the **highest complexity signal**. If 8 out of 10 signals say "small" but compliance says "complex", use **standard** (not complex — let the single complex dimension drive up one tier, not two).
```
IF any signal is "complex" AND 2+ signals are "complex":
→ Complex tier
ELIF any signal is "complex" OR 3+ signals are "standard":
→ Standard tier
ELSE:
→ Small tier
```

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 1.1 MiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 225 KiB

View File

@@ -0,0 +1,32 @@
# Discovery Notes — Laboratorios Farma SA
# Reunión: 12 marzo 2026
# Asistentes: CTO (Roberto), DBA lead (Patricia), Dev lead (Andrés)
Base Oracle 19c Enterprise en VMware on-prem
- 800GB OLTP, producción, sistema core de trazabilidad de medicamentos
- 12 vCPUs, 64GB RAM en VM
- CPU promedio 45%, picos a 75% fin de mes cuando cierran lotes
- Unos 80 usuarios concurrentes, picos de 150
- TDE habilitado, tienen BYOL con 2 proc licenses
- Backup con RMAN a disco local, no tienen copia offsite
Aplicación Java en Tomcat, 2 servidores app
- Conexión JDBC simple, no usan pool avanzado
- Quieren eventualmente pasar a containers pero no es prioridad ahora
No tienen DR. Patricia dijo "si se cae, tardamos 8hs en restaurar del backup"
Roberto quiere DR pero no quiere pagar el doble
RTO aceptable: 1 hora. RPO: 15 minutos max
Regulación ANMAT — necesitan audit trail completo, no pueden perder datos de trazabilidad
No mencionaron PCI ni HIPAA
Red: tienen un link de internet de 100Mbps, no tienen FastConnect ni VPN dedicada
Patricia preguntó si pueden seguir usando SQLDeveloper y RMAN
Presupuesto: quieren gastar menos que hoy. Hoy pagan ~$15K USD/mes entre licencias + hosting del datacenter
Timeline: "no hay apuro pero si se puede antes de fin de año mejor"
No están mirando AWS ni Azure, solo OCI porque ya tienen las licencias Oracle
Andrés preguntó por APEX — tienen una app interna de reportes que quieren modernizar
Patricia mencionó que usan algunos jobs con DBMS_SCHEDULER y tienen 3 DB links a otros sistemas

View File

@@ -0,0 +1,92 @@
# Discovery Call — Banco Pacífico (fake name) — 2024-11-14
Attendees: Maria (SA), Jorge (CTO), Ana (DBA lead), Mike (infra mgr)
45 min call, mostly Jorge talking
---
## Current State (what I could gather)
- 3x Oracle 19c databases on Exadata X8M on-prem
- largest one is ~4TB, OLTP workload (core banking txns)
- second is ~1.2TB — reporting/analytics, runs batch overnight
- third is smaller, ~300GB, "auxiliary services" — Jorge was vague here ??
- GoldenGate replication between prod and DR site (San Jose DC)
- Ana mentioned 99.95% availability SLA — "contractual, can't go lower"
- PCI DSS compliance — mandatory, they process card transactions
- ~~2 RAC nodes~~ correction: 3 RAC nodes on the big DB, 2 on the others
## Licensing / Cost
- current Oracle licensing spend ~$2M/year (Jorge said "around two million, maybe a bit more")
- they have 8 processor licenses — BYOL eligible?? need to confirm with Oracle LMS
- Mike mentioned support renewal coming up in Q2 — leverage point
- also paying for GoldenGate licenses separately, didn't get the number
## App Tier
- WebLogic 14c — 6 bare metal servers (BM)
- running core banking APIs + some internal portals
- ~~Java 8~~ Java 11 actually, Ana corrected
- MQ Series for async messaging between services
- how tightly coupled?? need to dig into this
- some .NET stuff too but "not critical" per Mike
## Peaks & Performance
- seasonal peaks — Black Friday is 3x normal traffic
- "el último Black Friday casi nos tumba" — Jorge
- need autoscaling story for this
- end of month batch processing also heavy
- latency requirements: <50ms for API responses (p99)
## Team & Skills
- 2 Oracle DBAs — Ana + one other person
- NO cloud experience, "nunca hemos tocado la nube"
- will need training / enablement plan
- Ana seemed nervous about ADB automation — "qué pasa si algo sale mal?"
- 6 app developers, mostly Java
- 1 infra person (Mike) who does "everything else"
## Timeline & Competition
- el CTO quiere migrar en 6 meses ("Jorge: necesitamos estar en cloud antes de julio")
- aggressive but not impossible if we start in Dec
- phased approach? non-critical DB first??
- COMPARING WITH AWS — they got an Aurora pitch last week
- Jorge: "AWS nos ofreció créditos pero no sé si Aurora aguanta nuestro workload"
- we need to counter with BYOL savings + Exadata compatibility story
- also mention: ADB on Exadata = same engine, zero refactoring
## Key Concerns (verbatim from Jorge)
1. "No quiero downtime en la migración" — zero downtime migration, GG + ADB
2. "¿Pueden garantizar el mismo performance?" — need benchmarks
3. Cost — wants to see TCO comparison vs staying on-prem vs AWS
4. Security — "el regulador nos audita cada trimestre"
5. What happens to our GoldenGate investment?
## My Notes / TODO
- [ ] build TCO model: on-prem vs OCI (BYOL) vs AWS (Aurora)
- [ ] architecture diagram: ADB-S with ADG for HA + cross-region DR
- [ ] check if MQ Series → OCI Streaming is feasible or if they need to keep MQ
- [ ] training plan for Ana's team — OCI certs? hands-on workshop?
- [ ] ~~ask about Kubernetes~~ — Mike confirmed they're interested in OKE
- [ ] get exact GoldenGate version — need 21c for full ADB integration
- [ ] PCI compliance mapping — OCI compliance docs
- [ ] set up reference call with similar banking customer?
## Random bits
- Jorge keeps mentioning "el board quiere resultados rápidos"
- they had a failed Azure POC last year — "mala experiencia" — don't bring it up
- Ana asked about autonomous features — "¿se parchea solo de verdad?"
she seemed skeptical but interested
- DR site is 500km away — FastConnect already in both DCs?? need to check
- budget: Jorge hinted at $1.5M first year target — doable with BYOL
---
Next steps: follow-up call Thursday, bring pricing estimate + draft architecture

Binary file not shown.

View File

@@ -0,0 +1,96 @@
<?xml version="1.0" ?>
<mxfile host="app.diagrams.net" type="device" version="24.2.0">
<diagram id="oci-architecture" name="OCI Architecture">
<mxGraphModel dx="1200" dy="800" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1654" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="tenancy" value="Acme Corp — ADB-S Migration with HA/DR" style="rounded=1;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=#312D2A;strokeWidth=2;dashed=0;arcSize=8;fontFamily=Oracle Sans;fontSize=14;fontColor=#312D2A;fontStyle=1;verticalAlign=top;align=left;spacingLeft=10;spacingTop=5;" parent="1" vertex="1">
<mxGeometry x="0" y="0" width="1200" height="800" as="geometry"/>
</mxCell>
<mxCell id="r1" value="Region — US East (Ashburn)" style="rounded=1;whiteSpace=wrap;fillColor=#F5F4F2;strokeColor=#B8B5B2;strokeWidth=1;dashed=0;arcSize=8;fontFamily=Oracle Sans;fontSize=12;fontColor=#312D2A;fontStyle=1;verticalAlign=top;align=left;spacingLeft=10;spacingTop=5;" parent="tenancy" vertex="1">
<mxGeometry x="20" y="40" width="1160" height="720" as="geometry"/>
</mxCell>
<mxCell id="vcn1" value="VCN prod-vcn 10.0.0.0/16" style="rounded=0;whiteSpace=wrap;fillColor=none;strokeColor=#AE562C;strokeWidth=2;dashed=1;dashPattern=8 4;fontFamily=Oracle Sans;fontSize=11;fontColor=#AE562C;fontStyle=1;verticalAlign=top;align=left;spacingLeft=10;spacingTop=5;" parent="r1" vertex="1">
<mxGeometry x="20" y="40" width="1120" height="660" as="geometry"/>
</mxCell>
<mxCell id="sub-db" value="Private Subnet — Data Tier (10.0.1.0/24)" style="rounded=0;whiteSpace=wrap;fillColor=none;strokeColor=#AE562C;strokeWidth=1;dashed=1;dashPattern=4 4;fontFamily=Oracle Sans;fontSize=10;fontColor=#AE562C;fontStyle=0;verticalAlign=top;align=left;spacingLeft=8;spacingTop=4;" parent="vcn1" vertex="1">
<mxGeometry x="20" y="30" width="520" height="450" as="geometry"/>
</mxCell>
<mxCell id="adb-oltp" value="ADB-S OLTP
8 OCPU / 4 TB / BYOL" style="rounded=1;whiteSpace=wrap;fillColor=#AA643B;strokeColor=#8A5030;strokeWidth=1;arcSize=12;fontFamily=Oracle Sans;fontSize=10;fontColor=#FFFFFF;" parent="sub-db" vertex="1">
<mxGeometry x="25" y="35" width="200" height="70" as="geometry"/>
</mxCell>
<mxCell id="adb-dw" value="ADB-S DW
4 OCPU / 2 TB" style="rounded=1;whiteSpace=wrap;fillColor=#AA643B;strokeColor=#8A5030;strokeWidth=1;arcSize=12;fontFamily=Oracle Sans;fontSize=10;fontColor=#FFFFFF;" parent="sub-db" vertex="1">
<mxGeometry x="25" y="125" width="200" height="70" as="geometry"/>
</mxCell>
<mxCell id="adb-apex" value="ADB-S APEX
2 OCPU / 200 GB" style="rounded=1;whiteSpace=wrap;fillColor=#AA643B;strokeColor=#8A5030;strokeWidth=1;arcSize=12;fontFamily=Oracle Sans;fontSize=10;fontColor=#FFFFFF;" parent="sub-db" vertex="1">
<mxGeometry x="25" y="215" width="200" height="70" as="geometry"/>
</mxCell>
<mxCell id="data-safe" value="Data Safe" style="rounded=1;whiteSpace=wrap;fillColor=#AA643B;strokeColor=#8A5030;strokeWidth=1;arcSize=12;fontFamily=Oracle Sans;fontSize=10;fontColor=#FFFFFF;" parent="sub-db" vertex="1">
<mxGeometry x="280" y="35" width="120" height="50" as="geometry"/>
</mxCell>
<mxCell id="vault" value="OCI Vault (TDE Keys)" style="rounded=1;whiteSpace=wrap;fillColor=#8B4F8B;strokeColor=#6B3D6B;strokeWidth=1;arcSize=12;fontFamily=Oracle Sans;fontSize=10;fontColor=#FFFFFF;" parent="sub-db" vertex="1">
<mxGeometry x="280" y="105" width="120" height="50" as="geometry"/>
</mxCell>
<mxCell id="sub-app" value="Private Subnet — App Tier (10.0.2.0/24)" style="rounded=0;whiteSpace=wrap;fillColor=none;strokeColor=#AE562C;strokeWidth=1;dashed=1;dashPattern=4 4;fontFamily=Oracle Sans;fontSize=10;fontColor=#AE562C;fontStyle=0;verticalAlign=top;align=left;spacingLeft=8;spacingTop=4;" parent="vcn1" vertex="1">
<mxGeometry x="560" y="30" width="520" height="200" as="geometry"/>
</mxCell>
<mxCell id="app1" value="VM.Standard.E5.Flex
4 OCPU / 64 GB" style="rounded=1;whiteSpace=wrap;fillColor=#647A4F;strokeColor=#4D6139;strokeWidth=1;arcSize=12;fontFamily=Oracle Sans;fontSize=10;fontColor=#FFFFFF;" parent="sub-app" vertex="1">
<mxGeometry x="25" y="35" width="200" height="70" as="geometry"/>
</mxCell>
<mxCell id="app2" value="VM.Standard.E5.Flex
4 OCPU / 64 GB" style="rounded=1;whiteSpace=wrap;fillColor=#647A4F;strokeColor=#4D6139;strokeWidth=1;arcSize=12;fontFamily=Oracle Sans;fontSize=10;fontColor=#FFFFFF;" parent="sub-app" vertex="1">
<mxGeometry x="270" y="35" width="200" height="70" as="geometry"/>
</mxCell>
<mxCell id="sub-oke" value="Private Subnet — OKE Workers (10.0.3.0/21)" style="rounded=0;whiteSpace=wrap;fillColor=none;strokeColor=#AE562C;strokeWidth=1;dashed=1;dashPattern=4 4;fontFamily=Oracle Sans;fontSize=10;fontColor=#AE562C;fontStyle=0;verticalAlign=top;align=left;spacingLeft=8;spacingTop=4;" parent="vcn1" vertex="1">
<mxGeometry x="560" y="250" width="520" height="150" as="geometry"/>
</mxCell>
<mxCell id="oke" value="OKE Cluster
3 Workers (E5.Flex 8 OCPU)" style="rounded=1;whiteSpace=wrap;fillColor=#647A4F;strokeColor=#4D6139;strokeWidth=1;arcSize=12;fontFamily=Oracle Sans;fontSize=10;fontColor=#FFFFFF;" parent="sub-oke" vertex="1">
<mxGeometry x="25" y="35" width="250" height="70" as="geometry"/>
</mxCell>
<mxCell id="sub-dmz" value="Public Subnet — DMZ (10.0.0.0/24)" style="rounded=0;whiteSpace=wrap;fillColor=none;strokeColor=#AE562C;strokeWidth=1;dashed=1;dashPattern=4 4;fontFamily=Oracle Sans;fontSize=10;fontColor=#AE562C;fontStyle=0;verticalAlign=top;align=left;spacingLeft=8;spacingTop=4;" parent="vcn1" vertex="1">
<mxGeometry x="560" y="420" width="520" height="100" as="geometry"/>
</mxCell>
<mxCell id="waf" value="WAF" style="rounded=1;whiteSpace=wrap;fillColor=#3B7393;strokeColor=#2D5A73;strokeWidth=1;arcSize=12;fontFamily=Oracle Sans;fontSize=10;fontColor=#FFFFFF;" parent="sub-dmz" vertex="1">
<mxGeometry x="25" y="30" width="100" height="50" as="geometry"/>
</mxCell>
<mxCell id="lb" value="Load Balancer" style="rounded=1;whiteSpace=wrap;fillColor=#3B7393;strokeColor=#2D5A73;strokeWidth=1;arcSize=12;fontFamily=Oracle Sans;fontSize=10;fontColor=#FFFFFF;" parent="sub-dmz" vertex="1">
<mxGeometry x="160" y="30" width="140" height="50" as="geometry"/>
</mxCell>
<mxCell id="bastion" value="Bastion" style="rounded=1;whiteSpace=wrap;fillColor=#8B4F8B;strokeColor=#6B3D6B;strokeWidth=1;arcSize=12;fontFamily=Oracle Sans;fontSize=10;fontColor=#FFFFFF;" parent="sub-dmz" vertex="1">
<mxGeometry x="340" y="30" width="100" height="50" as="geometry"/>
</mxCell>
<mxCell id="r2" value="Region — US West (Phoenix) [DR]" style="rounded=1;whiteSpace=wrap;fillColor=#F5F4F2;strokeColor=#B8B5B2;strokeWidth=1;dashed=0;arcSize=8;fontFamily=Oracle Sans;fontSize=12;fontColor=#312D2A;fontStyle=1;verticalAlign=top;align=left;spacingLeft=10;spacingTop=5;" parent="tenancy" vertex="1">
<mxGeometry x="20" y="40" width="1160" height="720" as="geometry"/>
</mxCell>
<mxCell id="vcn-dr" value="VCN dr-vcn 10.1.0.0/16" style="rounded=0;whiteSpace=wrap;fillColor=none;strokeColor=#AE562C;strokeWidth=2;dashed=1;dashPattern=8 4;fontFamily=Oracle Sans;fontSize=11;fontColor=#AE562C;fontStyle=1;verticalAlign=top;align=left;spacingLeft=10;spacingTop=5;" parent="r2" vertex="1">
<mxGeometry x="20" y="40" width="1120" height="660" as="geometry"/>
</mxCell>
<mxCell id="sub-dr-db" value="Private Subnet — DR Data Tier (10.1.1.0/24)" style="rounded=0;whiteSpace=wrap;fillColor=none;strokeColor=#AE562C;strokeWidth=1;dashed=1;dashPattern=4 4;fontFamily=Oracle Sans;fontSize=10;fontColor=#AE562C;fontStyle=0;verticalAlign=top;align=left;spacingLeft=8;spacingTop=4;" parent="vcn-dr" vertex="1">
<mxGeometry x="20" y="30" width="520" height="300" as="geometry"/>
</mxCell>
<mxCell id="adb-standby" value="ADB-S Standby
8 OCPU / 4 TB (ADG)" style="rounded=1;whiteSpace=wrap;fillColor=#AA643B;strokeColor=#8A5030;strokeWidth=1;arcSize=12;fontFamily=Oracle Sans;fontSize=10;fontColor=#FFFFFF;" parent="sub-dr-db" vertex="1">
<mxGeometry x="25" y="35" width="200" height="70" as="geometry"/>
</mxCell>
<mxCell id="adb-clone" value="Refreshable Clone
4 OCPU / 4 TB" style="rounded=1;whiteSpace=wrap;fillColor=#AA643B;strokeColor=#8A5030;strokeWidth=1;arcSize=12;fontFamily=Oracle Sans;fontSize=10;fontColor=#FFFFFF;" parent="sub-dr-db" vertex="1">
<mxGeometry x="25" y="125" width="200" height="70" as="geometry"/>
</mxCell>
<mxCell id="c-adg" value="Autonomous Data Guard
(async, RPO ≈ seconds)" style="endArrow=block;endFill=1;strokeColor=#AA643B;strokeWidth=2;dashed=1;dashPattern=8 4;fontFamily=Oracle Sans;fontSize=9;fontColor=#312D2A;" source="sub-db" target="sub-dr-db" edge="1" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="c-fc" value="FastConnect 10 Gbps
(to on-premises)" style="endArrow=block;endFill=1;strokeColor=#3B7393;strokeWidth=2;fontFamily=Oracle Sans;fontSize=9;fontColor=#312D2A;" source="vcn1" target="r1" edge="1" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@@ -0,0 +1,86 @@
<?xml version="1.0" ?>
<mxfile host="app.diagrams.net" type="device">
<diagram name="OCI Architecture" id="oci-arch-1">
<mxGraphModel dx="1422" dy="794" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2400" pageHeight="1200" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="2" value="Oracle Cloud Infrastructure" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#312D2A;strokeWidth=2;fontColor=#312D2A;fontSize=16;fontFamily=Oracle Sans;verticalAlign=top;align=left;spacingLeft=10;spacingTop=5;container=1;collapsible=0;" parent="1" vertex="1">
<mxGeometry x="0" y="0" width="2200" height="1000" as="geometry"/>
</mxCell>
<mxCell id="3" value="Region — US East (Ashburn)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F5F4F2;strokeColor=#312D2A;strokeWidth=1;fontColor=#312D2A;fontSize=14;fontFamily=Oracle Sans;verticalAlign=top;align=left;spacingLeft=10;spacingTop=5;container=1;collapsible=0;" parent="2" vertex="1">
<mxGeometry x="20" y="40" width="1060" height="940" as="geometry"/>
</mxCell>
<mxCell id="4" value="VCN prod-vcn 10.0.0.0/16" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#AE562C;strokeWidth=2;dashed=1;fontColor=#312D2A;fontSize=12;fontFamily=Oracle Sans;verticalAlign=top;align=left;spacingLeft=10;spacingTop=5;container=1;collapsible=0;" parent="3" vertex="1">
<mxGeometry x="20" y="40" width="1000" height="880" as="geometry"/>
</mxCell>
<mxCell id="5" value="Public Subnet — Web Tier 10.0.0.0/24" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#AE562C;strokeWidth=1;dashed=1;fontColor=#312D2A;fontSize=11;fontFamily=Oracle Sans;verticalAlign=top;align=left;spacingLeft=10;spacingTop=5;container=1;collapsible=0;" parent="4" vertex="1">
<mxGeometry x="20" y="30" width="460" height="200" as="geometry"/>
</mxCell>
<mxCell id="6" value="Flexible LB&amp;#xa;100 Mbps" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#4F7B6E;strokeWidth=1;fontColor=#312D2A;fontSize=10;fontFamily=Oracle Sans;verticalAlign=middle;align=center;" parent="5" vertex="1">
<mxGeometry x="25" y="35" width="170" height="85" as="geometry"/>
</mxCell>
<mxCell id="7" value="WAF&amp;#xa;OWASP Rules" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#6B4D9A;strokeWidth=1;fontColor=#312D2A;fontSize=10;fontFamily=Oracle Sans;verticalAlign=middle;align=center;" parent="5" vertex="1">
<mxGeometry x="225" y="35" width="170" height="85" as="geometry"/>
</mxCell>
<mxCell id="8" value="Private Subnet — App Tier 10.0.1.0/24" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#AE562C;strokeWidth=1;dashed=1;fontColor=#312D2A;fontSize=11;fontFamily=Oracle Sans;verticalAlign=top;align=left;spacingLeft=10;spacingTop=5;container=1;collapsible=0;" parent="4" vertex="1">
<mxGeometry x="20" y="250" width="460" height="200" as="geometry"/>
</mxCell>
<mxCell id="9" value="VM.Standard.E5.Flex&amp;#xa;4 OCPU / 64 GB" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#4F7B6E;strokeWidth=1;fontColor=#312D2A;fontSize=10;fontFamily=Oracle Sans;verticalAlign=middle;align=center;" parent="8" vertex="1">
<mxGeometry x="25" y="35" width="170" height="85" as="geometry"/>
</mxCell>
<mxCell id="10" value="VM.Standard.E5.Flex&amp;#xa;4 OCPU / 64 GB" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#4F7B6E;strokeWidth=1;fontColor=#312D2A;fontSize=10;fontFamily=Oracle Sans;verticalAlign=middle;align=center;" parent="8" vertex="1">
<mxGeometry x="225" y="35" width="170" height="85" as="geometry"/>
</mxCell>
<mxCell id="11" value="Private Subnet — Data Tier 10.0.2.0/24" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#AE562C;strokeWidth=1;dashed=1;fontColor=#312D2A;fontSize=11;fontFamily=Oracle Sans;verticalAlign=top;align=left;spacingLeft=10;spacingTop=5;container=1;collapsible=0;" parent="4" vertex="1">
<mxGeometry x="20" y="470" width="950" height="380" as="geometry"/>
</mxCell>
<mxCell id="12" value="ADB-S OLTP&amp;#xa;8 OCPU (auto-scale 16)&amp;#xa;4 TB / BYOL" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#AA643B;strokeWidth=1;fontColor=#312D2A;fontSize=10;fontFamily=Oracle Sans;verticalAlign=middle;align=center;" parent="11" vertex="1">
<mxGeometry x="25" y="35" width="200" height="85" as="geometry"/>
</mxCell>
<mxCell id="13" value="ADB-S DW&amp;#xa;4 OCPU / 2 TB&amp;#xa;BYOL" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#AA643B;strokeWidth=1;fontColor=#312D2A;fontSize=10;fontFamily=Oracle Sans;verticalAlign=middle;align=center;" parent="11" vertex="1">
<mxGeometry x="250" y="35" width="200" height="85" as="geometry"/>
</mxCell>
<mxCell id="14" value="ADB-S APEX&amp;#xa;2 OCPU / 200 GB" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#AA643B;strokeWidth=1;fontColor=#312D2A;fontSize=10;fontFamily=Oracle Sans;verticalAlign=middle;align=center;" parent="11" vertex="1">
<mxGeometry x="475" y="35" width="200" height="85" as="geometry"/>
</mxCell>
<mxCell id="15" value="OCI Vault&amp;#xa;HSM Keys" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#6B4D9A;strokeWidth=1;fontColor=#312D2A;fontSize=10;fontFamily=Oracle Sans;verticalAlign=middle;align=center;" parent="11" vertex="1">
<mxGeometry x="25" y="150" width="170" height="85" as="geometry"/>
</mxCell>
<mxCell id="16" value="Data Safe&amp;#xa;Security + Audit" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#6B4D9A;strokeWidth=1;fontColor=#312D2A;fontSize=10;fontFamily=Oracle Sans;verticalAlign=middle;align=center;" parent="11" vertex="1">
<mxGeometry x="250" y="150" width="170" height="85" as="geometry"/>
</mxCell>
<mxCell id="17" value="Bastion&amp;#xa;SSH Access" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#6B4D9A;strokeWidth=1;fontColor=#312D2A;fontSize=10;fontFamily=Oracle Sans;verticalAlign=middle;align=center;" parent="11" vertex="1">
<mxGeometry x="475" y="150" width="170" height="85" as="geometry"/>
</mxCell>
<mxCell id="18" value="Private Subnet — Management 10.0.3.0/24" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#AE562C;strokeWidth=1;dashed=1;fontColor=#312D2A;fontSize=11;fontFamily=Oracle Sans;verticalAlign=top;align=left;spacingLeft=10;spacingTop=5;container=1;collapsible=0;" parent="4" vertex="1">
<mxGeometry x="500" y="30" width="460" height="200" as="geometry"/>
</mxCell>
<mxCell id="19" value="OKE Cluster&amp;#xa;3 workers (future)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#4F7B6E;strokeWidth=1;fontColor=#312D2A;fontSize=10;fontFamily=Oracle Sans;verticalAlign=middle;align=center;" parent="18" vertex="1">
<mxGeometry x="25" y="35" width="170" height="85" as="geometry"/>
</mxCell>
<mxCell id="20" value="Region — US West (Phoenix) [DR]" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F5F4F2;strokeColor=#312D2A;strokeWidth=1;fontColor=#312D2A;fontSize=14;fontFamily=Oracle Sans;verticalAlign=top;align=left;spacingLeft=10;spacingTop=5;container=1;collapsible=0;" parent="2" vertex="1">
<mxGeometry x="1120" y="40" width="1060" height="940" as="geometry"/>
</mxCell>
<mxCell id="21" value="VCN dr-vcn 10.128.0.0/16" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#AE562C;strokeWidth=2;dashed=1;fontColor=#312D2A;fontSize=12;fontFamily=Oracle Sans;verticalAlign=top;align=left;spacingLeft=10;spacingTop=5;container=1;collapsible=0;" parent="20" vertex="1">
<mxGeometry x="20" y="40" width="1000" height="880" as="geometry"/>
</mxCell>
<mxCell id="22" value="Private Subnet — DR Data Tier 10.128.2.0/24" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#AE562C;strokeWidth=1;dashed=1;fontColor=#312D2A;fontSize=11;fontFamily=Oracle Sans;verticalAlign=top;align=left;spacingLeft=10;spacingTop=5;container=1;collapsible=0;" parent="21" vertex="1">
<mxGeometry x="20" y="30" width="460" height="380" as="geometry"/>
</mxCell>
<mxCell id="23" value="ADB-S Standby&amp;#xa;8 OCPU / 4 TB&amp;#xa;Auto-Failover" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#AA643B;strokeWidth=1;fontColor=#312D2A;fontSize=10;fontFamily=Oracle Sans;verticalAlign=middle;align=center;" parent="22" vertex="1">
<mxGeometry x="25" y="35" width="200" height="85" as="geometry"/>
</mxCell>
<mxCell id="24" value="Refreshable Clone&amp;#xa;4 OCPU / 4 TB&amp;#xa;Reporting Offload" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#AA643B;strokeWidth=1;fontColor=#312D2A;fontSize=10;fontFamily=Oracle Sans;verticalAlign=middle;align=center;" parent="22" vertex="1">
<mxGeometry x="25" y="150" width="200" height="85" as="geometry"/>
</mxCell>
<mxCell id="25" value="Autonomous Data Guard&amp;#xa;(async, RPO ≈ seconds)" style="edgeStyle=orthogonalEdgeStyle;rounded=1;strokeColor=#AA643B;strokeWidth=2;dashed=1;fontColor=#312D2A;fontSize=9;fontFamily=Oracle Sans;" parent="1" edge="1" source="12" target="23"/>
<mxCell id="26" value="Refreshable Clone" style="edgeStyle=orthogonalEdgeStyle;rounded=1;strokeColor=#6B4D9A;strokeWidth=1;dashed=1;fontColor=#312D2A;fontSize=9;fontFamily=Oracle Sans;" parent="1" edge="1" source="23" target="24"/>
<mxCell id="27" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;strokeColor=#4F7B6E;strokeWidth=1;dashed=0;fontColor=#312D2A;fontSize=9;fontFamily=Oracle Sans;" parent="1" edge="1" source="6" target="9"/>
<mxCell id="28" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;strokeColor=#4F7B6E;strokeWidth=1;dashed=0;fontColor=#312D2A;fontSize=9;fontFamily=Oracle Sans;" parent="1" edge="1" source="6" target="10"/>
<mxCell id="29" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;strokeColor=#4F7B6E;strokeWidth=1;dashed=0;fontColor=#312D2A;fontSize=9;fontFamily=Oracle Sans;" parent="1" edge="1" source="9" target="12"/>
<mxCell id="30" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;strokeColor=#4F7B6E;strokeWidth=1;dashed=0;fontColor=#312D2A;fontSize=9;fontFamily=Oracle Sans;" parent="1" edge="1" source="10" target="12"/>
</root>
</mxGraphModel>
</diagram>
</mxfile>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,349 @@
# =============================================================================
# ADB FEATURE COMPATIBILITY MATRIX
# =============================================================================
#
# INTERNAL — DO NOT SHARE EXTERNALLY
#
# This matrix tracks feature availability across ADB versions and deployment
# types. It is maintained by the field team based on real testing and customer
# engagements, NOT copied from Oracle documentation.
#
# Status values:
# GA — Generally Available, tested, works as expected
# GA_CAVEAT — Available but with significant caveats (see notes)
# PREVIEW — Available as preview/beta, not production-ready
# LIMITED — Available with restrictions not obvious from docs
# NOT_AVAIL — Not available in this combination
# BROKEN — Documented as available but does not work (see field_finding ref)
# UNTESTED — Not yet verified by the team
#
# Cell format (enhanced with attribution):
# status: Required — one of the status values above
# notes: Optional — concise description of caveats
# contributor: Optional — attribution block (name, team, date, confidence)
# field_finding_ref: Optional — link to field finding ID (e.g., FF-202603-008)
#
# To edit: add/modify entries and update last_verified. Keep notes concise.
# =============================================================================
---
last_verified: "2026-03-14"
maintained_by: "Field Architecture Team"
versions:
- id: "23ai"
full_name: "Oracle Database 23ai"
release_year: 2024
notes: "First AI-branded release. Major feature additions."
- id: "26ai"
full_name: "Oracle Database 26ai"
release_year: 2026
notes: "Latest. Check feature availability — not everything from 23ai carried forward identically."
deployment_types:
- id: "adb_s"
name: "ADB-S Serverless"
- id: "adb_s_ep"
name: "ADB-S Elastic Pool"
- id: "adb_d_dep"
name: "ADB Dedicated Elastic Pool (DEP)"
- id: "adb_d"
name: "ADB on Dedicated Exadata"
- id: "exacs"
name: "Exadata Cloud Service"
- id: "dbcs_ee"
name: "Base DB Service (EE)"
# =============================================================================
# FEATURE MATRIX
# =============================================================================
features:
# --- Auto Management ---
- name: "Auto Scaling (OCPU)"
category: "auto_management"
matrix:
adb_s:
"23ai": { status: "GA_CAVEAT", notes: "Activation takes 2-3 min. Size base for P75. Billing per-second when active." }
"26ai": { status: "GA_CAVEAT", notes: "Same 2-3 min activation delay persists in 26ai." }
adb_s_ep:
"23ai": { status: "GA_CAVEAT", notes: "Scales within pool allocation. Pool itself doesn't auto-scale." }
"26ai": { status: "GA_CAVEAT", notes: "Same as 23ai." }
adb_d_dep:
"23ai": { status: "LIMITED", notes: "Scales within DEP allocation. DEP itself is fixed capacity." }
"26ai": { status: "UNTESTED" }
adb_d:
"23ai": { status: "NOT_AVAIL", notes: "Dedicated infra — manual scaling only." }
exacs:
"23ai": { status: "NOT_AVAIL", notes: "Manual OCPU enable/disable." }
- name: "Auto Indexing"
category: "auto_management"
matrix:
adb_s:
"23ai": { status: "GA_CAVEAT", notes: "Creates indexes HIDDEN by default. Instantly reversible. DML costing prevents over-indexing. Deduplication with manually created indexes." }
"26ai": { status: "GA", notes: "Improved in 26ai — better cost model, fewer false positives." }
adb_s_ep:
"23ai": { status: "GA_CAVEAT", notes: "Same as ADB-S Serverless." }
adb_d_dep:
"23ai": { status: "GA_CAVEAT", notes: "Available but less tested in DEP." }
adb_d:
"23ai": { status: "GA", notes: "Fully supported." }
exacs:
"23ai": { status: "NOT_AVAIL", notes: "Not an ADB feature. Use manual indexing." }
dbcs_ee:
"23ai": { status: "NOT_AVAIL" }
- name: "Auto Patching"
category: "auto_management"
matrix:
adb_s:
"23ai": { status: "GA", notes: "Automatic quarterly. No opt-out. Maintenance window configurable but change requires SR." }
"26ai": { status: "GA", notes: "Same policy." }
adb_d_dep:
"23ai": { status: "GA_CAVEAT", notes: "Maintenance window immutable post-DEP creation. Change via SR only. Saturday/Sunday default, other days via SR." }
exacs:
"23ai": { status: "GA_CAVEAT", notes: "Customer-managed patching schedule. Must apply within 90 days." }
# --- High Availability ---
- name: "Transparent Application Continuity (TAC)"
category: "ha_dr"
matrix:
adb_s:
"23ai": { status: "GA_CAVEAT", notes: "Zero perceived RTO for app. DB itself ~2 min unavailable during failover. Replay NOT guaranteed with UTL_HTTP, DBMS_PIPE, NOCACHE sequences. Requires JDBC thin driver with TAC config." }
"26ai": { status: "GA_CAVEAT", notes: "Same limitations persist." }
adb_s_ep:
"23ai": { status: "GA_CAVEAT", notes: "Same as Serverless." }
adb_d:
"23ai": { status: "GA_CAVEAT", notes: "Same limitations." }
exacs:
"23ai": { status: "GA_CAVEAT", notes: "Available with RAC. Same replay limitations." }
dbcs_ee:
"23ai": { status: "NOT_AVAIL", notes: "Requires RAC — only in EE-HP or EE-EP." }
- name: "Autonomous Data Guard (Local)"
category: "ha_dr"
matrix:
adb_s:
"23ai": { status: "GA", notes: "Synchronous. Same region. Auto-failover ~2 min." }
"26ai": { status: "GA" }
adb_d:
"23ai": { status: "GA" }
exacs:
"23ai": { status: "GA", notes: "Standard Data Guard, not 'Autonomous' — manual setup." }
- name: "Autonomous Data Guard (Cross-Region)"
category: "ha_dr"
matrix:
adb_s:
"23ai": { status: "GA_CAVEAT", notes: "Asynchronous only. RPO ≈ seconds. Manual switchover or auto-failover (configurable)." }
"26ai": { status: "GA_CAVEAT", notes: "Same." }
adb_d_dep:
"23ai": { status: "GA_CAVEAT", notes: "ADG must be disabled before joining DEP. Known issue." }
exacs:
"23ai": { status: "GA", notes: "Standard cross-region DG. Manual setup." }
- name: "Refreshable Clone"
category: "ha_dr"
matrix:
adb_s:
"23ai": { status: "GA_CAVEAT", notes: "Read-only. Auto-refresh frequency configurable. Failed refresh leaves clone AVAILABLE (not DISCONNECTED) — leader monitors lifecycle state, not refresh success. Detection delay = ADG RTO for unplanned." }
"26ai": { status: "GA_CAVEAT", notes: "Same detection delay issue." }
adb_d:
"23ai": { status: "GA" }
# --- Security ---
- name: "Virtual Private Database (VPD)"
category: "security"
matrix:
adb_s:
"23ai": { status: "GA", notes: "Full VPD support including OLS." }
"26ai": { status: "GA" }
exacs:
"23ai": { status: "GA" }
dbcs_ee:
"23ai": { status: "GA", notes: "Requires Advanced Security option license." }
- name: "Private Endpoints"
category: "security"
matrix:
adb_s:
"23ai": { status: "GA", notes: "Recommended for production. Required for some compliance." }
"26ai": { status: "GA" }
adb_d:
"23ai": { status: "GA", notes: "Default — all ADB-D is private." }
exacs:
"23ai": { status: "GA", notes: "Always private subnet." }
- name: "Data Safe Integration"
category: "security"
matrix:
adb_s:
"23ai": { status: "GA", notes: "Audit, masking, assessment, SQL Firewall." }
"26ai": { status: "GA", notes: "Enhanced SQL Firewall in 26ai." }
exacs:
"23ai": { status: "GA" }
dbcs_ee:
"23ai": { status: "GA_CAVEAT", notes: "Must register DB manually in Data Safe." }
# --- Developer Features ---
- name: "Select AI"
category: "developer"
matrix:
adb_s:
"23ai": { status: "GA", notes: "Natural language → SQL via LLM. Requires AI profile configuration." }
"26ai": { status: "GA", notes: "Improved accuracy in 26ai." }
adb_d:
"23ai": { status: "GA" }
exacs:
"23ai": { status: "NOT_AVAIL", notes: "ADB-only feature." }
- name: "Property Graph / SQL/PGQ"
category: "developer"
matrix:
adb_s:
"23ai": { status: "GA_CAVEAT", notes: "Node tables + edge tables. Only FK indexes essential. Additional indexes require filter evidence. See Graph DBA Advisor philosophy." }
"26ai": { status: "GA", notes: "Improved PGQ optimizer in 26ai." }
exacs:
"23ai": { status: "GA", notes: "Full graph support with PGQL and SQL/PGQ." }
- name: "APEX"
category: "developer"
matrix:
adb_s:
"23ai": { status: "GA", notes: "Built-in. No additional cost." }
"26ai": { status: "GA" }
adb_d:
"23ai": { status: "GA" }
exacs:
"23ai": { status: "GA_CAVEAT", notes: "Must install APEX manually." }
dbcs_ee:
"23ai": { status: "GA_CAVEAT", notes: "Must install and manage manually." }
- name: "JSON Relational Duality Views"
category: "developer"
matrix:
adb_s:
"23ai": { status: "GA", notes: "Major 23ai feature." }
"26ai": { status: "GA" }
exacs:
"23ai": { status: "GA" }
dbcs_ee:
"23ai": { status: "GA", notes: "Requires 23ai version." }
# --- AI / Vector Search ---
- name: "AI Vector Search (HNSW)"
category: "developer"
matrix:
adb_s:
"23ai":
status: "GA_CAVEAT"
notes: |
HNSW indexes are node-local on multi-node RAC. Works well up to
~50M vectors on single node (≤24 ECPUs). At 100M+ on multi-node
(≥64 ECPUs), requires hash-partitioned vector table with LOCAL
HNSW index for <50ms P95. See FF-202603-008.
scale_limits:
single_node_max_vectors: "~50M with <50ms P95"
multi_node_requires: "Hash partitioning + LOCAL HNSW index"
validated_at: "120M vectors, 64 ECPU, P95 = 38ms (with workaround)"
without_workaround: "P95 >200ms at 100M+ on 2-node RAC"
field_finding_ref: "FF-202603-008"
"26ai":
status: "UNTESTED"
notes: "Check if distributed HNSW is added in 26ai. Expected to remain node-local."
adb_s_ep:
"23ai":
status: "GA_CAVEAT"
notes: "Same node-local limitation as ADB-S Serverless."
field_finding_ref: "FF-202603-008"
adb_d:
"23ai":
status: "GA_CAVEAT"
notes: "Same limitation. Dedicated infra doesn't change HNSW locality."
exacs:
"23ai":
status: "GA_CAVEAT"
notes: "RAC with HNSW has same node-local constraint. Partitioning workaround applies."
dbcs_ee:
"23ai":
status: "NOT_AVAIL"
notes: "AI Vector Search requires 23ai. Available in EE but HNSW performance limited without Exadata storage."
- name: "AI Vector Search (IVF)"
category: "developer"
matrix:
adb_s:
"23ai":
status: "GA"
notes: |
IVF (Inverted File) indexes ARE distributed across RAC nodes.
Works at 100M+ scale without partitioning. However, IVF has
lower recall than HNSW at same latency budget. Trade-off:
IVF for scale without redesign, HNSW+partitioning for best recall.
"26ai":
status: "UNTESTED"
adb_s_ep:
"23ai":
status: "GA"
notes: "Same as ADB-S Serverless."
adb_d:
"23ai":
status: "GA"
exacs:
"23ai":
status: "GA"
notes: "IVF distributed across RAC nodes. Exadata storage accelerates scans."
dbcs_ee:
"23ai":
status: "NOT_AVAIL"
notes: "AI Vector Search requires 23ai. Available in EE but performance limited without Exadata."
# --- Deployment / Operations ---
- name: "Elastic Pool Membership"
category: "operations"
matrix:
adb_s_ep:
"23ai": { status: "GA_CAVEAT", notes: "Billing starts at AVAILABLE. Co-location at next maintenance window. Pool can't auto-scale." }
adb_d_dep:
"23ai":
status: "GA_CAVEAT"
notes: "Provisioning days-weeks. ADG must be disabled before joining. Maintenance window immutable. Saturday/Sunday default."
contributor:
name: "Diego Cabrera"
team: "Field Architecture"
date: "2026-03-14"
confidence: "validated"
field_finding_ref: "FF-202603-002"
- name: "Cross-Region Read Offload (ProxySQL/Refreshable Clone)"
category: "operations"
matrix:
adb_s:
"23ai":
status: "LIMITED"
notes: "Architecturally impossible without pre-provisioned Elastic Pool in Region B post-switchover. Mitigation for planned: DBMS_PROXY_SQL.DISABLE_READ_ONLY_OFFLOAD. For unplanned: OCI Events + Functions."
contributor:
name: "Diego Cabrera"
team: "Field Architecture"
date: "2026-03-14"
confidence: "validated"
field_finding_ref: "FF-202603-005"
"26ai": { status: "UNTESTED", notes: "Same architectural constraint expected to persist." }
- name: "OCI CLI Management"
category: "operations"
matrix:
adb_s:
"23ai": { status: "GA_CAVEAT", notes: "--resource-pool-summary works on CLI 3.73+. --autonomous-database-maintenance-window has JSON serialization bug on CLI 3.73.1 AND 3.75.0. Must use Console for maintenance window." }
# =============================================================================
# HOW TO ADD A NEW FEATURE
# =============================================================================
# 1. Add entry under "features:" following the template above
# 2. Fill matrix for every deployment_type + version you've tested
# 3. Mark untested combinations as UNTESTED
# 4. Add field_finding_ref if the entry comes from a specific incident
# 5. Update last_verified date
# 6. Commit with a message: "feat-matrix: added [feature_name]"

View File

@@ -0,0 +1,112 @@
# Competitive Mapping: AWS → OCI
# Honest comparison — advantages AND disadvantages
service_mapping:
compute:
aws: "EC2"
oci: "OCI Compute"
oci_advantage:
- "Consistent pricing (no per-second billing complexity)"
- "Flex shapes — pay for exact OCPUs/memory needed"
- "Dense I/O shapes with local NVMe included"
aws_advantage:
- "Broader instance family selection"
- "Spot instances (wider availability than OCI Preemptible)"
- "Graviton ecosystem maturity vs Ampere"
notes: "OCI compute is generally 30-50% cheaper for equivalent configurations"
kubernetes:
aws: "EKS"
oci: "OKE"
oci_advantage:
- "Free control plane (EKS charges $0.10/hr = ~$73/month)"
- "Virtual Nodes (serverless) option"
aws_advantage:
- "Larger ecosystem (Fargate, App Mesh, more add-ons)"
- "More community resources and tooling"
database_oracle:
aws: "RDS Oracle / Oracle on EC2"
oci: "ADB-S / DBCS / ExaCS"
oci_advantage:
- "Autonomous Database — no equivalent in AWS"
- "Exadata performance for Oracle workloads"
- "BYOL pricing ~50-75% cheaper than AWS RDS Oracle"
- "Native Oracle features (RAC, Data Guard, Advanced Compression)"
- "Direct migration path with ZDM/DMS"
aws_advantage:
- "Multi-engine flexibility (same tooling for Oracle, PostgreSQL, MySQL)"
- "Aurora for PostgreSQL/MySQL is excellent"
notes: "This is OCI's strongest competitive advantage. Lead with database."
database_mysql:
aws: "RDS MySQL / Aurora MySQL"
oci: "MySQL HeatWave"
oci_advantage:
- "HeatWave in-memory query accelerator (up to 400x faster analytics)"
- "Combined OLTP + analytics without ETL"
aws_advantage:
- "Aurora is a mature, battle-tested platform"
- "Broader integration with AWS analytics stack"
object_storage:
aws: "S3"
oci: "OCI Object Storage"
oci_advantage:
- "No data retrieval charges for Standard tier"
- "Cheaper per-GB pricing"
aws_advantage:
- "S3 ecosystem is unmatched (integrations, tooling, community)"
- "S3 Intelligent Tiering is more mature"
networking:
aws: "VPC / Direct Connect / ALB/NLB"
oci: "VCN / FastConnect / Flexible LB"
oci_advantage:
- "Free inter-AZ data transfer (AWS charges $0.01/GB)"
- "Free inter-VCN data transfer within same region via DRG"
- "Significantly cheaper outbound data transfer"
- "Service Gateway (free access to OCI services without internet)"
aws_advantage:
- "More load balancer features (ALB path-based routing)"
- "Broader Direct Connect partner ecosystem"
notes: "Networking cost savings are a major OCI differentiator. Quantify them."
security:
aws: "IAM / GuardDuty / SecurityHub / KMS"
oci: "IAM / Cloud Guard / Security Zones / Vault"
oci_advantage:
- "Cloud Guard is free (GuardDuty is per-event pricing)"
- "Security Zones enforce compliance at resource creation"
- "Data Safe included free for Autonomous Database"
aws_advantage:
- "Broader security partner ecosystem"
- "More mature SIEM integrations"
observability:
aws: "CloudWatch / X-Ray / CloudTrail"
oci: "Monitoring / APM / Audit / Logging Analytics"
oci_advantage:
- "Generous free tier for monitoring"
- "Logging Analytics is powerful for centralized analysis"
aws_advantage:
- "CloudWatch is deeply integrated with all services"
- "More third-party observability integrations"
competitive_positioning:
lead_with:
- "Oracle Database cost savings (BYOL, Exadata, Autonomous)"
- "Network cost savings (free inter-AZ, cheap egress)"
- "Overall price/performance for equivalent configurations"
honest_gaps:
- "Smaller service catalog than AWS"
- "Fewer regions (though expanding rapidly)"
- "Smaller community and ecosystem"
- "Less mature serverless/event-driven offerings"
neutralize:
- "Enterprise support: Oracle Premier Support is equivalent to AWS Enterprise"
- "Terraform support: full parity via OCI Terraform provider"
- "Multi-cloud: OCI Multicloud with Azure (Oracle Database@Azure)"
- "Multi-cloud: Oracle Database@AWS (GA in us-east-1, us-west-2, us-east-2, eu-central-1, ap-northeast-1 + expanding to 20+ regions)"
- "Database@AWS: co-located Exadata in AWS AZ, ~200-400μs same-AZ latency, single AWS bill"
- "Database@AWS limitation: ADB-D only, no ADB-S Serverless — requires Exadata dedicated infra"

View File

@@ -0,0 +1,54 @@
---
last_verified: 2026-03-14
description: OCI to Azure service mapping for competitive positioning.
---
service_mapping:
database:
- oci: "ADB-S"
azure: "Azure SQL Managed Instance / Azure Database for PostgreSQL"
oci_advantage: |
ADB-S runs actual Oracle Database. Azure SQL MI is SQL Server only.
No native Oracle database service on Azure.
Oracle on Azure VMs loses Exadata performance and autonomous operations.
azure_advantage: "Native SQL Server support if migrating from SQL Server."
- oci: "ExaCS"
azure: "Oracle Database@Azure (ExaCS in Azure datacenters)"
notes: |
Oracle Database@Azure is ExaCS running in Azure datacenters with
direct connectivity to Azure services. Available in select regions.
This is a partnership offering, not a competitive comparison.
compute:
- oci: "OCI Compute"
azure: "Azure Virtual Machines"
oci_advantage: "Flexible shapes, lower cost for Oracle workloads."
azure_advantage: "Deeper Microsoft ecosystem integration, Hybrid Benefit."
networking:
- oci: "OCI Interconnect with Azure"
azure: "Azure ExpressRoute with OCI"
notes: |
OCI and Azure have a direct interconnect in multiple regions.
Low-latency (<2ms) connectivity for hybrid deployments.
Enables Oracle DB on OCI with apps on Azure.
pricing_comparison:
notes: |
For Oracle workloads, OCI is significantly cheaper:
- No Oracle license surcharge on OCI
- Exadata performance not available on Azure
- BYOL works better on OCI
- Data egress cheaper on OCI
common_objections:
- objection: "We're an Azure shop — Microsoft is our strategic partner"
response: |
Oracle Database@Azure allows running OCI database services directly
in Azure datacenters. Your team stays in the Azure portal while
getting OCI database performance and economics.
- objection: "We prefer Azure SQL for our databases"
response: |
For SQL Server workloads, Azure SQL is excellent. For Oracle database
workloads that must remain Oracle, OCI provides superior performance
and cost. Consider multi-cloud: Azure for .NET/SQL Server, OCI for Oracle.

View File

@@ -0,0 +1,85 @@
---
last_verified: 2026-03-14
description: Common customer objections about OCI and evidence-based responses.
---
objections:
- id: OBJ-001
category: market
objection: "OCI is a niche cloud — AWS/Azure are the leaders"
response: |
OCI is the #4 cloud globally and growing fastest in database PaaS.
For Oracle database workloads specifically, OCI is the leader:
- Only cloud with Exadata hardware
- Only cloud with Autonomous Database
- Best Oracle license portability
The question isn't "best cloud overall" but "best cloud for this workload."
evidence: "Gartner, IDC reports on cloud database market"
- id: OBJ-002
category: risk
objection: "What if Oracle EOLs or changes OCI pricing?"
response: |
OCI pricing has only decreased since launch. Oracle's cloud investment
is $50B+ in CapEx. OCI is Oracle's strategic platform — not a side project.
Contractual pricing protection exists via Annual Flex and Universal Credits.
mitigation: "Use annual flex contracts with pricing guarantees"
- id: OBJ-003
category: skills
objection: "Our team has no OCI experience"
response: |
ADB-S reduces DBA workload by 80% (no patching, tuning, scaling).
OCI console follows familiar cloud patterns. Terraform provider is mature.
Oracle provides free training and certification. Typical ramp-up is 2-4 weeks.
mitigation: "Include training budget in migration plan"
- id: OBJ-004
category: features
objection: "OCI doesn't have as many services as AWS"
response: |
True for breadth (AWS has 200+ services). For database and enterprise
workloads, OCI feature parity is strong. Key services are GA:
- Compute, networking, storage, Kubernetes, serverless
- Monitoring, logging, IAM, security
- Queue, Streaming, API Gateway
What matters is whether OCI has what *you* need, not a raw count.
- id: OBJ-005
category: cost
objection: "We can get better pricing from AWS/Azure"
response: |
OCI list prices are already 30-50% below AWS for equivalent configs.
For Oracle specifically:
- No Oracle license surcharge on OCI
- BYOL discount is deeper on OCI
- Data egress is 10x cheaper
Request a detailed cost comparison with matched configurations.
- id: OBJ-006
category: migration
objection: "Migration is too risky and expensive"
response: |
Oracle provides free migration tools (ZDM, DMS) and migration credits.
Phased migration reduces risk. ADB-S migrations from on-prem Exadata
are well-documented with reference architectures. Typical timeline is
8-16 weeks for database migration.
mitigation: "Phased migration with rollback plan at each phase"
- id: OBJ-007
category: vendor_lock
objection: "We don't want vendor lock-in with Oracle"
response: |
You're already locked into Oracle Database (the software). OCI doesn't
add lock-in — it reduces cost and operational burden of running Oracle.
OCI also supports open source: PostgreSQL, MySQL, Kubernetes, Terraform.
If you want to reduce Oracle dependency, that's a separate conversation
about database modernization, not cloud choice.
- id: OBJ-008
category: availability
objection: "OCI has fewer regions than AWS"
response: |
OCI has 50+ public cloud regions globally, covering all major markets.
If a specific region is required, check current availability.
For Oracle Database@Azure, OCI services run inside Azure regions.

1121
kb/diagram/oci-icons.json Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,240 @@
# OCI Official Diagram Styles — Extracted from OCI Style Guide for Draw.io Toolkit v24.2
# Source: OCI Library.xml + OCI Architecture Diagram Toolkit v24.2.drawio
# This supersedes earlier palette files based on inference from reference architectures.
# ============================================================
# CONTAINER STYLES (from Physical Groupings in the toolkit)
# These are the EXACT styles Oracle uses for diagram containers.
# ============================================================
containers:
tenancy:
# Toolkit item [200]: Physical - Grouping - Tenancy
style: "whiteSpace=wrap;html=1;strokeWidth=1;dashed=1;align=left;fontFamily=Oracle Sans;verticalAlign=top;fillColor=none;fontColor=#312D2A;strokeColor=#9E9892;fontSize=12;spacingLeft=5;"
notes:
- "DASHED gray border, NO fill"
- "Text color is charcoal #312D2A"
- "Border is warm gray #9E9892"
region:
# Toolkit item [202]: Physical - Grouping - OCI Region
style: "whiteSpace=wrap;html=1;align=left;fontFamily=Oracle Sans;verticalAlign=top;fillColor=#F5F4F2;rounded=1;arcSize=5;strokeColor=#9E9892;fontColor=#312D2A;fontSize=12;fontStyle=1;spacingLeft=8;spacingTop=5;"
notes:
- "SOLID border, rounded corners"
- "FILLED with warm gray #F5F4F2"
- "This is the only container with a solid background fill"
availability_domain:
# From template styles
style: "whiteSpace=wrap;html=1;strokeWidth=1;align=center;fontFamily=Oracle Sans;verticalAlign=top;fillColor=#DFDCD8;fontColor=#312D2A;strokeColor=#9E9892;rounded=1;arcSize=1;fontStyle=1;"
notes:
- "Slightly darker gray fill #DFDCD8"
- "Bold text (fontStyle=1)"
vcn:
# Toolkit item [197]: Physical - Grouping - VCN
style: "whiteSpace=wrap;html=1;strokeWidth=2;dashed=1;align=left;fontFamily=Oracle Sans;verticalAlign=top;fillColor=none;fontColor=#AE562C;strokeColor=#AE562C;perimeterSpacing=0;fontSize=12;spacingLeft=5;"
notes:
- "DASHED BURNT ORANGE border — this is the signature OCI VCN visual"
- "strokeWidth=2 (thicker than subnet)"
- "Text AND border are both #AE562C (burnt orange)"
- "NO fill — transparent background"
subnet:
# Toolkit item [198]: Physical - Grouping - Subnet
style: "whiteSpace=wrap;html=1;strokeWidth=1;dashed=1;align=left;fontFamily=Oracle Sans;verticalAlign=top;fillColor=none;fontColor=#AE562C;perimeterSpacing=0;strokeColor=#AE562C;fontSize=12;spacingLeft=5;"
notes:
- "DASHED BURNT ORANGE border — same color as VCN but THINNER (strokeWidth=1)"
- "Inside templates, subnet interior uses fillColor=#FCFBFA (near-white)"
- "Text is #AE562C (burnt orange)"
compartment:
# Toolkit item [199]: Physical - Grouping - Compartment
style: "whiteSpace=wrap;html=1;strokeWidth=1;dashed=1;align=left;fontFamily=Oracle Sans;verticalAlign=top;fillColor=none;fontColor=#312D2A;strokeColor=#9E9892;fontSize=12;spacingLeft=5;"
notes:
- "Same as tenancy style — dashed gray"
fault_domain:
# Toolkit item [204]
style: "whiteSpace=wrap;html=1;strokeWidth=1;dashed=1;align=left;fontFamily=Oracle Sans;verticalAlign=top;fillColor=none;fontColor=#312D2A;strokeColor=#9E9892;fontSize=12;spacingLeft=5;"
tier:
# Toolkit item [201]
style: "whiteSpace=wrap;html=1;strokeWidth=1;dashed=1;align=left;fontFamily=Oracle Sans;verticalAlign=top;fillColor=none;fontColor=#312D2A;strokeColor=#9E9892;fontSize=12;spacingLeft=5;"
# ============================================================
# SERVICE ICON COLORS
# ============================================================
service_colors:
oci_teal: "#2D5967"
oracle_copper: "#AA643B"
oracle_purple: "#804998"
burnt_orange: "#AE562C" # Used ONLY for VCN/Subnet borders and text — NOT for service icons
oracle_red: "#C74634" # Accent only
# ============================================================
# BACKGROUND AND TEXT COLORS
# ============================================================
backgrounds:
region_fill: "#F5F4F2" # Warm gray — region containers
ad_fill: "#DFDCD8" # Slightly darker — AD containers
subnet_fill: "#FCFBFA" # Near-white — subnet interiors in templates
dormant: "#DFDCD8" # Dormant/inactive elements
text:
primary: "#312D2A" # Charcoal — ALL text (never pure black)
secondary: "#70665E" # Medium gray — step circles, muted text
on_dark: "#FFFFFF" # White — text on colored service blocks
borders:
container: "#9E9892" # Warm gray — tenancy, region, compartment borders
vcn_subnet: "#AE562C" # Burnt orange — VCN and subnet borders ONLY
connector: "#312D2A" # Charcoal — ALL connection arrows (matches text color)
# ============================================================
# CONNECTOR STYLES (from toolkit items [206-214])
# ALL connectors use charcoal #312D2A — same as text color.
# Differentiation is via dash pattern, not color.
# ============================================================
connectors:
standard:
# Toolkit item [206]: Physical - Connector
style: "endArrow=open;endFill=0;strokeColor=#312D2A;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;endSize=6;rounded=0"
notes:
- "Open arrow tip (not filled)"
- "Orthogonal routing (right-angle turns)"
- "endSize=6 for small consistent arrowheads"
- "Color is charcoal #312D2A — NOT gray"
fastconnect:
# Toolkit items [209-210]: Physical - Special Connectors - FastConnect
style: "endArrow=open;endFill=0;startArrow=open;startFill=0;strokeColor=#312D2A;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;endSize=6;rounded=0"
notes:
- "Bidirectional open arrows"
- "Same charcoal color as standard"
- "In toolkit, has lightning/zigzag icon overlay — not reproducible in simple edges"
site_to_site_vpn:
# Toolkit items [211-212]
style: "endArrow=open;endFill=0;strokeColor=#312D2A;strokeWidth=1;dashed=1;edgeStyle=orthogonalEdgeStyle;endSize=6;rounded=0"
notes: "Dashed line with lock icon overlay"
remote_peering:
# Toolkit items [213-214]
style: "endArrow=open;endFill=0;strokeColor=#312D2A;strokeWidth=1;dashed=1;edgeStyle=orthogonalEdgeStyle;endSize=6;rounded=0"
notes: "Dashed line for inter-region connectivity"
# ============================================================
# TYPOGRAPHY
# ============================================================
typography:
font_family: "Oracle Sans"
fallback_fonts: "Segoe UI, Helvetica Neue, Arial, sans-serif"
container_labels: "fontSize=12, fontColor=#312D2A"
service_labels: "fontSize=8-9, fontColor=#FFFFFF (on colored background)"
title_text: "fontSize=10, fontColor=#70665E, fontStyle=2 (italic)"
# ============================================================
# KEY VISUAL RULES (from toolkit analysis)
# ============================================================
design_rules:
# Container rules (confirmed from OCI Toolkit v24.2 + 7 Oracle Architecture Center reference diagrams)
- "VCN and Subnet borders are ALWAYS dashed burnt orange (#AE562C) — this is the signature Oracle visual"
- "VCN border is strokeWidth=2, Subnet border is strokeWidth=1"
- "Region containers are the ONLY ones with solid background fill (#F5F4F2)"
- "Tenancy and Compartment containers are dashed gray, NO fill"
- "VCN and Subnet labels are BOLD, ORANGE (#AE562C), left-aligned inside the container (top-left)"
- "Subnet labels sometimes include CIDR notation below in smaller text (10pt gray)"
# VCN/Subnet containers — NO corner badges
- "VCN and Subnet containers do NOT have badges or icons at the corners"
- "Confirmed by re-checking original Architecture Center drawio files (e-commerce, ExaCS, etc.)"
# Service icon rules (confirmed from 7 Oracle Architecture Center reference diagrams)
- "Service icons are LINE ART / OUTLINE style in teal (#2D5967) — NOT filled colored rectangles"
- "Service icons do NOT have colored background boxes when rendered as OCI library stencils"
- "Service label is BELOW the icon, centered, in dark charcoal (#312D2A)"
- "Service label font size is 10-11pt (NOT 14pt) — confirmed from Oracle ref arch diagrams"
- "Total service block height (icon + label) should be ~90px for OCI services, not 45px"
# External cloud rules (confirmed from multicloud Oracle reference diagrams)
- "Azure containers use SOLID blue border (#0078D4) with light blue fill (#EBF5FF)"
- "Azure container labels are bold, dark blue (#0050A2)"
- "GCP containers use solid green border (#34A853) with light green fill (#E8F5E9)"
- "AWS/generic containers use dashed muted gray border (no specific Oracle style defined)"
# Oracle Services Network panel (confirmed from hub-spoke, OKE, lakehouse Oracle diagrams)
- "Oracle Services Network is a right-side dashed gray panel containing managed OCI services"
- "Services in Oracle Services Network are NOT in any VCN/Subnet — they float in the panel"
- "Use compartment-style container with oracle_services_network label for this panel"
- "OSN panel has NO fill (transparent) — dashed gray border only"
# Flow differentiation — Oracle uses line patterns, NOT numbered circles
- "Oracle differentiates flow types by DASH PATTERN, not numbered circle badges"
- "Ingest: dotted fine; Transform: dash-dot; Curate: fine dotted; Analyze: dashed"
- "Flow labels are text strings on the arrow path ('Process and store', 'Deploy model')"
- "A legend box at the bottom explains the line patterns if multiple flow types exist"
# Connector and typography rules
- "Service blocks use solid fills with NO stroke (strokeColor=none)"
- "Text is NEVER pure black — always charcoal #312D2A"
- "Font is Oracle Sans (falls back to Segoe UI)"
- "Icons are composite multi-layer Visio stencils in the OCI Library.xml"
- "ALL connectors use charcoal #312D2A — same as text, NOT colored"
- "Connectors use open arrow tips (endArrow=open, endFill=0) — never filled blocks"
- "Connectors use orthogonal routing (edgeStyle=orthogonalEdgeStyle) — never diagonal"
- "Arrow size is small and consistent (endSize=6)"
- "Dashed lines differentiate replication/migration from standard flows"
- "FastConnect is bidirectional (startArrow=open + endArrow=open)"
- "Oracle DB-related services use copper #AA643B"
- "Integration/messaging services use purple #804998"
- "All other OCI services use teal #2D5967"
reference_diagrams_analyzed:
# 7 Oracle Architecture Center diagrams analyzed visually (2026-03-17)
# Used to confirm and extend the style guide from OCI Toolkit v24.2
- url: "https://docs.oracle.com/en/solutions/exadb-dr-on-db-azure/img/exadb-dr-db-azure.png"
topology: "multi-region multi-cloud (ExaDB DR on Database@Azure)"
- url: "https://docs.oracle.com/en/solutions/hub-spoke-network-drg/img/hub-and-spoke-drg.png"
topology: "hub-spoke networking with DRG"
- url: "https://docs.oracle.com/en/solutions/data-platform-lakehouse/img/lakehouse-architecture.png"
topology: "data lakehouse (multi-tier, analytics)"
- url: "https://docs.oracle.com/en/solutions/deploy-oke-with-bastion-and-github/img/oke-bastion-deployment-diagram.png"
topology: "OKE with Bastion and GitHub Actions"
- url: "https://docs.oracle.com/en/solutions/cis-oci-benchmark/img/oci-core-landingzone.png"
topology: "CIS Landing Zone (complex, multi-compartment)"
- url: "https://docs.oracle.com/en/solutions/deploy-autonomous-database-db-at-azure/img/autonomous-database-db-azure-diagram.png"
topology: "ADB-S on Database@Azure (multi-cloud)"
- url: "https://docs.oracle.com/en/solutions/data-application-integration-workloads/img/integration-architecuture-pattern-1.png"
topology: "data integration pattern"
# ============================================================
# FULL ICON CATALOG (224 icons in OCI Library.xml)
# ============================================================
# See separate file for the full icon list.
# Key icons for Deal Accelerator:
# 37: Database - Autonomous DB
# 18: Networking - Load Balancer
# 32: Networking - Internet Gateway
# 33: Networking - NAT Gateway
# 31: Networking - Service Gateway
# 30: Networking - Dynamic Routing Gateway DRG
# 102: Identity and Security - WAF
# 105: Identity and Security - Vault
# 106: Identity and Security - Bastion
# 45: Database - Data Safe
# 46: Database - NoSQL
# 74: Developer Services - Container Engine for Kubernetes
# 2: Compute - Functions
# 3: Compute - Virtual Machine VM
# 65: Analytics and AI - Streaming
# 127: Observability and Management - Queuing
# 79: Developer Services - API Gateway
# 120: Observability and Management - Monitoring
# 123: Observability and Management - Logging Analytics

View File

@@ -0,0 +1,55 @@
---
last_verified: 2026-03-14
description: Reference layout for database HA/DR architecture diagram
---
layout:
name: "Database HA/DR — Dual Region"
page_size: "A3 landscape"
structure:
# Primary region takes 60% of width
primary_region:
position: { x: 20, y: 40 }
size: { width: 680, height: 720 }
contains:
vcn:
position: { x: 20, y: 40 }
size: { width: 640, height: 660 }
subnets:
data_tier:
position: { x: 20, y: 30 }
size: { width: 300, height: 400 }
label_position: "top-left"
app_tier:
position: { x: 340, y: 30 }
size: { width: 280, height: 200 }
dmz:
position: { x: 340, y: 250 }
size: { width: 280, height: 100 }
# DR region takes 35% of width
dr_region:
position: { x: 720, y: 40 }
size: { width: 460, height: 720 }
contains:
vcn:
position: { x: 20, y: 40 }
size: { width: 420, height: 400 }
subnets:
dr_data_tier:
position: { x: 20, y: 30 }
size: { width: 380, height: 350 }
# Connection between regions (horizontal)
inter_region_connection:
from: "data_tier"
to: "dr_data_tier"
style: "adg"
label_position: "center"
notes:
- "Primary region on left, DR region on right"
- "Data Guard arrow flows left → right"
- "FastConnect shown at bottom connecting to on-premises"
- "Security services (Vault, Data Safe) placed near data tier"

View File

@@ -0,0 +1,70 @@
---
last_verified: 2026-03-14
layout: Single Region with HA
description: |
Reference layout for a single-region deployment with high availability.
Suitable for most production workloads not requiring cross-region DR.
---
canvas:
width: 1200
height: 800
structure:
tenancy:
x: 0
y: 0
width: 1200
height: 800
region:
x: 20
y: 40
width: 1160
height: 740
vcn:
x: 20
y: 40
width: 1100
height: 680
subnets:
public_web:
position: top
x: 20
y: 30
width: 520
height: 180
purpose: "Load balancers, WAF"
private_app:
position: middle
x: 20
y: 230
width: 520
height: 200
purpose: "Application servers, OKE workers"
private_db:
position: bottom
x: 20
y: 450
width: 1060
height: 200
purpose: "Database instances, Data Safe, Vault"
private_mgmt:
position: right
x: 560
y: 30
width: 500
height: 400
purpose: "Bastion, monitoring, management"
notes: |
- Place load balancers in public subnet at top
- App tier in private subnet in middle
- Database tier in private subnet at bottom (widest)
- Management/security services in right column
- Services flow top-to-bottom: LB → App → DB

View File

@@ -0,0 +1,312 @@
# =============================================================================
# FIELD FINDINGS TRACKER
# =============================================================================
#
# INTERNAL & CONFIDENTIAL — DO NOT SHARE EXTERNALLY
#
# Log of real issues, limitations, bugs, and surprises found during customer
# engagements. Each entry is a finding that another architect should know about
# before hitting the same wall.
#
# Entry format:
# id: Unique identifier (FF-YYYYMM-NNN)
# date: When discovered (YYYY-MM-DD)
# contributor: Attribution block (replaces flat "reported_by")
# name: Who found it (required)
# team: Team or role (required)
# client: Client name or anonymized reference (optional)
# context: Brief context — PoC, migration, assessment (optional)
# confidence: validated / observed / reported / inferred (required)
# product: OCI product/service affected
# version: Product version if relevant
# severity: CRITICAL / HIGH / MEDIUM / LOW / INFO
# category: bug / limitation / undocumented / gotcha / workaround / performance
# summary: One-line description
# detail: Full description of the finding
# workaround: How to work around it (if known)
# oracle_sr: Oracle SR number (if filed)
# status: open / resolved / wontfix / acknowledged / monitoring
# resolved_date: When resolved (if applicable)
# resolution: How it was resolved
# affects_matrix: Feature matrix entry this relates to (if any)
# tags: Searchable tags
# confirmations: List of peer confirmations (optional)
#
# HOW TO ADD:
# 1. Add entry at the TOP of the findings list (newest first)
# 2. Use next sequential ID: FF-YYYYMM-NNN
# 3. Be specific — include CLI versions, API errors, exact messages
# 4. If you filed an SR, include the number
# 5. Update status when resolved
# =============================================================================
---
last_updated: "2026-03-14"
findings:
- id: "FF-202603-008"
date: "2026-03-14"
reported_by: "Diego Cabrera"
client: "Vector Search Customer"
product: "ADB-S"
version: "23ai"
severity: "HIGH"
category: "limitation"
summary: "Distributed HNSW indexes not available — 100M+ vector search requires partitioning workaround"
detail: |
ADB-S AI Vector Search supports HNSW indexes but they are node-local on
multi-node RAC (≥64 ECPUs). At 100M+ vectors, queries on a 2-node RAC
miss vectors on the other node. Results are either incomplete or require
cross-node scan that blows P95 >200ms.
Workaround from internal DB PM team: hash-partition vector table on
vector_id, create partition-local HNSW index. Queries hit single
partition on single node, maintaining <50ms at 100M scale.
Requires table redesign — cannot be applied to existing unpartitioned
vector tables without data reload.
workaround: |
Hash-partition vector table by vector_id. Create HNSW index as LOCAL
(partition-level). Ensure partition pruning in queries.
Source: internal DB PM team contact [name].
Validated on ADB-S 23ai with 120M vectors, P95 = 38ms on 64 ECPU.
oracle_sr: ""
status: "acknowledged"
resolved_date: null
resolution: null
affects_matrix: "AI Vector Search (HNSW)"
tags: ["vector-search", "hnsw", "distributed", "rac", "partitioning", "100m", "latency", "ai-vector-search"]
- id: "FF-202603-001"
date: "2026-03-10"
contributor:
name: "Diego Cabrera"
team: "Field Architecture"
client: "Strategic Migration Customer"
context: "Production migration"
confidence: "validated"
product: "OCI CLI"
version: "CLI 3.73.1 and 3.75.0"
severity: "MEDIUM"
category: "bug"
summary: "OCI CLI --autonomous-database-maintenance-window has JSON serialization bug"
detail: |
The --autonomous-database-maintenance-window parameter fails with a JSON
serialization error on both OCI CLI 3.73.1 (Cloud Shell) and 3.75.0
(VM decabrer-4S46W64). The expected JSON schema is:
{"dayOfWeek": {"name": "SATURDAY"}, "hourOfDay": 4}
But the CLI cannot serialize this properly. API returns 403 at create time.
Tested via dry-run: the 204 response is received but actual creation fails.
workaround: "Use OCI Console to set maintenance window. Or set post-creation via API directly (not CLI)."
oracle_sr: ""
status: "open"
resolved_date: null
resolution: null
affects_matrix: "OCI CLI Management"
tags: ["cli", "maintenance-window", "adb", "dep", "json", "serialization"]
- id: "FF-202603-002"
date: "2026-03-08"
contributor:
name: "Diego Cabrera"
team: "Field Architecture"
client: "Strategic Migration Customer"
context: "Production migration"
confidence: "validated"
product: "ADB-S Dedicated Elastic Pool (DEP)"
version: "23ai"
severity: "HIGH"
category: "limitation"
summary: "ADG must be disabled before joining Dedicated Elastic Pool"
detail: |
When attempting to add an ADB-S instance with active Autonomous Data Guard
to a Dedicated Elastic Pool, the operation fails. ADG must be explicitly
disabled before the instance can join the DEP. This is a known issue
acknowledged by Oracle but not prominently documented.
Impact: requires a brief HA gap during DEP onboarding. Must coordinate
with the customer's change window.
workaround: "Disable ADG → join DEP → re-enable ADG. Plan for ~15 min HA gap."
oracle_sr: ""
status: "acknowledged"
resolved_date: null
resolution: null
affects_matrix: "Elastic Pool Membership"
tags: ["dep", "adg", "elastic-pool", "ha", "limitation"]
- id: "FF-202603-003"
date: "2026-03-05"
contributor:
name: "Diego Cabrera"
team: "Field Architecture"
client: "Strategic Migration Customer"
context: "Production migration"
confidence: "validated"
product: "ADB-S Dedicated Elastic Pool (DEP)"
version: "23ai"
severity: "MEDIUM"
category: "undocumented"
summary: "DEP maintenance window immutable post-creation — change only via SR"
detail: |
The maintenance window for a Dedicated Elastic Pool cannot be changed
after creation via Console, CLI, or API. The only way to change it is
by filing a Service Request with Oracle Support.
Default window is Saturday/Sunday. Other days require specifying at
creation time (which itself has the CLI bug — see FF-202603-001) or
requesting via SR.
workaround: "Set desired window at DEP creation time (via Console, not CLI). If missed, file SR."
oracle_sr: ""
status: "acknowledged"
resolved_date: null
resolution: null
affects_matrix: "Auto Patching"
tags: ["dep", "maintenance-window", "immutable", "sr-required"]
- id: "FF-202603-004"
date: "2026-03-01"
contributor:
name: "Diego Cabrera"
team: "Field Architecture"
client: "Strategic Migration Customer"
context: "Production migration"
confidence: "validated"
product: "ADB-S"
version: "23ai"
severity: "MEDIUM"
category: "gotcha"
summary: "DEP provisioning takes days to weeks depending on capacity"
detail: |
Dedicated Elastic Pool provisioning is NOT instant like ADB-S Serverless.
It requires physical Exadata infrastructure allocation. Lead time varies
from 3 days (if capacity available in region) to 2-3 weeks (if capacity
needs to be provisioned).
Billing starts only at AVAILABLE state, not at request time.
Co-location of existing ADB-S instances happens at the next maintenance
window after joining, not immediately.
workaround: "Request DEP early in the project timeline. Don't make it a critical-path dependency in week 1."
oracle_sr: ""
status: "acknowledged"
resolved_date: null
resolution: null
affects_matrix: "Elastic Pool Membership"
tags: ["dep", "provisioning", "lead-time", "capacity", "planning"]
- id: "FF-202603-005"
date: "2026-02-20"
contributor:
name: "Diego Cabrera"
team: "Field Architecture"
client: "Strategic Migration Customer"
context: "Production migration"
confidence: "observed"
product: "ADB-S"
version: "23ai"
severity: "LOW"
category: "gotcha"
summary: "Refreshable Clone failed refresh leaves clone in AVAILABLE state — detection delay"
detail: |
When a Refreshable Clone's auto-refresh fails, the clone remains in
AVAILABLE state (not DISCONNECTED). The Elastic Pool leader monitors
lifecycle state changes, not refresh success/failure.
This means a failed refresh is NOT immediately detected by the
infrastructure. The stale data window equals the ADG RTO for
unplanned scenarios.
workaround: |
Planned switchovers: DBMS_PROXY_SQL.DISABLE_READ_ONLY_OFFLOAD proactively.
Unplanned: OCI Events + OCI Function that monitors refresh state and
disables read offload automatically. Reduces stale window to ~ADG RTO.
oracle_sr: ""
status: "monitoring"
resolved_date: null
resolution: null
affects_matrix: "Refreshable Clone"
tags: ["refreshable-clone", "stale-reads", "elastic-pool", "detection-delay", "proxysql"]
- id: "FF-202603-006"
date: "2026-02-15"
contributor:
name: "Diego Cabrera"
team: "Field Architecture"
client: "Strategic Migration Customer"
context: "Migration assessment"
confidence: "validated"
product: "OCI DMS"
version: "current"
severity: "MEDIUM"
category: "limitation"
summary: "Bidirectional GoldenGate replication not yet available in DMS"
detail: |
OCI Database Migration Service does not support bidirectional GoldenGate
replication. This is needed for zero-hard-cutover migration workflows
where the customer wants to run both source and target in parallel with
data flowing both ways during transition.
Feature request submitted to Oracle DMS PM team. In their pipeline but
no committed timeline. Offered beta participation.
workaround: "Use standalone GoldenGate deployment (not DMS-managed) for bidirectional replication."
oracle_sr: ""
status: "open"
resolved_date: null
resolution: null
affects_matrix: null
tags: ["dms", "goldengate", "bidirectional", "migration", "zero-downtime"]
- id: "FF-202603-007"
date: "2026-02-10"
contributor:
name: "Diego Cabrera"
team: "Field Architecture"
client: "Pepe SRL"
context: "Discovery engagement"
confidence: "validated"
product: "ADB-S"
version: "23ai"
severity: "INFO"
category: "gotcha"
summary: "ADB-S Serverless RAC node split threshold at 64 ECPUs"
detail: |
ADB-S Serverless runs on 1 RAC node at ≤24 ECPUs and splits to 2 nodes
at 64 ECPUs (16 cpu_count each). The gv$instance view only shows nodes
where the PDB is open.
This affects connection pooling behavior and session distribution.
Applications should use UCP or JDBC connection pool with FAN events
to handle the multi-node scenario properly.
workaround: "Ensure connection pool configuration handles multi-node. Use UCP with FAN."
oracle_sr: ""
status: "acknowledged"
resolved_date: null
resolution: null
affects_matrix: null
tags: ["adb-s", "rac", "ecpu", "node-split", "connection-pooling"]
# =========================================================================
# TEMPLATE — Copy this for new entries:
# =========================================================================
# - id: "FF-YYYYMM-NNN"
# date: "YYYY-MM-DD"
# contributor:
# name: ""
# team: ""
# client: "" # Optional — anonymize if sensitive
# context: "" # Optional — PoC, migration, assessment
# confidence: "" # validated / observed / reported / inferred
# product: ""
# version: ""
# severity: "" # CRITICAL / HIGH / MEDIUM / LOW / INFO
# category: "" # bug / limitation / undocumented / gotcha / workaround / performance
# summary: ""
# detail: |
#
# workaround: ""
# oracle_sr: ""
# status: "" # open / resolved / wontfix / acknowledged / monitoring
# resolved_date: null
# resolution: null
# affects_matrix: null # Feature matrix entry name, or null
# tags: []
# confirmations: [] # Peer confirmations

View File

@@ -0,0 +1,247 @@
# Field Knowledge: Real-World Gotchas and Lessons Learned
# From actual OCI deployments — things the documentation doesn't emphasize
gotchas:
- id: FK-001
area: "ADB-S Auto-Scaling"
severity: HIGH
description: |
ADB-S auto-scaling takes 2-3 minutes to activate. If you size base OCPUs
for average load (P50), short spikes will hit before scale-out completes.
Size base OCPUs for P75 sustained load.
recommendation: "Base OCPU = P75 CPU usage, not P50"
- id: FK-002
area: "ADB-S Private Endpoint"
severity: HIGH
description: |
ADB-S with public endpoint allows connections from the internet to the
DB listener. Always use private endpoints for production. This requires
a VCN subnet and Service Gateway.
recommendation: "Always use private endpoints. Never public for production."
- id: FK-003
area: "FastConnect Redundancy"
severity: HIGH
description: |
A single FastConnect virtual circuit is a single point of failure.
For production, deploy 2 virtual circuits on diverse physical paths.
Also configure IPSec VPN as a backup path.
recommendation: "2x FastConnect (diverse paths) + VPN backup"
- id: FK-004
area: "Service Limits"
severity: MEDIUM
description: |
OCI has default service limits per tenancy that are often too low for
production deployments. Request limit increases BEFORE go-live, as
approval can take 1-3 business days.
recommendation: "Submit service limit increase requests during planning phase"
- id: FK-005
area: "Block Volume Performance"
severity: MEDIUM
description: |
Block Volume IOPS scale with volume size. A 50 GB Balanced volume only
provides 3,000 IOPS. If you need 25,000 IOPS, you need at least 417 GB
(even if your data is only 50 GB).
recommendation: "Size volumes for IOPS, not just capacity. Over-provision if needed."
- id: FK-006
area: "OKE LoadBalancer Annotations"
severity: LOW
description: |
OKE creates a 10 Mbps Flexible Load Balancer by default for
LoadBalancer-type Kubernetes services. For production, set the
bandwidth annotation explicitly.
recommendation: |
Set annotation: service.beta.kubernetes.io/oci-load-balancer-shape: "flexible"
And: service.beta.kubernetes.io/oci-load-balancer-shape-flex-min: "100"
- id: FK-007
area: "Terraform State"
severity: MEDIUM
description: |
Don't store Terraform state locally or in git. Use OCI Object Storage
with versioning as the remote backend. Enable state locking.
recommendation: "Use OCI Object Storage as Terraform remote backend with state locking."
- id: FK-008
area: "Cross-Region Data Transfer"
severity: MEDIUM
description: |
Cross-region data transfer is not free. Data Guard redo transport,
Object Storage replication, and cross-region backup copy all incur
egress charges. Factor this into DR cost estimates.
recommendation: "Include cross-region egress in DR cost estimates"
- id: FK-009
area: "Identity Domain Limits"
severity: LOW
description: |
Free tier Identity Domain supports up to 2,000 users. For larger
deployments, upgrade to Premium Identity Domain.
recommendation: "Check user count against Identity Domain tier limits"
- id: FK-010
area: "Compartment Depth"
severity: LOW
description: |
Compartments can be nested up to 6 levels deep. In practice, 3-4 levels
is the sweet spot. Deeper nesting makes IAM policies harder to manage.
recommendation: "Limit compartment depth to 3-4 levels"
- id: FK-011
area: "VCN CIDR Planning"
severity: HIGH
description: |
VCN CIDRs cannot be changed after creation (you can add secondary CIDRs
but not modify the primary). Plan CIDR ranges carefully, especially
when on-premises integration is required.
recommendation: "Use /16 per VCN, document all CIDRs, avoid overlap with on-prem"
- id: FK-012
area: "Data Guard Switchover vs Failover"
severity: HIGH
description: |
Switchover is planned (zero data loss, both DBs running). Failover is
unplanned (potential data loss with async). Ensure runbooks distinguish
between the two and teams practice both.
recommendation: "Document and practice both switchover (planned) and failover (unplanned)"
- id: FK-013
area: "TAC Replay Limitations"
severity: MEDIUM
description: |
Transparent Application Continuity (TAC) cannot replay operations that
have external side effects: UTL_HTTP calls, DBMS_PIPE, NOCACHE sequences,
and certain PL/SQL constructs. These cause replay to abort and the
application sees the error. Audit application code before relying on TAC.
recommendation: "Audit application for non-replayable operations before enabling TAC"
- id: FK-014
area: "ADB-S Auto Indexing"
severity: LOW
description: |
ADB-S Auto Indexing creates indexes with VISIBILITY=INVISIBLE (HIDDEN).
They exist and are used by the optimizer but don't appear in standard
DBA_INDEXES views unless you filter for invisible. This confuses DBAs
who think no indexes were created.
recommendation: "Query DBA_INDEXES with VISIBILITY='INVISIBLE' to see auto-created indexes"
- id: FK-015
area: "Database Enterprise Patching (DEP)"
severity: MEDIUM
description: |
DEP provisioning can take 30-60 minutes for DBCS/ExaCS. Plan maintenance
windows accordingly. DEP also requires Fleet Management setup which has
its own prerequisites (OS Management Hub agent, etc.).
recommendation: "Set up DEP and Fleet Management early; plan for 60-minute patching windows"
- id: FK-016
area: "ExaCS Minimum Cost"
severity: HIGH
description: |
ExaCS requires dedicated Exadata infrastructure. Minimum configuration
(quarter rack) starts at ~$6,000/month before database licensing.
Don't recommend for workloads under 16 OCPUs sustained.
recommendation: "Use ADB-S or DBCS for workloads < 16 OCPUs; ExaCS only for isolation/RAC/high IOPS"
- id: FK-017
area: "Cross-Region ADG is Async Only"
severity: HIGH
description: |
Cross-region Autonomous Data Guard uses asynchronous replication only.
RPO is always > 0 (typically seconds). For zero RPO you need same-region
standby or ADB-D with local synchronous Data Guard.
recommendation: "Set customer expectations: cross-region DR = RPO > 0 (seconds, not zero)"
- id: FK-018
area: "OKE VCN-Native Pod Networking"
severity: MEDIUM
description: |
VCN-Native Pod Networking (OCI CNI) assigns VCN IPs directly to pods.
This enables NSG attachment to pods but consumes subnet IP addresses
rapidly. A /24 subnet supports ~250 pods. Size subnets for pod count,
not node count.
recommendation: "Use /21 or larger subnets for pod networking; calculate IPs from max pod count"
- id: FK-019
area: "Object Storage Eventual Consistency"
severity: MEDIUM
description: |
OCI Object Storage provides strong read-after-write consistency for PUTs
of new objects, but LIST operations may show eventual consistency.
If your application lists then reads immediately after upload, the new
object may not appear in the list yet.
recommendation: "Don't rely on LIST immediately after PUT; use specific GET for confirmation"
- id: FK-020
area: "Database@AWS — ADB-S NOT available"
severity: HIGH
description: |
Oracle Database@AWS only supports ADB on Dedicated Exadata Infrastructure
(ADB-D), NOT ADB-S Serverless. Customers expecting serverless auto-scaling
and pay-per-query pricing will be disappointed. If ADB-S is required,
the architecture must use native OCI with FastConnect from AWS — which
adds ~1-2ms RTT vs the ~0.2-0.4ms of Database@AWS co-located infra.
recommendation: |
Clarify ADB-S vs ADB-D early in discovery. If P95 <1ms AND serverless
are both hard requirements, they are mutually exclusive with current
Database@AWS offering. Trade-off: co-located ADB-D (low latency) vs
native OCI ADB-S (serverless) via FastConnect (higher latency).
- id: FK-021
area: "Database@AWS — Same-AZ placement is critical"
severity: HIGH
description: |
Database@AWS latency drops from ~0.2-0.4ms (same AZ) to ~1ms+ (cross-AZ).
If app EC2 and ODB network are in different AZs, you lose the latency
benefit that justifies co-location. Transit Gateway attachment must also
be in the same AZ as the ODB network.
recommendation: |
Always deploy app and ODB network in the same AZ. Document AZ choice
early — VM clusters cannot be moved between ODB networks after creation.
- id: FK-022
area: "Flex Shape Memory Ratio"
severity: LOW
description: |
VM.Standard.E4.Flex allows 1-64 GB per OCPU (default 16 GB). For
memory-intensive workloads, you can increase memory without adding OCPUs.
But memory is billed separately — verify it's cheaper than adding OCPUs
with default memory.
recommendation: "Compare cost of extra memory vs extra OCPUs for memory-intensive workloads"
- id: FK-024
area: "Exadata X11M — Minimum Configuration (ADB-D and ExaCS)"
severity: HIGH
description: |
Exadata X11M applies the same minimum configuration for both ADB-D and ExaCS:
2 DB servers + 3 storage servers. It is not possible to provision a single DB
server. This applies to X8M, X9M, and X11M generations.
Elastic range: 232 DB servers, 364 storage servers.
The tenancy service limits for X11M must be set to at least DB=2, Storage=3
before provisioning.
recommendation: "Always start X11M sizing at 2 DB servers + 3 storage servers minimum. Applies to both ADB-D and ExaCS."
source: "Verified — Oracle docs (ExaDB-D X11M datasheet, ADB-D X11M datasheet, OCI docs)"
references:
- "https://www.oracle.com/a/ocom/docs/engineered-systems/exadata/exadb-d-x11m-ds.pdf"
- "https://docs.oracle.com/en/cloud/paas/autonomous-database/dedicated/adbde/"
- id: FK-023
area: "GPU Bare Metal — Preemptible Availability"
severity: HIGH
description: |
OCI Preemptible instances (~50% off) are technically supported for BM shapes,
but for high-demand GPU bare metal shapes (BM.GPU.H100, BM.GPU.H200, BM.GPU.B200,
BM.GPU.B300) preemptible capacity is practically unavailable. These shapes are
sold almost entirely via reservations or Universal Credits commitments.
Additionally, preemptible instances can be reclaimed with only 30 seconds notice,
making them operationally unviable for multi-day or multi-week training runs.
recommendation: |
Do NOT model GPU BM cost savings based on preemptible pricing.
Use Universal Credits 1yr (~35% off) or 3yr (~55% off) for realistic estimates.
If the workload is short batch jobs tolerant to interruptions, ask your PDM
about spot/preemptible availability before committing to that model.
source: "Field experience — Diego, OCI SA"

View File

@@ -0,0 +1,96 @@
---
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"

View File

@@ -0,0 +1,77 @@
---
last_verified: 2026-03-14
description: |
Real-world limits that differ from official documentation or are not
well-documented. These come from actual deployment experience.
---
limits:
- service: ADB-S
limit: "Concurrent connections"
documented: "300 per OCPU"
real_world: |
300 per OCPU is the hard limit, but performance degrades noticeably
past 200 active sessions per OCPU. Size for 200 concurrent active
sessions per OCPU, not 300.
recommendation: "Plan for 200 active sessions per OCPU as practical limit"
- service: ADB-S
limit: "Auto-scaling speed"
documented: "Automatic"
real_world: |
Takes 2-3 minutes to begin scaling. Not instantaneous. Very short
bursts (< 3 minutes) may complete before scaling activates.
recommendation: "Size base OCPUs for P75 to absorb initial burst"
- service: ExaCS
limit: "Provisioning time"
documented: "Hours"
real_world: |
Can take 4-8 hours for infrastructure provisioning. VM cluster
creation adds another 1-2 hours. Total: 6-10 hours first time.
recommendation: "Plan provisioning 1-2 business days ahead"
- service: OKE
limit: "Node provisioning"
documented: "Minutes"
real_world: |
Node provisioning: 3-5 minutes for compute instance.
Node ready (kubelet + image pull): 5-10 minutes total.
Pod scheduling after node ready: 10-30 seconds.
recommendation: "Plan for 10-minute node scale-up, keep warm pool for critical workloads"
- service: FastConnect
limit: "Provisioning time"
documented: "Varies by partner"
real_world: |
Partner-based: 2-6 weeks depending on partner and location.
Co-location: 1-2 weeks if already in the same facility.
Always have IPSec VPN as backup during provisioning.
recommendation: "Start procurement 6-8 weeks early, use VPN as interim"
- service: Block Volume
limit: "IOPS per volume"
documented: "Up to 25K (Balanced), 35K (Higher Performance)"
real_world: |
Documented limits are achievable with sufficient volume size.
Small volumes (< 200 GB) won't reach max IOPS due to per-GB ratio.
Need 417 GB for 25K IOPS on Balanced (60 IOPS/GB).
recommendation: "Size volumes for IOPS requirement, not just capacity"
- service: Object Storage
limit: "API rate limits"
documented: "Request-based"
real_world: |
Burst throttling can occur at ~1000 requests/second per bucket.
Use multipart upload for large objects. Prefix partitioning helps
for high-throughput scenarios.
recommendation: "Use multipart upload, prefix partitioning for high throughput"
- service: ADB-S
limit: "Maximum databases per tenancy"
documented: "Service limits page"
real_world: |
Default limit is often 10-20 ADB instances per region. Need to
request limit increase via support ticket. Increases are usually
approved within 1-2 business days.
recommendation: "Request limit increases early in project planning"

View File

@@ -0,0 +1,149 @@
# Application Patterns Library
# Proven application-level architecture patterns for common workload types
# Referenced during DESIGN/Future to select the right application architecture
patterns:
# --- Web Application Patterns ---
- id: app_web_traditional
name: "Traditional Web Application (3-Tier)"
description: "Classic presentation → application → database architecture on OCI"
applicable_when:
- "Java/J2EE, .NET, PHP, or Python web application"
- "WebLogic, Tomcat, or similar app server"
- "Stateful sessions or shared filesystem dependencies"
oci_architecture:
presentation_tier: "Load Balancer (public) → WAF"
application_tier: "Compute instances (VM.Standard.E4.Flex) in Instance Pool with auto-scaling"
database_tier: "ADB-S or DBCS depending on feature requirements"
networking: "Public subnet (LB) → Private subnet (app) → Private subnet (DB)"
technology_patterns: [compute_scaling, database_ha_adb_s, networking_basic, security_baseline]
considerations:
- "WebLogic clustering needs shared storage (FSS) or session replication"
- "Consider OKE if team has container skills and wants to modernize"
- id: app_web_cloud_native
name: "Cloud-Native Web Application"
description: "Containerized microservices on OKE with managed services"
applicable_when:
- "New application or major refactoring opportunity"
- "Team has Kubernetes experience"
- "Need rapid scaling and deployment"
oci_architecture:
presentation_tier: "Load Balancer → API Gateway"
application_tier: "OKE (managed K8s) with HPA auto-scaling"
database_tier: "ADB-S (OLTP) + autonomous JSON for microservice data"
messaging: "OCI Streaming (Kafka-compatible) for event-driven"
technology_patterns: [compute_scaling, database_ha_adb_s, networking_hub_spoke]
# --- Batch Processing Patterns ---
- id: app_batch_processing
name: "Batch / ETL Processing"
description: "Scheduled data processing, reporting, or ETL workloads"
applicable_when:
- "Nightly batch jobs, report generation, data warehousing"
- "Variable compute needs (high during batch windows)"
oci_architecture:
compute: "Preemptible instances or Functions for cost optimization"
orchestration: "Resource Scheduler or cron-based"
database: "ADB-S with auto-scaling (scale up during batch, scale down after)"
storage: "Object Storage for staging data"
technology_patterns: [database_ha_adb_s, compute_scaling]
considerations:
- "ADB-S auto-scaling takes 2-3 min to activate — pre-scale for predictable batch windows"
# --- Analytics Patterns ---
- id: app_analytics_lakehouse
name: "Analytics / Lakehouse"
description: "Data warehouse and analytics platform on OCI"
applicable_when:
- "Business intelligence, reporting, or advanced analytics"
- "Data from multiple sources needs consolidation"
- "Self-service analytics for business users"
oci_architecture:
ingestion: "GoldenGate or OCI Data Integration for CDC"
storage: "Object Storage (data lake) + ADB-DW (warehouse)"
analytics: "Oracle Analytics Cloud (OAC)"
governance: "Data Catalog for metadata management"
technology_patterns: [database_ha_adb_s]
# --- Hybrid Patterns ---
- id: app_hybrid_cloud
name: "Hybrid Cloud (On-Prem + OCI)"
description: "Application split across on-prem and OCI with connectivity"
applicable_when:
- "Cannot migrate everything at once"
- "Some workloads must stay on-prem (data gravity, regulation)"
- "Want to extend capacity to cloud"
oci_architecture:
connectivity: "FastConnect (primary) + IPSec VPN (backup)"
networking: "Hub-spoke VCN with DRG"
data_sync: "GoldenGate for bidirectional replication"
dns: "OCI DNS with split-horizon"
technology_patterns: [networking_hub_spoke, database_ha_adb_s]
considerations:
- "Latency between on-prem and OCI affects application performance"
- "FastConnect provisioning takes 2-4 weeks"
- "Consider data gravity — move compute to where data lives"
# --- Migration Patterns ---
- id: app_lift_and_shift
name: "Lift and Shift Migration"
description: "Move existing workloads to OCI with minimal changes"
applicable_when:
- "Timeline pressure (hardware EOL, contract expiry)"
- "Application is stable and not being modernized"
- "Want to get to cloud quickly, optimize later"
oci_architecture:
compute: "VM shapes matching current specs (use sizing ratios from kb/sizing/)"
database: "DBCS if feature compatibility requires, ADB-S if possible"
storage: "Block Volume (replacing SAN), FSS (replacing NFS)"
technology_patterns: [networking_basic, security_baseline]
considerations:
- "May not realize full cloud benefits initially"
- "Plan a Phase 2 optimization after stabilization"
- id: app_replatform
name: "Re-Platform (Lift, Tinker, Shift)"
description: "Migrate with targeted changes to leverage managed services"
applicable_when:
- "Want cloud benefits without full re-architecture"
- "Can accept minor application changes"
- "Database can move to managed service (ADB-S, MySQL HeatWave)"
oci_architecture:
compute: "OKE or Compute with auto-scaling"
database: "ADB-S (autonomous) vs DBCS (managed)"
storage: "Object Storage replacing file-based integrations"
technology_patterns: [database_ha_adb_s, compute_scaling]
considerations:
- "Test application compatibility with ADB-S restrictions early"
- "Connection string changes may require app config updates"
# --- Disaster Recovery Patterns ---
- id: app_dr_active_passive
name: "Active-Passive DR"
description: "Primary region active, standby region for failover"
applicable_when:
- "RTO 1-4 hours, RPO < 1 hour"
- "Cost-conscious — don't want to run full duplicate"
oci_architecture:
primary: "Full deployment in primary region"
standby: "Dormant compute (scaled down) + DB replica (Data Guard)"
failover: "DNS switchover + compute scale-up"
technology_patterns: [database_dr_cross_region, networking_hub_spoke]
- id: app_dr_active_active
name: "Active-Active Multi-Region"
description: "Both regions serve traffic, mutual failover"
applicable_when:
- "RTO < 15 min, RPO ~ 0"
- "Geo-distributed users"
- "Budget supports dual infrastructure"
oci_architecture:
both_regions: "Full deployment with load balancing"
database: "ADB-S with Autonomous Data Guard (bidirectional)"
traffic: "OCI Traffic Management for geo-steering"
technology_patterns: [database_dr_cross_region, database_ha_adb_s]
considerations:
- "Application must handle eventual consistency for cross-region writes"
- "Significantly higher cost (nearly 2x)"

View File

@@ -0,0 +1,107 @@
---
last_verified: 2026-03-16
pattern:
id: architecture-principles
name: "Architecture Principles (ECAL)"
category: governance
---
description: >
Formalized decision-making principles aligned with Oracle's ECAL framework.
The skill selects applicable principles based on the workload profile and
presents them in the proposal as the governance framework for the architecture.
principles:
design:
- id: "D-01"
name: "Operational Simplicity"
principle: "Keep architecture simple. If still complex, simplify again."
rationale: "Complex solutions tend to be inflexible, non-agile, and operationally fragile."
applies_when: "always"
- id: "D-02"
name: "Application First (SaaS > PaaS > IaaS)"
principle: "Always consider application services first, platform services second, infrastructure services as last resort."
rationale: "Higher-level services reduce operational burden and accelerate delivery."
applies_when: "always"
- id: "D-03"
name: "Use-Case Fit"
principle: "Map workloads into applicable use-cases. Architectural simplicity and operational success come from re-use."
rationale: "Custom architectures are expensive to build and maintain. Reference architectures exist for a reason."
applies_when: "always"
- id: "D-04"
name: "Hybrid-Ready"
principle: "Solution should run in hybrid mode, accounting for network bandwidth and latency."
rationale: "Most enterprise migrations have a hybrid phase. Architecture must work during transition."
applies_when: "on-prem exists or migration is phased"
- id: "D-05"
name: "HA for Business Continuity"
principle: "Architect for availability, prepare for disaster, leverage cloud's built-in resilience."
rationale: "HA is cheaper to build in from day 1 than to retrofit."
applies_when: "always"
- id: "D-06"
name: "Compliance by Design"
principle: "Consider required compliance requirements and existing policies from the initial design phase."
rationale: "Retrofitting compliance is orders of magnitude more expensive than designing for it."
applies_when: "compliance requirements identified (PCI, HIPAA, banking, GDPR)"
deployment:
- id: "P-01"
name: "Automation First"
principle: "Strive to automate production processes from the beginning — infrastructure as code, seeded features."
rationale: "Manual processes don't scale, are error-prone, and create key-person dependencies."
applies_when: "always"
- id: "P-02"
name: "Environment Separation"
principle: "Production always separated from test and dev. Clear lifecycle policy."
rationale: "Prevents accidental data exposure and configuration drift."
applies_when: "always"
- id: "P-03"
name: "API-Centric Integration"
principle: "Prefer integration via REST APIs over lower-level network protocols."
rationale: "APIs are versionable, documentable, and testable. Direct DB links are fragile."
applies_when: "integration points exist"
- id: "P-04"
name: "Data Security at Rest and In Transit"
principle: "Encrypt data at rest (TDE) and in transit (SQL*Net encryption). Key management from day 1."
rationale: "Encryption is a baseline, not an option. Key management complexity grows with scale."
applies_when: "always"
- id: "P-05"
name: "Unified Identity Management"
principle: "All users managed in central identity system. SSO. Federation where applicable."
rationale: "Distributed identity is a security liability."
applies_when: "always"
service:
- id: "S-01"
name: "Cloud Monitoring & Management"
principle: "Map management and monitoring requirements explicitly. Use cloud-native tools first."
rationale: "Observability gaps become operational crises during incidents."
applies_when: "always"
- id: "S-02"
name: "Issue & Incident Management"
principle: "Design for service. Adopt incident management with clear ownership, governance, and SLAs."
rationale: "Without defined escalation paths, incidents become crises."
applies_when: "always"
- id: "S-03"
name: "Solution Lifecycle"
principle: "Map governance for cloud solution lifecycle. Apply ITIL/ITSM frameworks. Readiness for continuous change."
rationale: "Cloud evolves constantly. The architecture must evolve with it."
applies_when: "always"
- id: "S-04"
name: "Cloud Onboarding"
principle: "Setup PoC environment first. Early Customer Success Management involvement."
rationale: "Hands-on validation before commitment reduces risk and builds confidence."
applies_when: "customer is new to OCI"

View File

@@ -0,0 +1,217 @@
---
last_verified: 2026-03-18
pattern:
id: business-drivers
name: "Business Drivers Framework"
category: define
---
description: >
Categorizes customer business drivers into four pillars (Strategic,
Financial, Business Ops, IT Ops) and maps them to cloud value
propositions. Used during DEFINE phase to structure the Value Story
and during CONFIRM to frame the Solution Proposal. Source: ECAL 3.1.
# ═══════════════════════════════════════════════════════════════
# The Four Pillars
# ═══════════════════════════════════════════════════════════════
pillars:
strategic:
label: "Strategic"
headline: "Business Transformation to Cloud"
description: >
Long-term strategic positioning. Cloud as enabler for business
model evolution, M&A, market expansion, or competitive defense.
common_drivers:
- "Cloud-first / cloud-native strategy mandated by CxO"
- "Digital transformation initiative"
- "Merger or acquisition requiring platform consolidation"
- "Geographic expansion requiring global infrastructure"
- "Competitive pressure from cloud-native disruptors"
- "Board/investor mandate for technology modernization"
- "Innovation enablement (AI/ML, IoT, blockchain)"
value_propositions:
- "Cloud-based solution with enterprise features"
- "On-premise security with cloud economics (C@C, dedicated region)"
- "Customer-defined security model"
- "Data sovereignty and residency guarantees"
- "Multi-cloud and hybrid flexibility"
financial:
label: "Financial"
headline: "Cost Optimization"
description: >
Direct financial impact. CAPEX→OPEX shift, license optimization,
support cost reduction, consumption-based pricing.
common_drivers:
- "Reduce total cost of ownership (TCO)"
- "Shift from CAPEX to OPEX model"
- "Optimize Oracle licensing (ULA wind-down, BYOL)"
- "Reduce data center costs (power, cooling, space, staff)"
- "Support rebate / simplified licensing"
- "Avoid hardware refresh cycle"
- "Consumption-based pricing alignment with business cycles"
value_propositions:
- "Subscription and consumption-based commercials"
- "Simplified licensing (BYOL, universal credits)"
- "PAYG flexibility for variable workloads"
- "Support cost reduction via managed services"
- "Elimination of hardware refresh capex"
quantification_tips:
- "Compare 3-year TCO: current state vs. OCI (include staff, power, space)"
- "Factor in support rebate for moving to OCI"
- "Account for BYOL savings (if eligible)"
- "Include non-prod savings (auto-scaling, auto-stop)"
business_ops:
label: "Business Operations"
headline: "Faster Time to Market"
description: >
Business agility and speed. Faster development cycles, quicker
deployment of new capabilities, reduced time-to-value.
common_drivers:
- "Faster development and deployment of new applications"
- "Reduce release cycle from months to weeks"
- "Enable self-service provisioning for developers"
- "Data platform for analytics and decision-making"
- "Support rapid experimentation and A/B testing"
- "Enable mobile/digital channels faster"
- "Partner and ecosystem integration"
value_propositions:
- "Faster development of customer-facing and internal apps"
- "Data platform implementation (lakehouse, analytics)"
- "Self-service database provisioning"
- "CI/CD and DevOps enablement"
- "Integration with partner ecosystems"
it_ops:
label: "IT Operations"
headline: "Operational Efficiency"
description: >
IT team productivity and operational excellence. Reduce toil,
improve reliability, automate operations.
common_drivers:
- "Reduce DBA / sysadmin toil (patching, backups, monitoring)"
- "Improve availability and reduce unplanned downtime"
- "Standardize operations across environments"
- "Automate provisioning and lifecycle management"
- "Improve disaster recovery posture"
- "Address skill gaps (hard to hire Oracle DBAs)"
- "Consolidate tooling and reduce tool sprawl"
- "Performance improvement without hardware throw"
value_propositions:
- "Oracle Managed Cloud environment"
- "Autonomous operations (ADB self-tuning, self-patching)"
- "Data platform implementation and consolidation"
- "Performance improvement via Exadata architecture"
- "Unified monitoring and management (OCI native tools)"
# ═══════════════════════════════════════════════════════════════
# Mapping: Business Driver → Hypothesis Family
# ═══════════════════════════════════════════════════════════════
# Use this to quickly map a customer's stated driver to a
# hypothesis family for the Value Story
hypothesis_families:
db_consolidation:
triggers:
- "Too many databases across too many platforms"
- "Hardware refresh coming due"
- "DBA team stretched thin"
- "License compliance concerns"
use_cases:
- "Consolidation of N databases to shared platform"
- "Transform to fully managed operations"
- "Improved elasticity and cost control"
- "Standardized backup, HA, and DR"
typical_services:
- "ADB-S or ADB-D (for consolidation)"
- "ExaCS or ExaCC (for large scale)"
- "OEM for fleet management"
pillar_alignment: ["financial", "it_ops"]
cloud_migration:
triggers:
- "Data center lease expiring"
- "Cloud-first mandate"
- "Competitive pressure"
- "EOL hardware or software"
use_cases:
- "Lift-and-shift existing Oracle workloads"
- "Re-platform to managed services"
- "Hybrid cloud (keep some on-prem)"
typical_services:
- "OCI Compute (VM/BM)"
- "ExaCS (for Oracle DB workloads)"
- "ADB-S (for re-platform)"
- "FastConnect + VPN"
pillar_alignment: ["strategic", "financial"]
modernization:
triggers:
- "Legacy app can't support new business requirements"
- "Technical debt is slowing delivery"
- "Need for microservices or API-first"
- "AI/ML capabilities required"
use_cases:
- "Re-architect legacy apps to cloud-native"
- "Add AI/ML capabilities to existing workflows"
- "Microservices decomposition"
- "APEX rapid app development"
typical_services:
- "OKE (Kubernetes)"
- "ADB-S + APEX"
- "OCI AI Services"
- "API Gateway + Functions"
pillar_alignment: ["business_ops", "strategic"]
dr_and_resilience:
triggers:
- "Recent outage or near-miss"
- "Audit finding on DR gaps"
- "Insurance or compliance requirement"
- "Business continuity plan update"
use_cases:
- "Cross-region DR for critical workloads"
- "Active-active for zero RPO"
- "Pilot light DR for cost optimization"
typical_services:
- "Cross-region ADG"
- "Full Stack DR"
- "Object Storage for backups"
pillar_alignment: ["it_ops", "strategic"]
compliance_driven:
triggers:
- "New regulation (DORA, NIS2, GDPR enforcement)"
- "Audit finding requiring remediation"
- "Data sovereignty requirement"
- "Industry-specific mandate (banking, healthcare)"
use_cases:
- "Data residency with OCI regions or dedicated region"
- "Encryption and key management (customer-managed keys)"
- "Access controls and audit trail"
- "Isolated compute (C@C, dedicated region)"
typical_services:
- "OCI Vault (KMS)"
- "Data Safe"
- "Cloud Guard"
- "ExaCC or Dedicated Region"
pillar_alignment: ["strategic", "it_ops"]
# ═══════════════════════════════════════════════════════════════
# Usage in the skill
# ═══════════════════════════════════════════════════════════════
skill_usage:
define_phase:
- "Parse discovery notes to identify which pillar(s) are dominant"
- "Use pillar alignment to select the right hypothesis family"
- "Structure the Value Story around the dominant 1-2 pillars"
- "Use value_propositions as talking points for the proposal"
confirm_phase:
- "Frame the Solution Proposal business case around the identified pillars"
- "Use quantification_tips for the financial pillar"
- "Map each architecture decision back to the business driver"

View File

@@ -0,0 +1,128 @@
# Business Patterns Library
# Proven business-level patterns that map customer drivers to OCI solution strategies
# Referenced during DEFINE/Ideate to formulate value hypotheses
patterns:
# --- Cost Optimization Patterns ---
- id: biz_cost_reduction_db
name: "Database Cost Reduction"
business_driver: cost_reduction
hypothesis_template: "Migrate {n} Oracle databases from {current_platform} to ADB-S, reducing total DB cost by {pct}% through autonomous operations and BYOL/ULA leverage"
applicable_when:
- "Customer runs Oracle databases on-prem or in AWS/Azure"
- "Existing ULA or BYOL licenses available"
- "DBA team spends >50% time on maintenance tasks"
typical_outcome:
cost_savings: "40-70% vs on-prem, 30-50% vs AWS RDS Oracle"
operational_savings: "50-80% reduction in DBA administrative effort"
evidence:
- "ADB-S automates patching, tuning, backups"
- "BYOL cost advantage vs AWS License Included"
technology_patterns: [database_ha_adb_s, database_dr_cross_region]
risks: ["Feature compatibility gaps", "Migration complexity for customized DBs"]
- id: biz_cost_reduction_compute
name: "Compute Cost Optimization"
business_driver: cost_reduction
hypothesis_template: "Right-size and modernize {n} compute workloads to OCI Flex shapes with auto-scaling, reducing compute spend by {pct}%"
applicable_when:
- "Over-provisioned VMs on-prem or in another cloud"
- "Variable workload patterns with steady-state over-provisioning"
typical_outcome:
cost_savings: "30-50% through right-sizing + auto-scaling"
technology_patterns: [compute_scaling]
# --- Modernization Patterns ---
- id: biz_app_modernization
name: "Application Modernization"
business_driver: modernization
hypothesis_template: "Modernize {app_name} from {current_stack} to cloud-native on OKE, improving deployment frequency from {current_freq} to {target_freq}"
applicable_when:
- "Monolithic application limiting agility"
- "Slow deployment cycles (monthly or longer)"
- "Team has or is building container/K8s skills"
typical_outcome:
deployment_frequency: "From monthly to daily/weekly"
scalability: "Horizontal auto-scaling vs vertical only"
technology_patterns: [compute_scaling]
risks: ["Requires significant app refactoring", "Team skill gap"]
- id: biz_db_modernization
name: "Database Modernization (non-Oracle)"
business_driver: modernization
hypothesis_template: "Migrate {db_engine} to OCI-managed {target_service}, eliminating operational overhead while maintaining application compatibility"
applicable_when:
- "Running self-managed MySQL, PostgreSQL, or MongoDB"
- "Want to reduce operational burden without app rewrite"
typical_outcome:
operational_savings: "Automated backups, patching, HA"
technology_patterns: [database_ha_adb_s]
# --- Compliance Patterns ---
- id: biz_compliance_driven
name: "Compliance-Driven Migration"
business_driver: compliance
hypothesis_template: "Migrate {scope} to OCI to meet {compliance_framework} requirements by {deadline}, leveraging OCI's built-in compliance controls"
applicable_when:
- "Upcoming compliance audit or certification deadline"
- "Current infrastructure doesn't meet regulatory requirements"
- "Data residency or sovereignty requirements"
typical_outcome:
compliance: "Certification-ready infrastructure"
timeline: "Typically 8-16 weeks for standard compliance scope"
technology_patterns: [security_baseline, compliance_pci]
risks: ["Compliance scope creep", "Shared responsibility model gaps"]
# --- Hardware EOL / Contract Expiry Patterns ---
- id: biz_hardware_eol
name: "Hardware End-of-Life Migration"
business_driver: hardware_eol
hypothesis_template: "Migrate {n} workloads from EOL {hardware} to OCI before {eol_date}, avoiding {cost} hardware refresh while gaining cloud elasticity"
applicable_when:
- "On-prem hardware approaching end of support"
- "Capital expenditure avoidance is a driver"
- "Timeline is fixed by hardware support dates"
typical_outcome:
capex_avoidance: "Avoid $X hardware refresh"
opex_model: "Shift to predictable OpEx"
technology_patterns: [database_ha_adb_s, compute_scaling, networking_basic]
- id: biz_contract_expiry
name: "Cloud Contract Expiry / Repatriation"
business_driver: contract_expiry
hypothesis_template: "Migrate {n} workloads from {incumbent_cloud} to OCI before contract renewal, reducing cloud spend by {pct}% with better Oracle licensing economics"
applicable_when:
- "AWS/Azure contract up for renewal"
- "Running Oracle workloads on non-Oracle cloud"
- "Significant Oracle license cost on AWS/Azure"
typical_outcome:
cost_savings: "30-60% for Oracle DB workloads (BYOL advantage)"
technology_patterns: [database_ha_adb_s, networking_hub_spoke]
# --- Performance Patterns ---
- id: biz_performance_improvement
name: "Performance Improvement"
business_driver: performance
hypothesis_template: "Migrate {workload} to OCI {target_service} to achieve {target_metric}, resolving current {pain_point}"
applicable_when:
- "Current platform cannot meet performance SLAs"
- "Latency or throughput is a business-impacting issue"
- "Exadata-class performance needed without Exadata cost"
typical_outcome:
performance: "2-5x improvement typical with ADB-S/ExaCS"
technology_patterns: [database_ha_adb_s]
# --- Consolidation Patterns ---
- id: biz_consolidation
name: "Database Consolidation"
business_driver: consolidation
hypothesis_template: "Consolidate {n} Oracle databases into {target_n} ADB-S instances, reducing management complexity and licensing footprint"
applicable_when:
- "Many small Oracle databases (sprawl)"
- "Under-utilized database instances"
- "License optimization opportunity"
typical_outcome:
license_reduction: "40-60% fewer required OCPUs"
operational_reduction: "Manage N instead of N*10 instances"
technology_patterns: [database_ha_adb_s]

View File

@@ -0,0 +1,94 @@
---
last_verified: 2026-03-14
pattern: PCI-DSS Compliance Overlay
category: compliance
---
description: |
Additional security controls required for PCI-DSS compliance on OCI.
Builds on top of the security-baseline pattern.
pci_scope_definition:
cardholder_data_environment:
- "Databases storing PAN (Primary Account Number)"
- "Application servers processing card data"
- "Network segments carrying card data"
out_of_scope:
- "Reporting databases (if no PAN)"
- "Development environments (if no real card data)"
- "Management/monitoring infrastructure"
recommendation: |
Minimize PCI scope aggressively. Use tokenization to remove PAN
from most systems. Only the tokenization service and payment
gateway should be in scope.
controls:
network_segmentation:
pci_req: "Requirement 1: Network segmentation"
implementation:
- "Dedicated VCN for CDE (Cardholder Data Environment)"
- "NSGs restricting traffic to/from CDE"
- "Network Firewall for traffic inspection between CDE and non-CDE"
- "No internet-facing services in CDE subnet"
- "Document all network flows in and out of CDE"
encryption:
pci_req: "Requirement 3 & 4: Protect stored and transmitted data"
implementation:
- "TDE with customer-managed keys (OCI Vault) for databases"
- "TLS 1.2+ for all data in transit"
- "Column-level encryption for PAN if stored"
- "Key rotation per PCI requirements (annual minimum)"
- "Data masking for non-production environments (Data Safe)"
access_control:
pci_req: "Requirement 7 & 8: Access control"
implementation:
- "Dedicated compartment for CDE resources"
- "IAM policies restricting CDE access to authorized personnel"
- "MFA required for all CDE access"
- "Privileged access management with session recording"
- "Quarterly access reviews"
monitoring:
pci_req: "Requirement 10: Logging and monitoring"
implementation:
- "Centralized logging (OCI Logging + SIEM integration)"
- "Audit trail for all CDE access (OCI Audit)"
- "Real-time alerting for security events (Cloud Guard)"
- "Log retention minimum 12 months (1 year online, archive older)"
- "Daily log review process"
vulnerability_management:
pci_req: "Requirement 5 & 6: Vulnerability management"
implementation:
- "Vulnerability Scanning service for compute instances"
- "Data Safe security assessments for databases"
- "Automated patching via OS Management"
- "Web Application Firewall (WAF) for public endpoints"
- "Quarterly vulnerability scans, annual penetration tests"
dr_for_pci:
pci_req: "Requirement 12: DR and business continuity"
implementation:
- "Cross-region DR for CDE (same PCI controls in DR region)"
- "DR region must also be PCI-compliant"
- "Annual DR drill with PCI scope validation"
oci_pci_services:
- service: "OCI Vault"
role: "Customer-managed encryption keys"
- service: "Data Safe"
role: "Database security assessment, data masking, audit"
- service: "Cloud Guard"
role: "Threat detection, security posture management"
- service: "WAF"
role: "Web application firewall for public endpoints"
- service: "Bastion"
role: "Secure access to CDE without public IPs"
- service: "Network Firewall"
role: "Traffic inspection between CDE and non-CDE"
- service: "Vulnerability Scanning"
role: "Automated vulnerability detection"
- service: "OS Management"
role: "Automated patching"

View File

@@ -0,0 +1,72 @@
---
last_verified: 2026-03-14
pattern: Compute Scaling
category: compute
---
description: |
Auto-scaling and load balancing patterns for OCI compute workloads.
patterns:
instance_pool_autoscaling:
name: "Instance Pool Auto-Scaling"
components:
- "Instance Pool with instance configuration"
- "Auto-scaling policy (metric-based or schedule-based)"
- "Load Balancer (flexible or network)"
scaling_metrics:
- "CPU utilization"
- "Memory utilization"
- "Custom metrics via Monitoring service"
scaling_speed: "New instances in 2-5 minutes"
when_to_use:
- "Stateless applications"
- "Web/API tiers"
- "Batch processing with variable load"
oke_horizontal_pod_autoscaling:
name: "OKE Horizontal Pod Autoscaler"
components:
- "OKE cluster with managed nodes"
- "HPA resource definitions"
- "Cluster Autoscaler for node scaling"
scaling_metrics:
- "CPU utilization"
- "Memory utilization"
- "Custom metrics"
scaling_speed: "Pods: seconds, Nodes: 5-10 minutes"
when_to_use:
- "Containerized microservices"
- "Applications already on Kubernetes"
oke_virtual_nodes:
name: "OKE Virtual Nodes (Serverless)"
components:
- "OKE cluster with virtual node pool"
- "No node management required"
scaling_speed: "Seconds (no node provisioning)"
when_to_use:
- "Burst workloads"
- "Event-driven container workloads"
- "Teams that don't want to manage nodes"
load_balancing:
flexible_lb:
type: "Layer 7 (HTTP/HTTPS)"
features:
- "SSL termination"
- "Path-based routing"
- "Session persistence"
- "Health checks"
- "WAF integration"
bandwidth: "10 Mbps to 8 Gbps"
use_for: "Web applications, API endpoints"
network_lb:
type: "Layer 4 (TCP/UDP)"
features:
- "Ultra-low latency"
- "Preserves source IP"
- "Health checks"
bandwidth: "Up to line rate"
use_for: "Database connections, non-HTTP protocols, high-throughput"

View File

@@ -0,0 +1,90 @@
# Pattern: Cross-Region Database DR
# Composable architecture block for cross-region disaster recovery
pattern:
name: "Cross-Region Database DR"
id: database_dr_cross_region
category: database-dr
description: |
Cross-region disaster recovery using Autonomous Data Guard or Active Data Guard to
maintain an asynchronous standby database in a remote OCI region. Provides protection
against full-region outages with RPO measured in seconds and RTO in minutes. Applicable
to ADB-S, DBCS, and ExaCS deployments.
variants:
- id: adb_s_cross_region
name: "ADB-S Cross-Region Autonomous Data Guard"
topology: "ADB-S primary in Region A, Autonomous Data Guard standby in Region B"
rpo: "Seconds (asynchronous replication)"
rto: "< 15 minutes (automated switchover/failover)"
use_when:
- "ADB-S workload requires regional DR"
- "RPO of seconds is acceptable"
- "Fully managed DR with minimal operational overhead"
- id: dbcs_cross_region
name: "DBCS Cross-Region Active Data Guard"
topology: "DBCS primary in Region A, ADG standby in Region B"
rpo: "Seconds to minutes (asynchronous)"
rto: "Minutes to 1 hour depending on automation"
use_when:
- "DBCS workload requires regional DR"
- "Custom database configuration needed"
- "Manual or scripted failover acceptable"
- id: exacs_cross_region
name: "ExaCS Cross-Region Active Data Guard"
topology: "ExaCS primary in Region A, ADG standby in Region B"
rpo: "Seconds to minutes (asynchronous)"
rto: "Minutes to 1 hour depending on automation"
use_when:
- "ExaCS workload requires regional DR"
- "High-performance database with regional protection"
- "Consolidated databases on Exadata with cross-region standby"
preconditions:
- "Primary database provisioned and operational"
- "DR region selected with matching service availability"
- "Network connectivity between regions (remote VCN peering via DRG or dedicated infrastructure)"
- "Sufficient quota in DR region for standby compute and storage"
- "For DBCS/ExaCS: Active Data Guard license (EE-HP or EE-EP, or BYOL with ADG option)"
implied_services:
- service: dns_traffic_management
reason: "Automated DNS failover to redirect application traffic to DR region"
- service: oci_notifications
reason: "Alerting on replication lag, failover events, and switchover status"
- service: monitoring
reason: "Track replication lag, standby apply rate, and DR readiness"
conflicts:
- pattern: "sync_data_guard_cross_region"
reason: "Synchronous Data Guard is not supported cross-region due to latency; only asynchronous replication is available"
gotchas:
- "Cross-region Active/Autonomous Data Guard is asynchronous only — RPO is always > 0"
- "Cross-region data transfer costs apply for redo log transport between regions"
- "Switchover is planned (zero data loss, brief outage) vs. failover is unplanned (potential data loss up to RPO)"
- "After failover, old primary must be reinstated or re-created — not automatic for DBCS/ExaCS"
- "Application connection strings must be updated or use DNS-based failover"
- "ADB-S cross-region DR requires both regions to support ADB-S"
- "DR readiness should be validated with periodic switchover drills"
cost_impact:
- "Full standby compute and storage cost in DR region (same as primary)"
- "Cross-region network egress charges for redo transport"
- "For ADB-S: standby OCPU/ECPU billed at same rate as primary"
- "DNS Traffic Management: per-zone and per-query charges"
- "Consider reserved capacity in DR region for cost optimization"
sizing_rules:
- "Standby must be same shape and size as primary to ensure failover performance"
- "Network bandwidth: estimate redo generation rate (typically 10-50 Mbps per 10K TPS)"
- "Storage in DR region must match primary storage allocation"
- "For ExaCS: same Exadata infrastructure shape required in DR region"
references:
- "https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsa/autonomous-data-guard.html"
- "https://docs.oracle.com/en/cloud/paas/base-database/index.html"
- "https://docs.oracle.com/en/database/oracle/oracle-database/19/sbydb/"

View File

@@ -0,0 +1,97 @@
---
last_verified: 2026-03-14
pattern: Database Disaster Recovery
category: database
---
description: |
DR patterns for Oracle databases on OCI. Covers active-passive,
active-active, and pilot light approaches.
tiers:
tier_1_mission_critical:
name: "Mission Critical"
rto: "<15 minutes"
rpo: "<1 minute"
pattern: "Active-passive with automatic failover"
implementation:
adb_s: "Cross-region ADG with auto-failover"
exacs: "Cross-region Data Guard with FSFO + Observer"
cost_multiplier: "2x (full standby)"
testing: "Quarterly automated DR drill"
tier_2_business_critical:
name: "Business Critical"
rto: "<1 hour"
rpo: "<15 minutes"
pattern: "Active-passive with manual failover"
implementation:
adb_s: "Cross-region ADG with manual switchover"
exacs: "Cross-region Data Guard without FSFO"
cost_multiplier: "2x (full standby) or 1.5x (scaled-down standby)"
testing: "Semi-annual DR drill"
tier_3_standard:
name: "Standard"
rto: "<4 hours"
rpo: "<1 hour"
pattern: "Pilot light or backup-restore"
implementation:
adb_s: "Cross-region backup with restore-on-demand"
exacs: "RMAN backups to Object Storage, cross-region replicated"
cost_multiplier: "1.1x (backup storage only)"
testing: "Annual DR drill"
dr_regions:
recommended_pairs:
- primary: "US East (Ashburn)"
dr: "US West (Phoenix)"
latency_ms: "~60"
- primary: "UK South (London)"
dr: "Germany Central (Frankfurt)"
latency_ms: "~15"
- primary: "Japan East (Tokyo)"
dr: "Japan Central (Osaka)"
latency_ms: "~10"
- primary: "Brazil East (Sao Paulo)"
dr: "Brazil Southeast (Vinhedo)"
latency_ms: "~5"
migration_cutover:
zero_downtime:
tools: ["ZDM with GoldenGate", "Data Guard switchover"]
prerequisites:
- "GoldenGate configured and replicating"
- "Application connection strings use TNS aliases"
- "DNS TTL reduced before cutover"
steps:
- "Verify replication lag is zero"
- "Stop writes to source"
- "Verify final sync"
- "Switch application connection strings"
- "Validate application functionality"
- "Decommission source (after bake period)"
planned_downtime:
tools: ["Data Pump", "RMAN restore", "ZDM physical"]
typical_downtime: "2-8 hours depending on database size"
steps:
- "Announce maintenance window"
- "Take final backup/export"
- "Restore/import to target"
- "Switch application connections"
- "Validate"
gotchas:
- id: DR-001
issue: "Cross-region ADG network latency affects commit performance"
impact: "Synchronous mode adds latency to every commit"
recommendation: "Use asynchronous for cross-region (default), accept seconds of RPO"
- id: DR-002
issue: "DR standby compute may not be available during regional disaster"
impact: "If DR region is also impacted, compute capacity may be limited"
recommendation: "Use capacity reservations in DR region for critical workloads"
- id: DR-003
issue: "Application tier DR often forgotten"
impact: "Database fails over but app tier is not available"
recommendation: "Include app tier in DR plan — Terraform for on-demand provisioning"

View File

@@ -0,0 +1,71 @@
# Pattern: ADB-S High Availability
# Composable architecture block for Autonomous Database Serverless HA
pattern:
name: "ADB-S High Availability"
id: database_ha_adb_s
category: database-ha
description: |
Autonomous Database Serverless (ADB-S) provides built-in high availability through
Transparent Application Continuity (TAC) and automated failover. TAC replays in-flight
transactions transparently after infrastructure failures, masking outages from applications.
For additional protection, Autonomous Data Guard provides a same-region standby with
synchronous replication for zero data loss.
variants:
- id: local_ha
name: "Built-in Local HA (TAC)"
topology: "Same-region, ADB-S infrastructure-managed failover"
rpo: "0"
rto: "~0 perceived (transparent replay via TAC)"
use_when:
- "Standard HA for ADB-S workloads"
- "Application can tolerate brief transparent replay"
- "No separate standby database required"
- id: local_standby
name: "Same-Region Autonomous Data Guard Standby"
topology: "Primary + Standby in same region via Autonomous Data Guard"
rpo: "0 (synchronous replication)"
rto: "< 30 seconds (automatic switchover)"
use_when:
- "Zero RPO mandatory"
- "Protection against full AD or FD failure"
- "Read-only offload to standby needed"
preconditions:
- "ADB-S instance provisioned (Shared infrastructure)"
- "Private endpoint recommended for production workloads"
- "VCN with Service Gateway for secure OCI service access"
- "Wallet or mTLS connectivity configured for clients"
implied_services:
- service: service_gateway
reason: "Secure access to OCI services without internet traversal"
- service: oci_vault
reason: "Customer-managed encryption keys for TDE"
- service: data_safe
reason: "Database security posture management, auditing, and masking"
gotchas:
- "TAC replay does not cover all operations — UTL_HTTP calls, DBMS_PIPE, NOCACHE sequences, and external interactions are not replayed"
- "Auto-scaling takes 2-3 minutes to add OCPUs; plan base capacity for burst tolerance"
- "Autonomous Data Guard standby is read-only; cannot run DML on standby"
- "Switchover requires brief downtime; failover is automatic on primary failure"
- "TAC requires JDBC Thin driver 18c+ or ODP.NET with TAC enabled in connection string"
cost_impact:
- "Built-in local HA (TAC): no additional cost, included in ADB-S"
- "Autonomous Data Guard standby: billed at same compute (OCPU/ECPU) rate as primary"
- "Standby storage is additional and billed at standard ADB-S storage rates"
- "Auto-scaling can increase OCPU cost up to 3x base during peaks"
sizing_rules:
- "Standby must be same shape and OCPU/ECPU count as primary for seamless failover"
- "Storage on standby mirrors primary automatically"
- "Base OCPU count should handle normal workload without relying on auto-scaling for HA events"
references:
- "https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsa/autonomous-data-guard.html"
- "https://docs.oracle.com/en/cloud/paas/autonomous-database/serverless/adbsb/application-continuity-autonomous.html"

View File

@@ -0,0 +1,76 @@
# Pattern: Active Data Guard HA/DR
# Composable architecture block for Oracle Database high availability
pattern:
name: "Active Data Guard"
id: active_data_guard
category: database-ha
applies_to: [adb_s, adb_d, dbcs, exacs]
description: |
Oracle Active Data Guard provides real-time data protection with a standby database
that can be used for read-only queries, reporting, and backups while maintaining
synchronous or asynchronous replication from the primary.
variants:
- id: adg_same_region
name: "Same-Region ADG (HA)"
topology: "Primary + Standby in same region, different ADs or FDs"
rpo: "0 (synchronous)"
rto: "< 30 seconds (automatic failover with FSFO)"
use_when:
- "99.99% SLA requirement"
- "Zero RPO mandatory"
- "Read-only offload needed"
- id: adg_cross_region
name: "Cross-Region ADG (DR)"
topology: "Primary in Region A, Standby in Region B"
rpo: "> 0 (asynchronous, typically seconds to minutes)"
rto: "Minutes to 1 hour depending on automation"
use_when:
- "Regional disaster recovery required"
- "RPO of seconds acceptable"
- "Regulatory requirement for geo-separation"
- id: adg_hybrid
name: "Same-Region HA + Cross-Region DR"
topology: "Primary + Local Standby (sync) + Remote Standby (async)"
rpo: "0 local, seconds remote"
rto: "< 30s local, minutes remote"
use_when:
- "Maximum protection: HA + DR"
- "Mission-critical workloads"
preconditions:
- "Oracle Database Enterprise Edition with Active Data Guard option"
- "BYOL: customer must have ADG license or ULA"
- "License Included: ADG included with ADB-S, ExaCS EE-HP/EE-EP"
- "For ADB-S: Autonomous Data Guard (managed, no manual config)"
implied_services:
- service: data_guard
- service: dns_traffic_management
reason: "DNS failover for application connection string update"
when: "cross_region"
- service: oci_notifications
reason: "Alert on failover events"
conflicts:
- pattern: "backup_restore_only"
reason: "ADG provides real-time replication; backup-restore is a subset"
cost_impact:
- "Standby database incurs full compute + storage cost"
- "For ADB-S: standby OCPUs billed at same rate"
- "Cross-region: additional network egress for redo transport"
- "BYOL: ADG license required (included in EE-EP)"
sizing_rules:
- "Standby must be same shape/OCPU as primary for failover"
- "For read-only offload: standby can handle ~80% of primary read capacity"
- "Network bandwidth for redo: estimate 10-50 Mbps per 10K TPS (varies by workload)"
references:
- "https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsa/autonomous-data-guard.html"
- "https://docs.oracle.com/en/database/oracle/oracle-database/19/sbydb/"

View File

@@ -0,0 +1,87 @@
---
last_verified: 2026-03-14
pattern: Database High Availability
category: database
---
description: |
Patterns for achieving high availability for Oracle databases on OCI.
Covers ADB-S, ADB-D, ExaCS, and DBCS configurations.
patterns:
adb_s_ha:
name: "ADB-S Built-in HA"
availability: "99.95% SLA"
rto: "<30 seconds"
rpo: "0 (synchronous)"
components:
- "ADB-S with Autonomous Data Guard (same-region)"
- "Automatic failover enabled"
- "No additional configuration needed"
cost_impact: "2x OCPU cost (standby billed at same rate)"
when_to_use:
- "Standard HA requirement"
- "Same-region protection sufficient"
notes:
- "Standby is provisioned automatically when ADG is enabled"
- "Failover is transparent to applications using recommended connection strings"
- "Switchover for planned maintenance is automatic"
adb_s_cross_region:
name: "ADB-S Cross-Region ADG"
availability: "99.95% SLA per region, survives region failure"
rto: "<5 minutes (automatic), <30 minutes (manual)"
rpo: "Seconds (asynchronous replication)"
components:
- "ADB-S primary in Region 1"
- "ADB-S standby in Region 2 (cross-region ADG)"
- "Optional: Refreshable clone in Region 2 for reporting"
cost_impact: "2x OCPU + inter-region data transfer"
when_to_use:
- "Compliance requires geo-redundant DR"
- "RTO < 30 minutes for region failure"
- "Business-critical workloads"
notes:
- "Cross-region ADG is asynchronous — RPO is not zero"
- "Automatic failover requires ADG Auto-Failover configuration"
- "Test failover quarterly"
exacs_rac_ha:
name: "ExaCS RAC High Availability"
availability: "99.95%+ (RAC + Data Guard)"
rto: "<60 seconds (RAC failover)"
rpo: "0 (synchronous within RAC)"
components:
- "ExaCS with multi-node RAC"
- "Data Guard to standby ExaCS (same or cross-region)"
- "Fast-Start Failover (FSFO) with Observer"
cost_impact: "2x infrastructure for Data Guard standby"
when_to_use:
- "Application requires RAC"
- "Sub-minute RTO required"
- "High-throughput OLTP workloads"
dbcs_ha:
name: "DBCS 2-Node RAC + Data Guard"
availability: "99.95%"
rto: "<60 seconds (RAC), <5 minutes (Data Guard)"
rpo: "0 (synchronous within region)"
components:
- "DBCS 2-node RAC (primary)"
- "DBCS Data Guard standby"
cost_impact: "3x compute (2 RAC + 1 DG standby)"
when_to_use:
- "Moderate workloads needing HA"
- "Budget doesn't allow Exadata"
decision_tree: |
Need HA for Oracle Database?
├── Using ADB-S?
│ ├── Same-region sufficient → Enable ADG (built-in)
│ └── Cross-region required → Cross-region ADG
├── Using ExaCS?
│ ├── RAC for local HA
│ └── Data Guard for DR (same or cross-region)
└── Using DBCS?
├── 2-node RAC for local HA
└── Data Guard for DR

View File

@@ -0,0 +1,678 @@
---
last_verified: 2026-03-18
pattern:
id: ecal-artefacts-catalog
name: "ECAL 3.1 Artefacts Catalog"
category: governance
---
description: >
Complete catalog of ECAL 3.1 artefacts across all 9 steps.
Each entry has: description, purpose, ECAL role, and whether
the OCI Deal Accelerator skill can generate it. Source: ECAL 3.1
Practitioners Guides (01-09).
# auto_generate: skill produces this artefact
# assist: skill provides partial content or structure
# reference: skill references this but customer/team produces it
# out_of_scope: purely delivery/commercial, skill doesn't touch
# ═══════════════════════════════════════════════════════════════
# DEFINE PHASE
# ═══════════════════════════════════════════════════════════════
define:
ideate:
- id: "DEF-01"
name: "Customer Profile"
what: "Strategic business goals, Oracle footprint, industry analysis, competitor positioning"
why: "Understand what drives the customer so the PoV resonates with their strategic goals"
how: "Account team intel, annual reports, web research, Business Model Canvas"
skill_support: "assist"
skill_notes: "Skill can research public info and structure into profile template"
customer_facing: false
- id: "DEF-02"
name: "Strategy Map"
what: "Customer goals → strategies → capabilities → enablers mapping"
why: "Links Oracle products to business strategy. Arguably most important ECAL artefact"
how: "Leverage Customer Profile, annual reports, Value Navigator"
skill_support: "assist"
skill_notes: "Skill can draft from discovery notes; needs customer validation"
customer_facing: false
- id: "DEF-03"
name: "Point of View (PoV)"
what: "Hypothesis about customer need, business benefit, SMART-evaluated"
why: "Go to customer with validated ideas that have significant business value"
how: "Review Pattern Library, Sales Central, quantify with Business Case"
skill_support: "auto_generate"
skill_notes: "Skill generates as 'value hypothesis' in value-story.yaml"
customer_facing: false
- id: "DEF-04"
name: "Ideation Workshop"
what: "Design Thinking workshop to formulate and validate PoV"
why: "Ensure no bias, everyone thinking about customer needs"
how: "Brainstorming, group discussion, NEXT/V2V methodology"
skill_support: "reference"
skill_notes: "Skill can generate agenda and talking points"
customer_facing: true
- id: "DEF-05"
name: "Business Case"
what: "Executive summary, drivers, recommended solution, benefits, timeline, risks"
why: "Communicate business value of cloud adoption"
how: "Use Value Navigator, work with customer on the model"
skill_support: "auto_generate"
skill_notes: "Skill generates via business-case.yaml template + deck"
customer_facing: true
- id: "DEF-06"
name: "Value Story"
what: "Compelling vision of the PoV and why customer should adopt it"
why: "Continue discussion with customer, tailor the PoV"
how: "External Ideation template, PowerPoint, demo, mockup"
skill_support: "auto_generate"
skill_notes: "Skill generates via value-story.yaml template"
customer_facing: true
validate:
- id: "DEF-07"
name: "Value Story Delivery"
what: "Half-day workshop presenting the Value Story to customer"
why: "Validate ideas with customer, do discovery through engagement"
how: "Presentations, whiteboards, exercises — be creative"
skill_support: "assist"
skill_notes: "Skill can generate workshop deck and discussion guide"
customer_facing: true
plan:
- id: "DEF-08"
name: "Joint Engagement Plan (JEP)"
what: "Outline plan for Design phase: activities, resources, timeline, scope"
why: "Customer must commit resources; cannot design in isolation"
how: "Use ECAL template, be clear on scope and outcomes"
skill_support: "auto_generate"
skill_notes: "Skill generates via joint-engagement-plan.yaml template"
customer_facing: true
# ═══════════════════════════════════════════════════════════════
# DESIGN PHASE — CURRENT STEP
# ═══════════════════════════════════════════════════════════════
design:
current:
identify_constraints:
- id: "DES-01"
name: "Business Constraints"
what: "Time, funding, legal, compliance, resource, technology constraints"
why: "Constraints impact Future State Architecture, Roadmap, and Proposal"
how: "Collect from customer via workshops or Constraints Questionnaire"
skill_support: "assist"
skill_notes: "Skill captures in workload-profile.yaml constraints section"
customer_facing: false
- id: "DES-02"
name: "Security Constraints"
what: "Security requirements, GDPR, regulatory needs"
why: "Security is major concern in cloud adoption"
how: "Security checklist, assess need for Oracle Security team"
skill_support: "assist"
skill_notes: "Skill flags compliance requirements from discovery notes"
customer_facing: true
capture_current_state:
- id: "DES-03"
name: "Current State Process & Capability Map"
what: "Business processes/capabilities currently in scope, single-slide view"
why: "Shows Oracle understands customer business needs"
how: "Cloud Notation Business Architecture, neutral language (no Oracle buzzwords)"
skill_support: "reference"
skill_notes: "Business architecture — needs customer input"
customer_facing: true
- id: "DES-04"
name: "Discovery Questionnaire"
what: "Structured collection of customer IT landscape"
why: "Build/understand current state, validate hypotheses"
how: "Send template to customer or fill collaboratively"
skill_support: "auto_generate"
skill_notes: "Skill generates via templates/discovery-questionnaire.yaml"
customer_facing: true
- id: "DES-05"
name: "Current State Apps & Tech Portfolio"
what: "Systems, assets, integrations, strategy per application"
why: "Understand environment, build Current State Architecture"
how: "Portfolio Assessment Workbook — Systems, Assets, Integrations tabs"
skill_support: "assist"
skill_notes: "Skill structures from discovery questionnaire responses"
customer_facing: true
- id: "DES-06"
name: "Security Baseline & Guidance"
what: "Current security posture and requirements"
why: "Baseline for designing security in future state"
how: "Security team assessment"
skill_support: "reference"
skill_notes: "References kb/well-architected/security.yaml"
customer_facing: true
- id: "DES-07"
name: "Operational RACI (Current)"
what: "How customer currently runs operations — services, SLAs, responsibilities"
why: "Understand current ops model to design future ops that fit"
how: "Request operational definitions, frameworks (ITIL), service levels"
skill_support: "assist"
skill_notes: "Skill maps to operational-raci.yaml models"
customer_facing: false
- id: "DES-08"
name: "Prioritization Matrix"
what: "Applications scored by criticality, fit, potential, risk"
why: "Focus on highest-value, lowest-risk initiatives first"
how: "Score each app on 5 criteria, weighted calculation"
skill_support: "auto_generate"
skill_notes: "Skill generates from discovery-questionnaire.yaml prioritization section"
customer_facing: true
- id: "DES-09"
name: "Current State Architecture"
what: "Architecture diagrams of current environment in scope"
why: "Baseline for Future State Architecture"
how: "Receive from customer or draw using Cloud Notation"
skill_support: "assist"
skill_notes: "Skill can generate .drawio from description"
customer_facing: true
future:
solution_design:
- id: "DES-10"
name: "Future State Process & Capability Map"
what: "Business capabilities covered by proposed solution"
why: "Shows Oracle understands and addresses customer needs"
how: "Map capabilities to Oracle products, use Cloud Notation"
skill_support: "reference"
skill_notes: "Business architecture — needs customer validation"
customer_facing: true
- id: "DES-11"
name: "Future State Apps & Tech Portfolio"
what: "Oracle/3rd party products mapped to business capabilities"
why: "Bridges capability map to architecture"
how: "List capabilities per product, show integration relationships"
skill_support: "assist"
skill_notes: "Skill can map from service selection"
customer_facing: true
- id: "DES-12"
name: "Future State Architecture"
what: "Application + Technology architecture diagrams"
why: "Communicates solution vision internally and to customer"
how: "Cloud Notation, review with ECAL team, iterate"
skill_support: "auto_generate"
skill_notes: "Skill generates .drawio via oci_diagram_gen.py"
customer_facing: true
- id: "DES-13"
name: "Solution Roadmap"
what: "Phased implementation plan by value/risk"
why: "Complex solutions can't be delivered in one step"
how: "Divide by criteria (org, region, risk), prioritize high-value/low-risk"
skill_support: "auto_generate"
skill_notes: "Skill includes roadmap slide in deck"
customer_facing: true
- id: "DES-14"
name: "Extension Catalog"
what: "Custom extensions beyond OOTB Oracle products"
why: "Highlights gaps requiring custom development"
how: "Identify missing capabilities, clarify implementation"
skill_support: "reference"
skill_notes: "Customer-specific; skill flags potential gaps"
customer_facing: true
- id: "DES-15"
name: "Integration Catalog"
what: "All non-OOTB integrations with data flows, volumes, frequency"
why: "Communicate integration effort and responsibility"
how: "Map all inter-component data flows, include volumes"
skill_support: "assist"
skill_notes: "Skill can list integrations from architecture"
customer_facing: true
- id: "DES-16"
name: "Information & BI Model"
what: "Data flows, MDM, analytics architecture"
why: "Document where data resides and how it's managed"
how: "Data Ecosystem reference architecture, Cloud Notation"
skill_support: "reference"
skill_notes: "Reference patterns in kb/patterns/"
customer_facing: true
deployment_design:
- id: "DES-17"
name: "Datacentre Design"
what: "Which services run in which region/DC for each environment"
why: "Data locality, regulatory compliance, HA strategy"
how: "Map components to OCI regions, include on-prem/multi-cloud"
skill_support: "auto_generate"
skill_notes: "Skill includes region mapping in architecture"
customer_facing: true
- id: "DES-18"
name: "Lifecycle Management Design"
what: "CI/CD, dev-to-prod automation, IaC approach"
why: "Automation is critical for cloud operational success"
how: "OCI DevOps, Terraform, Resource Manager"
skill_support: "assist"
skill_notes: "Skill recommends IaC approach in deployment design"
customer_facing: true
- id: "DES-19"
name: "Network Design"
what: "Connectivity between DCs, within DCs, to users"
why: "Well-defined networking is critical for solution success"
how: "Cloud Notation, show gateways, protocols, public/private"
skill_support: "auto_generate"
skill_notes: "Skill includes networking in .drawio diagrams"
customer_facing: true
- id: "DES-20"
name: "Identity & Access Design"
what: "How users access the system, authentication, authorization"
why: "IAM is critical non-functional requirement"
how: "End-to-end identity across proposed and existing systems"
skill_support: "assist"
skill_notes: "Skill recommends IAM approach from patterns"
customer_facing: true
- id: "DES-21"
name: "Environment Catalog"
what: "List of all environments: prod, dev, test, DR with sizing"
why: "Understand total solution size for accurate BoM"
how: "Discuss with team and customer, use environment-catalogue.yaml"
skill_support: "auto_generate"
skill_notes: "Skill generates from kb/patterns/environment-catalogue.yaml"
customer_facing: true
- id: "DES-22"
name: "Recovery Model"
what: "HA/DR architecture for different failure scenarios"
why: "Customers need to understand business continuity"
how: "Map RTO/RPO requirements to HA/DR patterns"
skill_support: "auto_generate"
skill_notes: "Skill generates from service-tiering.yaml + HA/DR patterns"
customer_facing: true
- id: "DES-23"
name: "Management Design"
what: "Monitoring tools, alerting, operations management"
why: "Operational readiness is critical for customer confidence"
how: "Map to OCI native tools or customer's existing tools"
skill_support: "assist"
skill_notes: "Skill recommends monitoring stack in operations model"
customer_facing: true
- id: "DES-24"
name: "Data Locality & Data Security"
what: "Where controlled data resides, encryption, key management"
why: "Data security is highest customer concern"
how: "Map data locations, encryption methods, key management"
skill_support: "assist"
skill_notes: "Skill flags data residency and encryption in architecture"
customer_facing: true
transition_design:
- id: "DES-25"
name: "Implementation Plan"
what: "Prioritized implementation/migration of capabilities"
why: "Most organizations can't change architecture in one phase"
how: "Implementation partner responsibility; SA validates compatibility"
skill_support: "assist"
skill_notes: "Skill generates high-level migration plan slides"
customer_facing: true
- id: "DES-26"
name: "Implementation RACI"
what: "Who does what during implementation"
why: "Clear roles prevent rework and delays"
how: "High-level tasks with R/A/C/I per role"
skill_support: "assist"
skill_notes: "Skill can draft from engagement-raci.yaml adopt section"
customer_facing: true
- id: "DES-27"
name: "Provisioning Plan / Map"
what: "How each component gets provisioned and brought into service"
why: "Basis for actual provisioning of services"
how: "Map BoM components to provisioning steps"
skill_support: "reference"
skill_notes: "Delivery partner responsibility"
customer_facing: true
- id: "DES-28"
name: "Adoption Plan"
what: "How customer adopts the cloud service post-provisioning"
why: "Ensure availability of resources and service levels"
how: "Cloud Adoption Services (CAS), business readiness"
skill_support: "reference"
skill_notes: "CAS/delivery partner responsibility"
customer_facing: true
service_design:
- id: "DES-29"
name: "Operational Services RACI"
what: "Runtime responsibilities for operating/supporting the solution"
why: "Clear ops responsibilities prevent go-live surprises"
how: "Map to operational-raci.yaml models (fully/co/self managed)"
skill_support: "auto_generate"
skill_notes: "Skill generates from kb/patterns/operational-raci.yaml"
customer_facing: true
- id: "DES-30"
name: "Operational Services Design"
what: "9 categories of operational service model for running the solution"
why: "Customer needs to know best practices for operating in cloud"
how: "Use 9 Enduring Capabilities framework"
skill_support: "assist"
skill_notes: "Skill generates operations model from template"
customer_facing: true
demo_poc:
- id: "DES-31"
name: "PoC Joint Execution Plan"
what: "Scope, approach, timeline, success criteria for PoC"
why: "Structured PoC with bilateral commitment"
how: "Define scope, test architectures, use cases, ground rules"
skill_support: "reference"
skill_notes: "Customer-specific; skill can outline structure"
customer_facing: true
- id: "DES-32"
name: "Demo / PoC Delivery"
what: "Execution of demo or proof of concept"
why: "Prove technical feasibility or address customer concerns"
how: "Demo Central, Cloud Trials, custom PoC"
skill_support: "reference"
skill_notes: "Execution activity, not a document"
customer_facing: true
bom_sizing:
- id: "DES-33"
name: "Architecture Review"
what: "Team review of all architecture artefacts before BoM"
why: "Ensure team alignment on proposed solution"
how: "Review meeting with complete account team"
skill_support: "auto_generate"
skill_notes: "Skill runs WA validation via validate-architecture.py"
customer_facing: false
- id: "DES-34"
name: "Bill of Materials & Sizing"
what: "All pricing and sizing for each solution component"
why: "Summarizes all software/hardware/service costs"
how: "Map from Future State Architecture + sizing model"
skill_support: "auto_generate"
skill_notes: "Skill generates cost estimate from kb/pricing/ + kb/sizing/"
customer_facing: true
confirm:
- id: "DES-35"
name: "Solution Proposal"
what: "High-impact customer presentation of the proposed solution"
why: "Enable customer to decide whether to proceed to Deliver"
how: "Collect all designs, simplify, merge with business drivers"
skill_support: "auto_generate"
skill_notes: "Skill generates .pptx deck via oci_deck_gen.py"
customer_facing: true
- id: "DES-36"
name: "Partner / Services Proposal"
what: "Implementation + operational services cost estimate"
why: "Complete solution = products + implementation + operations"
how: "Work with OC/ACS/partners based on Design artefacts"
skill_support: "reference"
skill_notes: "OC/ACS/partner responsibility"
customer_facing: true
- id: "DES-37"
name: "RFx Response"
what: "Formal response to customer RFI/RFQ/RFP"
why: "Formal stage in customer buying cycle"
how: "Qualify, plan, manage response, QA, submit"
skill_support: "reference"
skill_notes: "Sales/BD responsibility; skill provides technical content"
customer_facing: true
- id: "DES-38"
name: "Commercial Agreement"
what: "Commercial terms: cloud credits, BYOL, ELA, pricing"
why: "Customer needs to understand costs to proceed"
how: "Sales/CSM use BoM to produce commercial terms"
skill_support: "reference"
skill_notes: "Sales responsibility"
customer_facing: true
# ═══════════════════════════════════════════════════════════════
# DELIVER PHASE
# ═══════════════════════════════════════════════════════════════
deliver:
adopt:
establish_governance:
- id: "DEL-01"
name: "Architecture Governance"
what: "Compliance review process for projects vs. enterprise architecture"
why: "Ensure original vision is realized during implementation"
how: "Regular meetings, architecture compliance checklists"
skill_support: "reference"
skill_notes: "Implementation team responsibility"
customer_facing: true
- id: "DEL-02"
name: "Operating Model"
what: "How existing processes/tools change for the new solution"
why: "Without agreed model, risk of project failure"
how: "Assess org capabilities using Operational Service RACI/Design"
skill_support: "auto_generate"
skill_notes: "Skill generates via templates/operations-model.yaml"
customer_facing: true
- id: "DEL-03"
name: "Business Transition Plan"
what: "Managing business change and readiness for go-live"
why: "Business must change processes/org to realize value"
how: "Analysis of business strategy, process standardization"
skill_support: "reference"
skill_notes: "CAS/delivery partner responsibility"
customer_facing: true
- id: "DEL-04"
name: "Training & Communication Plan"
what: "End-user training strategy and project communication"
why: "Effective communication is difference between success and failure"
how: "Review Adoption Plan, determine training delivery method"
skill_support: "reference"
skill_notes: "Delivery partner responsibility"
customer_facing: true
manage_project:
- id: "DEL-05"
name: "Project Governance"
what: "Oversight framework: steering committee, change control, escalation"
why: "Key elements that make a project successful"
how: "Define governance structure, reporting, risk management"
skill_support: "reference"
skill_notes: "PM responsibility"
customer_facing: true
- id: "DEL-06"
name: "Project Plan"
what: "Detailed steps with timelines for deployment"
why: "Identify critical path, stick to timelines"
how: "Detailed iteration of high-level Implementation Plan"
skill_support: "reference"
skill_notes: "Implementation partner responsibility"
customer_facing: true
- id: "DEL-07"
name: "Project Delivery"
what: "Execute the project per plan and governance"
why: "Correctly mobilising prevents delays"
how: "Onboard team, enable, kick off, deliver"
skill_support: "reference"
skill_notes: "Execution activity"
customer_facing: false
- id: "DEL-08"
name: "Signoff & Close"
what: "Validate and sign off all elements of solution"
why: "Formal confirmation before moving to production"
how: "Confirm configs, integrations, data migrations complete"
skill_support: "reference"
skill_notes: "PM responsibility"
customer_facing: true
customer_adoption:
- id: "DEL-09"
name: "Contracts & Policy Review"
what: "Review all agreements associated with the project"
why: "Incomplete understanding puts project at risk"
how: "Review with customer, note risks"
skill_support: "reference"
skill_notes: "Legal/commercial responsibility"
customer_facing: true
- id: "DEL-10"
name: "Readiness Assessment"
what: "Ensure project team has right skills and assets"
why: "Lack of tools/docs/processes becomes obstacle"
how: "Review requirements, define readiness assets"
skill_support: "reference"
skill_notes: "PM responsibility"
customer_facing: false
- id: "DEL-11"
name: "Configuration & Customization"
what: "Build the solution: configs, customizations, integrations"
why: "Build per agreed architecture and deployment design"
how: "Delivery partner method (e.g., TCM)"
skill_support: "reference"
skill_notes: "Delivery team execution"
customer_facing: false
- id: "DEL-12"
name: "Security Build"
what: "Final review and build of security configuration"
why: "Confirm solution built per Identity & Access Design"
how: "Delivery partner method"
skill_support: "reference"
skill_notes: "Delivery team execution"
customer_facing: false
- id: "DEL-13"
name: "Data Migration"
what: "Extract, load, validate data from source to target"
why: "Confirm data migrates correctly and safely"
how: "DMS, GoldenGate, Data Pump, RMAN, ZDM"
skill_support: "assist"
skill_notes: "Skill recommends migration tools in architecture"
customer_facing: false
- id: "DEL-14"
name: "Validation & Testing"
what: "Business process validation and technical testing"
why: "Confirm solution ready for production"
how: "Process playback, final validation, sign-off"
skill_support: "reference"
skill_notes: "Delivery team + customer execution"
customer_facing: true
- id: "DEL-15"
name: "Business Enablement"
what: "End-user training delivery"
why: "Users must be effective with new solution"
how: "Per Training Plan, Oracle University"
skill_support: "reference"
skill_notes: "Training team responsibility"
customer_facing: true
- id: "DEL-16"
name: "Go-Live & Hypercare"
what: "Cutover to production + intensive post-go-live support"
why: "Reduce risk and provide better customer experience"
how: "Support, data integrity, availability monitoring"
skill_support: "auto_generate"
skill_notes: "Skill generates go-live-checklist.yaml"
customer_facing: true
operate:
- id: "DEL-17"
name: "Cloud Operating Framework"
what: "Detailed 52-week operational plan based on Operating Model"
why: "Cloud operations very different from on-premise"
how: "Create plan covering all 9 operational capability areas"
skill_support: "reference"
skill_notes: "ACS/delivery partner responsibility"
customer_facing: true
- id: "DEL-18"
name: "OCI Operationalization Framework"
what: "5-milestone methodology for deploying workloads to OCI"
why: "Blueprint for operationalizing OCI quickly"
how: "Preparation → Conceptual Arch → Physical Arch → Operations → Workloads"
skill_support: "reference"
skill_notes: "NAC framework; skill aligns architecture with milestones"
customer_facing: true
improve:
- id: "DEL-19"
name: "Retrospective"
what: "Team review: what worked, what didn't, what to improve"
why: "Key ECAL principle: learn fast, capture feedback"
how: "3-4 hour meeting, inspect → identify → output actions"
skill_support: "auto_generate"
skill_notes: "Skill generates via templates/lessons-learned.yaml"
customer_facing: false
- id: "DEL-20"
name: "Value Realization"
what: "Post-implementation review against Business Case metrics"
why: "Validate if benefits were actually realized"
how: "Formal or informal review of adoption, impact, benefits"
skill_support: "auto_generate"
skill_notes: "Skill generates via templates/success-criteria.yaml"
customer_facing: true
- id: "DEL-21"
name: "Customer Success Story"
what: "Single-slide summary: who, challenge, approach, value"
why: "Share success with wider community and other customers"
how: "Collect from Business Case, build storyline with customer"
skill_support: "reference"
skill_notes: "Account team responsibility; skill can structure"
customer_facing: true
- id: "DEL-22"
name: "Improvement Actions"
what: "Consolidated improvement plan from operations insights"
why: "Continuous improvement, may lead back to new DEFINE cycle"
how: "Consolidate actions, discuss with customer PM, track"
skill_support: "reference"
skill_notes: "Feeds back into DEFINE for next engagement"
customer_facing: true
# ═══════════════════════════════════════════════════════════════
# SUMMARY STATS
# ═══════════════════════════════════════════════════════════════
summary:
total_artefacts: 60
auto_generate: 16 # skill produces complete artefact
assist: 14 # skill provides partial content
reference: 30 # skill references but team produces
define_phase: 8
design_phase: 38
deliver_phase: 22

View File

@@ -0,0 +1,916 @@
---
last_verified: 2026-03-18
pattern:
id: engagement-raci
name: "ECAL Engagement RACI"
category: governance
---
description: >
Defines who is Responsible, Accountable, Consulted, and Informed for each
ECAL artefact during the engagement lifecycle. This is the PROCESS RACI
(who does what during pre-sales), not the operational RACI (who runs
the solution post-go-live). Source: ECAL 3.1 Practitioners Guides.
roles:
EA: "Enterprise Architect"
SE: "Solution Engineer"
BA: "Business Architect"
CS: "Customer Success"
DA: "Deployment Architect"
VC: "Value Consulting"
Sales: "Sales"
MS: "Managed Services"
CloudOps: "Cloud Operations"
Customer: "Customer"
raci_definitions:
R: "Responsible — executes and delivers the artefact"
A: "Accountable — signs off, owns the outcome (max one per artefact)"
C: "Consulted — contributes expertise, reviewed before completion"
I: "Informed — notified of the result"
# ═══════════════════════════════════════════════════════════════
# DEFINE PHASE
# ═══════════════════════════════════════════════════════════════
define:
ideate:
step_purpose: >
Understand the customer situation and propose a potential solution
(value story) that resonates with their business drivers.
artefacts:
- name: "Customer Profile"
EA: "A/R"
SE: "R"
BA: "C"
CS: "C"
DA: "C"
VC: ""
Sales: ""
MS: ""
CloudOps: "C"
Customer: "I"
- name: "Strategy Map"
EA: "C"
SE: "R/A"
BA: "I"
CS: "I"
DA: "I"
VC: ""
Sales: ""
MS: ""
CloudOps: "C"
Customer: ""
- name: "Point of View"
EA: "A/R"
SE: "R"
BA: "C"
CS: "C"
DA: "C"
VC: ""
Sales: ""
MS: ""
CloudOps: "C"
Customer: ""
- name: "Ideation Workshop"
EA: "C"
SE: "A/R"
BA: "C"
CS: "C"
DA: "C"
VC: ""
Sales: ""
MS: ""
CloudOps: "C"
Customer: "R"
- name: "Business Case"
# Roles filled during Ideate are minimal; revisited in Confirm
EA: ""
SE: ""
BA: ""
CS: ""
DA: ""
VC: ""
Sales: ""
MS: ""
CloudOps: ""
Customer: ""
- name: "Value Story"
EA: "A/R"
SE: "R"
BA: "C"
CS: "C"
DA: "C"
VC: ""
Sales: ""
MS: ""
CloudOps: "C"
Customer: ""
validate:
step_purpose: >
Present the Point of View to the customer and validate the ideas.
Assess impact and customer willingness to investigate a solution.
artefacts:
- name: "Value Story Delivery"
EA: "A/R"
SE: "R"
BA: "C"
CS: ""
DA: "C"
VC: ""
Sales: ""
MS: ""
CloudOps: "R"
Customer: "R"
plan:
step_purpose: >
Once the PoV is validated, plan the Design phase activities,
resources, and timeline as a joint plan with the customer.
artefacts:
- name: "Joint Engagement Plan"
EA: "A/R"
SE: "C"
BA: "R"
CS: ""
DA: "C"
VC: ""
Sales: ""
MS: ""
CloudOps: "C"
Customer: "R"
# ═══════════════════════════════════════════════════════════════
# DESIGN PHASE
# ═══════════════════════════════════════════════════════════════
design:
current:
step_purpose: >
Understand the customer's context: current architecture, business
processes, constraints, and priorities relevant to the engagement.
artefacts:
- name: "Business Constraints"
EA: "R/A"
SE: ""
BA: "R"
CS: ""
DA: "C"
VC: "I"
Sales: "C"
MS: "C"
CloudOps: "I"
Customer: "C"
- name: "Security Constraints"
EA: "R/A"
SE: ""
BA: "R"
CS: ""
DA: "C"
VC: "C"
Sales: "C"
MS: "C"
CloudOps: "I"
Customer: "C"
- name: "Current State Process & Capability Map"
EA: "R/A"
SE: "R"
BA: "C"
CS: "C"
DA: "C"
VC: "C"
Sales: ""
MS: ""
CloudOps: "I"
Customer: "R/C"
- name: "Discovery Questionnaire"
EA: "R/A"
SE: ""
BA: "R"
CS: ""
DA: "C"
VC: "R"
Sales: "C"
MS: "C"
CloudOps: "I"
Customer: "R/C"
- name: "Current State Apps & Tech Portfolio"
EA: "R/A"
SE: ""
BA: "R"
CS: ""
DA: "C"
VC: "I"
Sales: "C"
MS: "C"
CloudOps: "I"
Customer: "R/C"
- name: "Operational RACI (Current)"
EA: "R/A"
SE: ""
BA: ""
CS: "C"
DA: "C"
VC: ""
Sales: "C"
MS: ""
CloudOps: ""
Customer: "R/C"
- name: "Prioritization Matrix"
EA: "R/A"
SE: ""
BA: "R"
CS: ""
DA: "C"
VC: "I"
Sales: "C"
MS: "C"
CloudOps: "I"
Customer: "C"
- name: "Current State Architecture"
EA: "R/A"
SE: ""
BA: "R"
CS: ""
DA: "C"
VC: "I"
Sales: "C"
MS: "C"
CloudOps: "I"
Customer: ""
future:
step_purpose: >
Create the overall solution: architecture, deployment design,
transition plan, service design, sizing, and BoM.
solution_design:
- name: "Future State Process & Capability Map"
EA: "R/A"
SE: "C"
BA: "C"
CS: ""
DA: "C"
VC: ""
Sales: ""
MS: ""
CloudOps: "I"
Customer: "C"
- name: "Future State Apps & Tech Portfolio"
EA: "R/A"
SE: "C"
BA: "C"
CS: ""
DA: "C"
VC: ""
Sales: ""
MS: ""
CloudOps: "I"
Customer: "C"
- name: "Future State Architecture"
EA: "R/A"
SE: "C"
BA: "C"
CS: ""
DA: "C"
VC: ""
Sales: ""
MS: ""
CloudOps: "I"
Customer: "C"
- name: "Solution Roadmap"
EA: "R/A"
SE: "C"
BA: "C"
CS: ""
DA: "C"
VC: ""
Sales: ""
MS: ""
CloudOps: "I"
Customer: "C"
- name: "Extension Catalog"
EA: "R/A"
SE: "C"
BA: "C"
CS: ""
DA: "C"
VC: ""
Sales: ""
MS: ""
CloudOps: "I"
Customer: "C"
- name: "Integration Catalog"
EA: "R/A"
SE: "C"
BA: "C"
CS: ""
DA: "C"
VC: ""
Sales: ""
MS: ""
CloudOps: "I"
Customer: "C"
- name: "Information & BI Model"
EA: "R/A"
SE: "C"
BA: "C"
CS: ""
DA: "C"
VC: ""
Sales: ""
MS: ""
CloudOps: "I"
Customer: "C"
deployment_design:
- name: "Deployment Design"
EA: "R/A"
SE: ""
BA: "C"
CS: "I"
DA: "R/C"
VC: ""
Sales: ""
MS: "C"
CloudOps: "I"
Customer: "C"
- name: "Datacentre Design"
EA: "R/A"
SE: ""
BA: "C"
CS: ""
DA: "R/C"
VC: ""
Sales: ""
MS: "C"
CloudOps: "I"
Customer: "C"
- name: "Lifecycle Management Design"
EA: "R/A"
SE: ""
BA: "C"
CS: ""
DA: "R/C"
VC: ""
Sales: ""
MS: "C"
CloudOps: "I"
Customer: "C"
- name: "Network Design"
EA: "R/A"
SE: ""
BA: "C"
CS: ""
DA: "R/C"
VC: ""
Sales: ""
MS: "C"
CloudOps: "I"
Customer: "C"
- name: "Identity & Access Design"
EA: "R/A"
SE: ""
BA: "C"
CS: ""
DA: "R/C"
VC: ""
Sales: ""
MS: ""
CloudOps: "I"
Customer: "C"
- name: "Environment Catalog"
EA: "R/A"
SE: ""
BA: "C"
CS: ""
DA: "R/C"
VC: ""
Sales: ""
MS: "C"
CloudOps: "I"
Customer: "C"
- name: "Recovery Model"
EA: "R/A"
SE: ""
BA: "C"
CS: ""
DA: "R/C"
VC: ""
Sales: ""
MS: "C"
CloudOps: "I"
Customer: "C"
- name: "Management Design"
EA: "R/A"
SE: ""
BA: "C"
CS: ""
DA: "R/C"
VC: ""
Sales: ""
MS: ""
CloudOps: "I"
Customer: "C"
- name: "Data Locality & Data Security"
EA: "R/A"
SE: ""
BA: "C"
CS: ""
DA: "R/C"
VC: ""
Sales: ""
MS: ""
CloudOps: "I"
Customer: "C"
transition_design:
- name: "Implementation Plan"
EA: "A"
SE: "C"
BA: ""
CS: "I"
DA: "R/C"
VC: ""
Sales: "C"
MS: ""
CloudOps: "I"
Customer: "C"
- name: "Implementation RACI"
EA: "A"
SE: "C"
BA: ""
CS: ""
DA: "R"
VC: ""
Sales: ""
MS: ""
CloudOps: "I"
Customer: "C"
- name: "Provisioning Plan / Map"
EA: "A"
SE: "C"
BA: "C"
CS: ""
DA: "R"
VC: ""
Sales: ""
MS: "C"
CloudOps: "I"
Customer: "C"
- name: "Adoption Plan"
EA: "A"
SE: "C"
BA: ""
CS: ""
DA: "R"
VC: ""
Sales: ""
MS: ""
CloudOps: "I"
Customer: "C"
service_design:
- name: "Operational Services RACI"
EA: "A"
SE: ""
BA: ""
CS: ""
DA: ""
VC: ""
Sales: "R"
MS: "C"
CloudOps: "I"
Customer: "C"
- name: "Operational Services Design"
EA: "A"
SE: ""
BA: ""
CS: ""
DA: ""
VC: ""
Sales: "R"
MS: "C"
CloudOps: "I"
Customer: "C"
demo_poc:
- name: "PoC Joint Execution Plan"
EA: "A"
SE: ""
BA: "R"
CS: ""
DA: "C"
VC: ""
Sales: ""
MS: ""
CloudOps: "C"
Customer: "I"
- name: "Demo / PoC Delivery"
EA: "A"
SE: ""
BA: "R"
CS: ""
DA: "C"
VC: ""
Sales: ""
MS: ""
CloudOps: "C"
Customer: "I"
bom_sizing:
- name: "Architecture Review"
EA: "C/I"
SE: ""
BA: "C/R"
CS: ""
DA: "C/I"
VC: ""
Sales: "C/I"
MS: ""
CloudOps: "R/A"
Customer: ""
- name: "Bill of Materials & Sizing"
EA: "C/I"
SE: ""
BA: "C/R"
CS: ""
DA: "C/I"
VC: ""
Sales: "C/I"
MS: ""
CloudOps: "R/A"
Customer: ""
confirm:
step_purpose: >
Assemble design work into a high-impact Solution Proposal that
enables the customer to validate and decide to proceed.
artefacts:
- name: "Solution Proposal"
EA: "A/R"
SE: "C"
BA: "C"
CS: ""
DA: "C"
VC: "C"
Sales: ""
MS: ""
CloudOps: "C"
Customer: "I"
- name: "Partner / Services Proposal"
EA: "C"
SE: ""
BA: ""
CS: ""
DA: "A/R"
VC: ""
Sales: "R"
MS: ""
CloudOps: "C"
Customer: "C"
- name: "RFx Response"
EA: "C"
SE: "C"
BA: "A/R/C"
CS: "I"
DA: ""
VC: ""
Sales: ""
MS: ""
CloudOps: "C"
Customer: "I"
- name: "Commercial Agreement"
EA: "C"
SE: "C"
BA: "C"
CS: ""
DA: "C"
VC: ""
Sales: "C"
MS: ""
CloudOps: "A/R"
Customer: "R"
# ═══════════════════════════════════════════════════════════════
# DELIVER PHASE
# ═══════════════════════════════════════════════════════════════
deliver:
adopt:
step_purpose: >
Transition from proposed architecture to implementation.
Pre-sales → delivery handover without rework.
establish_governance:
- name: "Architecture Governance"
EA: "C"
SE: ""
BA: "I"
CS: ""
DA: "R/A"
VC: "R/C/I"
Sales: "R"
MS: "I"
CloudOps: ""
Customer: "R"
- name: "Operating Model"
EA: "C"
SE: ""
BA: "I"
CS: ""
DA: "R/A"
VC: "R/C/I"
Sales: "R"
MS: "I"
CloudOps: ""
Customer: "R"
- name: "Business Transition Plan"
EA: "C"
SE: ""
BA: "I"
CS: ""
DA: "R/A"
VC: "R/C/I"
Sales: "R"
MS: "I"
CloudOps: ""
Customer: "R"
- name: "Training & Communication Plan"
EA: "C"
SE: ""
BA: "I"
CS: ""
DA: "R/A"
VC: "R/C/I"
Sales: "R"
MS: "I"
CloudOps: ""
Customer: "R"
manage_project:
- name: "Project Governance"
EA: "C"
SE: ""
BA: "I"
CS: ""
DA: "R/A"
VC: "R/C/I"
Sales: "R"
MS: "I"
CloudOps: ""
Customer: "R"
- name: "Project Plan"
EA: "C"
SE: ""
BA: "I"
CS: ""
DA: "R/A"
VC: "R/C/I"
Sales: "R"
MS: "I"
CloudOps: ""
Customer: "R"
- name: "Project Delivery"
EA: "C"
SE: ""
BA: "I"
CS: ""
DA: "R/A"
VC: "R/C/I"
Sales: "R"
MS: "I"
CloudOps: ""
Customer: "R"
- name: "Signoff & Close"
EA: "C"
SE: ""
BA: "I"
CS: ""
DA: "R/A"
VC: "R/C/I"
Sales: "R"
MS: "I"
CloudOps: ""
Customer: "R"
customer_adoption:
- name: "Contracts & Policy Review"
EA: "C"
SE: ""
BA: "I"
CS: ""
DA: "R/A"
VC: "R/C/I"
Sales: "R"
MS: "I"
CloudOps: ""
Customer: "R"
- name: "Readiness Assessment"
EA: "C"
SE: ""
BA: "I"
CS: ""
DA: "R/A"
VC: "R/C/I"
Sales: "R"
MS: "I"
CloudOps: ""
Customer: "R"
- name: "Configuration & Customization"
EA: "A/R"
SE: ""
BA: "I"
CS: ""
DA: "R"
VC: "R/C/I"
Sales: "R"
MS: "I"
CloudOps: ""
Customer: "R"
- name: "Security Build"
EA: "C"
SE: ""
BA: "I"
CS: ""
DA: "R/A"
VC: "R/C/I"
Sales: "R"
MS: "I"
CloudOps: ""
Customer: "R"
- name: "Data Migration"
EA: "C"
SE: ""
BA: "I"
CS: ""
DA: "R/A"
VC: "R/C/I"
Sales: "R"
MS: "I"
CloudOps: ""
Customer: "R"
- name: "Validation & Testing"
EA: "C"
SE: ""
BA: "I"
CS: ""
DA: "R/A"
VC: "R/C/I"
Sales: "R"
MS: "I"
CloudOps: ""
Customer: "R"
- name: "Business Enablement"
EA: "C"
SE: ""
BA: "I"
CS: ""
DA: "R/A"
VC: "R/C/I"
Sales: "R"
MS: "I"
CloudOps: ""
Customer: "R"
- name: "Go-Live & Hypercare"
EA: "C"
SE: ""
BA: "I"
CS: ""
DA: "R/A"
VC: "R/C/I"
Sales: "R"
MS: "I"
CloudOps: ""
Customer: "R"
operate:
step_purpose: >
Solution is live. Operational capabilities from the Operating Model
are performed to retain vitality. Business outcome reporting active.
artefacts:
- name: "Cloud Operating Framework"
EA: ""
SE: ""
BA: ""
CS: "I"
DA: "R"
VC: ""
Sales: "R"
MS: "R"
CloudOps: ""
Customer: "R/A"
- name: "OCI Operationalization Framework"
EA: ""
SE: ""
BA: ""
CS: ""
DA: "R/A"
VC: ""
Sales: "R/C"
MS: ""
CloudOps: ""
Customer: "C/I"
improve:
step_purpose: >
Capture learnings, validate value delivery, identify next
hypothesis to tackle. Feed improvements back into ECAL.
artefacts:
- name: "Retrospective"
EA: "C/I"
SE: "C/I"
BA: ""
CS: "R"
DA: "R/A"
VC: ""
Sales: "R"
MS: "R"
CloudOps: ""
Customer: "C"
- name: "Value Realization"
EA: "C/I"
SE: "C/I"
BA: ""
CS: "R"
DA: "R/A"
VC: ""
Sales: "R"
MS: "R"
CloudOps: ""
Customer: "C"
- name: "Customer Success Story"
EA: "C/I"
SE: "C/I"
BA: ""
CS: "R"
DA: "R/A"
VC: ""
Sales: "R"
MS: "R"
CloudOps: ""
Customer: "C"
- name: "Improvement Actions"
EA: "C/I"
SE: "C/I"
BA: ""
CS: "R/A"
DA: "R"
VC: ""
Sales: "R"
MS: "R"
CloudOps: ""
Customer: "C"
# ═══════════════════════════════════════════════════════════════
# LESSONS LEARNED PER STEP (from ECAL Practitioners Guides)
# ═══════════════════════════════════════════════════════════════
lessons_learned:
define:
- "Listen to the customer and also to each other"
- "Don't defend your Point of View to the customer, listen for ideas"
- "Understand what the customer is saying"
- "Make Point of View SMART: Specific, Measurable, Attainable, Relevant, Time-based"
- "Think carefully about whether it's right to proceed"
- "Do you have a senior customer sponsor that will support you?"
current:
- "Frame the problem — don't gather requirements"
- "Capture current state in terms of people, process and technology"
- "Be collaborative with the customer and share everything"
- "Use whatever works — try top down and bottom up"
- "Understand the business context, business drivers and desired outcomes"
- "Be very clear about the scope — which systems are in and out"
future:
- "Always look for a quick win for the customer"
- "The operational model is just as important as the architecture"
- "Don't forget non-production environments"
- "Security and data locality must be understood early, don't leave it too late"
confirm:
- "Propositions must be SMART in a customer context"
- "Ensure you have evidence to support all positions"
- "The Roadmap must be achievable"
- "Think about the person you are presenting to — what does it mean for them"
- "Quality of the presentation is very important — it must look professional"
adopt:
- "Look for a Minimum Viable Product (or service) that delivers real customer benefits early"
- "Incremental delivery phases should maximize customer value per the roadmap"
- "Always consider how to help the customer with adoption and ownership"
- "Architecture artifacts are constantly refined as more is learned during Deliver"
improve:
- "Leverage any opportunity to capture a successful outcome as a customer story"
- "Look back at every project for opportunities to improve"
- "Keep in touch with the customer and track how the project is going"
- "Share your learning with your team"
- "Feed back suggested improvements to the ECAL process"

View File

@@ -0,0 +1,48 @@
---
last_verified: 2026-03-16
pattern:
id: environment-catalogue
name: "Environment Catalogue"
category: operations
---
description: >
Defines the standard environments for each workload tier. The skill
generates the catalogue from the workload profile by expanding each
database into its required environments based on tier.
environment_templates:
platinum:
environments:
- { env: "Production", sizing: "full", isolation: "dedicated CDB, dedicated infra", ha: "RAC + ADG sync" }
- { env: "Pre-Production", sizing: "75% of prod", isolation: "dedicated CDB", ha: "optional RAC" }
- { env: "Dev/Test", sizing: "25% of prod", isolation: "shared CDB OK", ha: "none" }
- { env: "DR", sizing: "100% of prod", isolation: "same as prod", ha: "sync ADG or GG active-active" }
gold:
environments:
- { env: "Production", sizing: "full", isolation: "dedicated CDB, private endpoint", ha: "TAC + ADG local" }
- { env: "Pre-Production", sizing: "50% of prod", isolation: "refreshable clone OK", ha: "none" }
- { env: "Dev/Test", sizing: "25% of prod", isolation: "full clone, auto-stop nights", ha: "none" }
- { env: "DR", sizing: "100% of prod", isolation: "cross-region ADG", ha: "async ADG" }
silver:
environments:
- { env: "Production", sizing: "full", isolation: "shared CDB OK", ha: "single instance" }
- { env: "Pre-Production", sizing: "50% of prod", isolation: "refreshable clone", ha: "none" }
- { env: "Dev/Test", sizing: "25% of prod", isolation: "full clone, auto-stop", ha: "none" }
- { env: "DR", sizing: "N/A", isolation: "backup to Object Storage", ha: "restore from backup" }
bronze:
environments:
- { env: "Production", sizing: "full", isolation: "shared CDB, oversubscribed OK", ha: "none" }
- { env: "Dev/Test", sizing: "same as prod", isolation: "shared CDB", ha: "none" }
- { env: "DR", sizing: "N/A", isolation: "DB export only", ha: "restore from export" }
cost_optimization_rules:
- "Pre-Prod: use Refreshable Clones when read-only testing is sufficient"
- "Dev/Test: auto-stop weeknights (7PM-7AM) + weekends = ~65% savings"
- "Dev/Test: use minimum OCPU (1-2), no auto-scaling"
- "DR standby: consider pilot light (Terraform on-demand) for Silver/Bronze"
- "Bronze DR: DB export to Object Storage is cheapest, no standby OCPU"

View File

@@ -0,0 +1,98 @@
# Pattern: Basic VCN Networking
# Composable architecture block for single-VCN 3-tier network layout
pattern:
name: "Basic VCN Networking"
id: networking_basic
category: networking
description: |
Single VCN with a 3-tier subnet layout providing public, application, and data
tiers. Suitable for standalone workloads, small-to-medium deployments, and as a
starting point before evolving to hub-spoke topology. Public subnet hosts load
balancers and bastion, private app subnet hosts compute/containers, and private
data subnet hosts databases and storage.
topology:
vcn:
cidr: "10.0.0.0/16"
dns_label: "vcnmain"
subnets:
- name: "Public Subnet"
cidr: "10.0.0.0/24"
type: public
purpose: "Load balancers, bastion host, WAF endpoints"
usable_ips: 251
- name: "App Private Subnet"
cidr: "10.0.1.0/24"
type: private
purpose: "Compute instances, OKE worker nodes, application servers"
usable_ips: 251
- name: "Data Private Subnet"
cidr: "10.0.2.0/24"
type: private
purpose: "Databases (ADB-S, DBCS), file storage, object storage private endpoints"
usable_ips: 251
components:
- name: "VCN"
purpose: "Virtual Cloud Network — isolated network boundary"
- name: "Public Subnet"
purpose: "Internet-facing resources (LBaaS, Bastion)"
- name: "App Private Subnet"
purpose: "Application tier — no direct internet access"
- name: "Data Private Subnet"
purpose: "Database tier — no direct internet access"
- name: "Internet Gateway (IGW)"
purpose: "Inbound and outbound internet access for public subnet"
- name: "NAT Gateway"
purpose: "Outbound-only internet access for private subnets (patches, APIs)"
- name: "Service Gateway"
purpose: "Private access to OCI services (Object Storage, ADB-S) without internet"
- name: "Route Tables"
purpose: "Per-subnet routing rules for IGW, NAT GW, and Service GW"
- name: "Network Security Groups (NSGs)"
purpose: "Stateful firewall rules applied per VNIC for fine-grained access control"
preconditions:
- "Compartment created for the workload"
- "CIDR ranges planned and non-overlapping with other VCNs or on-premises networks"
- "Region and availability domain selected"
implied_services:
- service: igw
reason: "Internet access for public subnet resources"
- service: nat_gateway
reason: "Outbound internet for private subnets without exposing inbound"
- service: service_gateway
reason: "Private connectivity to OCI services (Object Storage, Autonomous DB)"
design_rules:
- "Place application and database resources in private subnets — never expose directly to internet"
- "Use Network Security Groups (NSGs) instead of Security Lists for per-resource granularity"
- "Use Service Gateway for all OCI service access to avoid internet routing and egress costs"
- "Assign one route table per subnet for clarity and maintainability"
- "Use DNS hostnames within the VCN for service discovery"
- "Enable VCN Flow Logs on all subnets for security auditing"
- "Place load balancers in the public subnet; backends in the app private subnet"
gotchas:
- "VCN CIDR blocks are immutable after creation — plan address space carefully before provisioning"
- "NSG rules are limited to 120 rules per NSG (60 ingress + 60 egress by default)"
- "Security Lists are stateful by default but have a 5-tuple limit; prefer NSGs for complex rule sets"
- "NAT Gateway is regional and supports up to 20 Gbps; may need multiple for high-throughput workloads"
- "Service Gateway only routes to OCI services — not a general-purpose private link"
- "Subnet size cannot be changed after creation; plan for growth"
- "Default security list allows all egress; tighten for production"
cost_impact:
- "VCN: free (no charge for the VCN itself)"
- "Subnets: free"
- "Internet Gateway: free"
- "NAT Gateway: per-hour charge + per-GB data processing"
- "Service Gateway: free"
- "VCN Flow Logs: charged via Logging service ingestion rates"
references:
- "https://docs.oracle.com/en-us/iaas/Content/Network/Concepts/overview.htm"
- "https://docs.oracle.com/en-us/iaas/Content/Network/Concepts/bestpractices.htm"

View File

@@ -0,0 +1,86 @@
# Pattern: Hub-Spoke Network Topology via DRG
# Composable architecture block for enterprise networking
pattern:
name: "Hub-Spoke Network via DRG"
id: hub_spoke_drg
category: networking
description: |
Hub-spoke topology using OCI Dynamic Routing Gateway (DRG) v2 as the central
routing hub. Spoke VCNs attach to the DRG for inter-VCN routing, on-premises
connectivity (FastConnect/VPN), and centralized security inspection.
topology:
hub:
components:
- "DRG (Dynamic Routing Gateway) — central router"
- "Hub VCN (optional) — for shared services, Network Firewall, Bastion"
- "Service Gateway — OCI service access without internet"
- "NAT Gateway — outbound internet for private subnets"
- "Network Firewall (optional) — deep packet inspection, IDS/IPS"
spokes:
components:
- "Spoke VCN per workload/environment"
- "VCN attachment to DRG"
- "Route table on DRG attachment for traffic steering"
use_when:
- "Multiple workloads or environments needing isolation"
- "On-premises connectivity via FastConnect or VPN"
- "Centralized security inspection required"
- "Shared services (Bastion, DNS, NTP) across workloads"
- "Enterprise landing zone deployment"
when_not_to_use:
- "Single VCN deployment (no need for hub-spoke complexity)"
- "< 3 VCNs and no on-prem connectivity"
- "POC or dev-only environment"
preconditions:
- "DRG v2 (default in all regions)"
- "Non-overlapping CIDR ranges across VCNs"
- "Sufficient IP address planning"
implied_services:
- service: drg
reason: "Central routing hub"
- service: vcn
reason: "Hub and spoke VCNs"
- service: service_gateway
reason: "OCI service access"
- service: nat_gateway
reason: "Outbound internet for private subnets"
- service: route_tables
reason: "Traffic steering via DRG attachments"
optional_services:
- service: network_firewall
when: "Deep packet inspection, IDS/IPS required"
placement: "Hub VCN, inline between DRG and spokes"
- service: fastconnect
when: "On-premises connectivity"
- service: vpn
when: "Backup connectivity or lower-cost option"
conflicts:
- pattern: "local_peering"
reason: "DRG replaces local peering for inter-VCN routing. Don't mix both."
cidr_guidance:
- "Use /16 per VCN for growth headroom"
- "Use /24 per subnet (251 usable IPs)"
- "Reserve /8 or /12 supernet for all OCI CIDRs"
- "Avoid overlapping with on-prem ranges"
- "Example: 10.0.0.0/16 (hub), 10.1.0.0/16 (spoke 1), 10.2.0.0/16 (spoke 2)"
cost_impact:
- "DRG: free (no charge for the gateway itself)"
- "VCN peering via DRG: no data transfer charges within same region"
- "Cross-region via DRG: data transfer charges apply"
- "Network Firewall: per-hour + per-GB processing"
- "FastConnect: port fee + data transfer (inbound free)"
references:
- "https://docs.oracle.com/en-us/iaas/Content/Network/Tasks/managingDRGs.htm"
- "https://docs.oracle.com/en/solutions/hub-spoke-network-drg/"

View File

@@ -0,0 +1,72 @@
---
last_verified: 2026-03-14
pattern: Hub-and-Spoke Networking
category: networking
---
description: |
Hub-and-spoke VCN topology for enterprise OCI deployments.
Centralizes shared services (firewalls, DNS, connectivity) in a hub VCN
with spoke VCNs for workloads.
architecture:
hub_vcn:
purpose: "Shared services, connectivity, security inspection"
components:
- "DRG (Dynamic Routing Gateway)"
- "Network Firewall (optional)"
- "DNS resolver"
- "FastConnect / VPN termination"
- "Bastion service"
- "Management subnet"
cidr_example: "10.0.0.0/16"
spoke_vcns:
purpose: "Workload isolation"
examples:
- name: "Production"
cidr: "10.1.0.0/16"
subnets:
- "Public subnet (LB): 10.1.0.0/24"
- "Private subnet (App): 10.1.1.0/24"
- "Private subnet (DB): 10.1.2.0/24"
- name: "Non-Production"
cidr: "10.2.0.0/16"
- name: "DMZ"
cidr: "10.3.0.0/16"
connectivity:
hub_to_spoke: "VCN attachments via DRG"
spoke_to_spoke: "Transit routing through DRG (no direct peering needed)"
on_prem: "FastConnect or VPN to DRG in hub"
when_to_use:
- "Multiple environments (prod, non-prod, DMZ)"
- "Centralized connectivity to on-prem"
- "Security inspection required between workloads"
- "Shared services (DNS, NTP, monitoring) across workloads"
when_NOT_to_use:
- "Single-VCN deployments"
- "Simple architectures with 1-2 workloads"
ip_planning:
recommendation: |
Plan CIDR ranges before deployment. Overlapping CIDRs prevent peering.
Use /16 for VCNs, /24 for subnets. Reserve ranges for future growth.
example_scheme:
hub: "10.0.0.0/16"
production: "10.1.0.0/16"
non_production: "10.2.0.0/16"
dmz: "10.3.0.0/16"
dr_region: "10.128.0.0/9"
gotchas:
- id: HUB-001
issue: "DRG route table limits"
impact: "Max 200 route rules per DRG route table"
recommendation: "Aggregate routes where possible, plan for scale"
- id: HUB-002
issue: "Network Firewall throughput"
impact: "Inspect all traffic adds latency and cost"
recommendation: "Only inspect north-south and selected east-west traffic"

View File

@@ -0,0 +1,70 @@
---
last_verified: 2026-03-16
pattern:
id: operational-raci
name: "Operational RACI Matrix"
category: operations
---
description: >
Defines responsibilities across customer and Oracle/partner teams for
ongoing operations. R=Responsible (does the work), A=Accountable (owns
the outcome), C=Consulted, I=Informed. Generated from the engagement
model (fully managed, co-managed, or self-managed).
# Three operational models — the skill selects based on discovery
models:
fully_managed:
description: "Oracle/partner manages everything. Customer consumes DB as a service."
trigger: "Customer says 'DBA-less', 'no DBA team', 'fully managed', or team_skills is low"
raci:
- { activity: "DB provisioning", customer: "I", oracle: "R/A" }
- { activity: "DB patching & upgrades", customer: "I", oracle: "R/A" }
- { activity: "Backup & recovery", customer: "I", oracle: "R/A" }
- { activity: "Performance monitoring", customer: "I", oracle: "R/A" }
- { activity: "Performance tuning", customer: "C", oracle: "R/A" }
- { activity: "Security configuration", customer: "A", oracle: "R" }
- { activity: "Access control (IAM)", customer: "R/A", oracle: "C" }
- { activity: "Data Safe / audit review", customer: "A", oracle: "R" }
- { activity: "Incident response (DB)", customer: "I", oracle: "R/A" }
- { activity: "Incident response (app)", customer: "R/A", oracle: "C" }
- { activity: "Capacity planning", customer: "C", oracle: "R/A" }
- { activity: "DR testing", customer: "A", oracle: "R" }
- { activity: "Schema changes", customer: "R/A", oracle: "I" }
- { activity: "App deployment", customer: "R/A", oracle: "I" }
- { activity: "Network changes", customer: "R/A", oracle: "C" }
- { activity: "Cost optimization review", customer: "A", oracle: "R" }
- { activity: "Oracle SR escalation", customer: "C", oracle: "R/A" }
- { activity: "Compliance reporting", customer: "A", oracle: "R" }
co_managed:
description: "Customer has DBAs but wants Oracle/partner for complex ops."
trigger: "Customer says 'we have DBAs but no cloud experience', or team exists but is small"
raci:
- { activity: "DB provisioning", customer: "R", oracle: "C" }
- { activity: "DB patching & upgrades", customer: "R", oracle: "C" }
- { activity: "Backup & recovery", customer: "R/A", oracle: "C" }
- { activity: "Performance monitoring", customer: "R", oracle: "I" }
- { activity: "Performance tuning", customer: "R", oracle: "C" }
- { activity: "Security configuration", customer: "R/A", oracle: "C" }
- { activity: "Access control (IAM)", customer: "R/A", oracle: "I" }
- { activity: "Incident response (DB)", customer: "R", oracle: "C" }
- { activity: "Incident response (app)", customer: "R/A", oracle: "I" }
- { activity: "Capacity planning", customer: "R", oracle: "C" }
- { activity: "DR testing", customer: "R", oracle: "C" }
- { activity: "Schema changes", customer: "R/A", oracle: "I" }
- { activity: "Oracle SR escalation", customer: "R", oracle: "C" }
self_managed:
description: "Customer manages everything. Oracle provides platform only."
trigger: "Customer has strong DBA team with cloud experience, or explicitly says 'we manage'"
raci:
- { activity: "DB provisioning", customer: "R/A", oracle: "I" }
- { activity: "DB patching & upgrades", customer: "R/A", oracle: "I" }
- { activity: "Backup & recovery", customer: "R/A", oracle: "I" }
- { activity: "Performance monitoring", customer: "R/A", oracle: "I" }
- { activity: "Security configuration", customer: "R/A", oracle: "I" }
- { activity: "Incident response", customer: "R/A", oracle: "I" }
- { activity: "DR testing", customer: "R/A", oracle: "I" }
- { activity: "Oracle SR escalation", customer: "R/A", oracle: "C" }

View File

@@ -0,0 +1,64 @@
# Pattern: CIS Security Baseline
# Composable architecture block for security foundation
pattern:
name: "CIS OCI Security Baseline"
id: cis_baseline
category: security
description: |
Security baseline aligned with CIS Oracle Cloud Infrastructure Foundations
Benchmark. Provides IAM, network, encryption, monitoring, and governance
controls as a foundation for all OCI deployments.
always_include: true
applies_to: "all_workloads"
controls:
identity:
- "Least-privilege IAM policies per compartment"
- "MFA for all human users"
- "Break-glass admin account (not used for daily ops)"
- "Instance principals for service-to-service auth"
- "Federation with customer IdP (AD, Okta, SAML)"
- "No API keys stored in code or config files"
compartments:
- "Hierarchical compartment structure by workload/environment"
- "Network, Security, AppDev, Database compartments at minimum"
- "Defined tags for cost tracking, environment, owner"
networking:
- "NSGs preferred over Security Lists"
- "No SSH from 0.0.0.0/0 — use Bastion Service"
- "Service Gateway for OCI service access"
- "VCN Flow Logs enabled"
- "WAF on all internet-facing endpoints"
encryption:
- "OCI Vault for customer-managed keys"
- "TDE with customer-managed keys for databases"
- "Encryption at rest for all storage services"
- "TLS on all load balancers"
monitoring:
- "Cloud Guard enabled with detector recipes"
- "OCI Audit with 365-day retention"
- "Vulnerability Scanning for compute instances"
- "Security Zones for production compartments"
governance:
- "Budgets and cost alerts per compartment"
- "Notification topics for security events"
- "Tagging enforcement via tag defaults"
implied_services:
- cloud_guard
- oci_vault
- bastion
- vulnerability_scanning
- notifications
references:
- "https://www.cisecurity.org/benchmark/oracle_cloud"
- "https://github.com/oracle-quickstart/oci-cis-landingzone-quickstart"

View File

@@ -0,0 +1,96 @@
---
last_verified: 2026-03-14
pattern: Security Baseline
category: security
---
description: |
Minimum security configuration for any OCI deployment. Covers IAM,
networking, encryption, monitoring, and compliance foundations.
layers:
identity:
name: "Identity & Access Management"
requirements:
- item: "MFA for all users"
implementation: "Enable MFA in IAM, enforce via policy"
priority: critical
- item: "Least-privilege policies"
implementation: "Use compartments + IAM policies, avoid broad allow statements"
priority: critical
- item: "No API keys for production"
implementation: "Use instance principals or resource principals"
priority: high
- item: "Federated identity"
implementation: "SAML/OIDC federation with corporate IdP"
priority: high
- item: "Break-glass procedure"
implementation: "Documented emergency access with MFA-protected tenancy admin"
priority: high
network:
name: "Network Security"
requirements:
- item: "Private subnets for all workloads"
implementation: "Only load balancers and bastion in public subnets"
priority: critical
- item: "NSGs over security lists"
implementation: "Granular VNIC-level firewall rules"
priority: high
- item: "Service Gateway for OCI services"
implementation: "Private path to Object Storage, ADB, etc."
priority: high
- item: "WAF for public-facing applications"
implementation: "OCI WAF with OWASP rule sets"
priority: high
- item: "No public IPs on databases"
implementation: "Use private endpoints, Bastion for admin access"
priority: critical
encryption:
name: "Encryption"
requirements:
- item: "Encryption at rest (default)"
implementation: "OCI encrypts all data at rest by default (Oracle-managed keys)"
priority: critical
- item: "Customer-managed keys for sensitive data"
implementation: "OCI Vault with HSM-backed keys"
priority: high
- item: "TLS 1.2+ for all connections"
implementation: "Enforce in load balancer, database, API configurations"
priority: critical
- item: "TDE for databases"
implementation: "Enabled by default on ADB, configure on DBCS/ExaCS"
priority: critical
monitoring:
name: "Monitoring & Audit"
requirements:
- item: "Audit logging enabled"
implementation: "OCI Audit service (enabled by default, 365-day retention)"
priority: critical
- item: "Cloud Guard enabled"
implementation: "Detect misconfigurations and threats"
priority: high
- item: "VCN Flow Logs"
implementation: "Enable on critical subnets for network forensics"
priority: medium
- item: "Alarms for security events"
implementation: "Monitoring alarms + Notifications for critical events"
priority: high
- item: "Data Safe for databases"
implementation: "Security assessment, user assessment, data masking"
priority: high
compute:
name: "Compute Security"
requirements:
- item: "OS Management for patching"
implementation: "OCI OS Management service for automated patching"
priority: high
- item: "Bastion service for SSH"
implementation: "No direct SSH from internet, use OCI Bastion"
priority: critical
- item: "Instance metadata v2"
implementation: "Disable v1 to prevent SSRF attacks"
priority: high

View File

@@ -0,0 +1,106 @@
---
last_verified: 2026-03-16
pattern:
id: service-tiering
name: "Database Service Tiering Model"
category: operations
---
description: >
Maps customer workloads to standardized service tiers based on business
criticality, availability requirements, and compliance needs. Each tier
defines the HA/DR topology, support model, backup strategy, and operational
responsibilities. Derived from Oracle's ECAL transformational framework.
tiers:
platinum:
label: "Platinum"
description: "Mission-critical, zero tolerance for downtime"
example_workloads: ["Core banking", "Payment processing", "Trading systems", "Telco network"]
sla:
uptime: "99.999%"
rto: "0 (near-zero with TAC + RAC)"
rpo: "0 (synchronous replication)"
planned_downtime: "0 (even for upgrades — edition-based redefinition)"
support: "24x7, 10 min response"
architecture:
ha: "RAC (multi-node) + TAC/AC"
dr: "Synchronous ADG + GoldenGate active-active (optional)"
backup: "ZDLRA or Autonomous Recovery Service, continuous"
isolation: "Full physical isolation — dedicated CDB, dedicated infrastructure"
encryption: "TDE + DB Vault + Key Vault + SQL*Net encryption"
oci_mapping:
primary: "ExaCS or ADB-D (for RAC + full control)"
alternative: "ADB-S only if application is TAC-compatible and RPO=0 is met by local ADG"
cost_impact: "Highest — dedicated infra, dual-site, 24x7 support"
gold:
label: "Gold"
description: "Business-critical, tolerable brief outage"
example_workloads: ["CRM", "ERP", "eCommerce", "Risk analytics"]
sla:
uptime: "99.99%"
rto: "1-4 hours"
rpo: "5-15 minutes"
planned_downtime: "4x 4hr/year maintenance windows"
support: "24x7, 4 hour response"
architecture:
ha: "TAC + local ADG (auto-failover)"
dr: "Asynchronous cross-region ADG"
backup: "Autonomous Recovery Service, incremental forever"
isolation: "Dedicated CDB (dedicated home), instance caged (not oversubscribed)"
encryption: "TDE + Key Vault"
oci_mapping:
primary: "ADB-S Serverless (with TAC + ADG)"
alternative: "ExaCS if RAC explicitly needed or >128 OCPU sustained"
cost_impact: "High — primary + standby OCPU cost, cross-region DR"
silver:
label: "Silver"
description: "Important but recoverable from backup"
example_workloads: ["HR systems", "Financials", "Internal portals", "Reporting"]
sla:
uptime: "99.5%"
rto: "1 day"
rpo: "1 day"
planned_downtime: "4x 4hr/year maintenance windows"
support: "24x7, 8 hour response"
architecture:
ha: "Single instance or RAC optional"
dr: "Offsite backup only — no real-time replication"
backup: "Automated daily backup, 30-day retention"
isolation: "Shared CDB (shared binaries) acceptable"
encryption: "TDE recommended, DB Vault optional"
oci_mapping:
primary: "ADB-S Serverless (no ADG needed)"
alternative: "Base DB Service for legacy compatibility"
cost_impact: "Medium — no standby cost, shared infrastructure"
bronze:
label: "Bronze"
description: "Non-critical, best-effort recovery"
example_workloads: ["Dev/Test", "Room booking", "Internal tools", "Sandbox"]
sla:
uptime: "98%"
rto: "Best effort"
rpo: "Best effort"
planned_downtime: "Flexible"
support: "Business hours, 2 day response"
architecture:
ha: "None — single instance"
dr: "Database export or backup to Object Storage"
backup: "Weekly backup, 7-day retention"
isolation: "Shared CDB, oversubscribed OK"
encryption: "TDE optional"
oci_mapping:
primary: "ADB-S Serverless (minimum OCPU, auto-scaling off)"
alternative: "VM DB Standard Edition for cost"
cost_impact: "Lowest — minimal resources, no redundancy"
auto_assignment_rules:
- "If customer says '99.99%' or 'zero downtime' → Platinum or Gold (ask which)"
- "If customer says 'PCI' or 'banking regulations' → minimum Gold"
- "If workload type is 'dev/test' → Bronze unless explicitly stated otherwise"
- "If customer says 'reporting' or 'read-only' → Silver unless SLA says otherwise"
- "If no SLA stated → assign Silver and flag for confirmation"

69
kb/pricing/ai-ml.yaml Normal file
View File

@@ -0,0 +1,69 @@
---
last_verified: 2025-09-11
source: https://www.oracle.com/cloud/price-list/
description: OCI AI and Machine Learning service pricing.
currency: USD
---
# ── OCI Generative AI ─────────────────────────────────────────────
generative_ai:
cohere_models:
per_10k_transactions: 0.0001 - 0.0003
notes: "Command, Embed models"
meta_llama:
per_10k_transactions: 0.0001 - 0.0004
xai_grok:
per_1m_tokens_range: "$0.00015 $0.0018"
google_gemini:
per_1m_tokens_range: "$0.000075 $0.0006"
generative_ai_agents:
per_10k_transactions: 0.0001
notes: "Plus storage and ingestion fees"
# ── Anomaly Detection ─────────────────────────────────────────────
anomaly_detection:
training: "Free up to 100M data points/month per region"
# ── Data Science ───────────────────────────────────────────────────
data_science:
notebook_sessions:
notes: "Billed at compute shape rates (OCPU/hour + GB memory/hour + GPU options)"
jobs:
notes: "Same compute pricing as notebook sessions"
model_deployment:
notes: "Compute + networking + storage combined pricing"
model_catalog_storage:
notes: "Object Storage rates"
# ── Document Understanding ─────────────────────────────────────────
document_understanding:
training_per_hour: 0.50 - 1.00
ocr_per_1k_transactions: 0.025 - 0.050
# ── Language Services ──────────────────────────────────────────────
language:
pretrained_per_transaction: 0.0001 - 0.0003
custom_training: "Available at additional cost"
# ── Vision ─────────────────────────────────────────────────────────
vision:
image_analysis_per_1k: 0.0001 - 0.0003
custom_training_per_hour: 0.50 - 1.00
# ── Speech ─────────────────────────────────────────────────────────
speech:
per_transcription_hour: 0.0025 - 0.005
# ── Digital Assistant ──────────────────────────────────────────────
digital_assistant:
per_request: 0.009
minimum: "250 requests/hour"

36
kb/pricing/analytics.yaml Normal file
View File

@@ -0,0 +1,36 @@
---
last_verified: 2025-09-11
source: https://www.oracle.com/cloud/price-list/
description: OCI Analytics and BI pricing.
currency: USD
---
# ── Oracle Analytics Cloud ─────────────────────────────────────────
oracle_analytics_cloud:
per_user_month:
professional: 0.99
enterprise: 2.00
ocpu_based:
notes: "Also available as OCPU-based pricing for embedded/API use"
# ── Essbase ────────────────────────────────────────────────────────
essbase:
ocpu_per_hour: 0.0252
# ── Data Lake / Big Data ──────────────────────────────────────────
ai_data_platform:
notes: "Pricing by AI Data Platform unit"
big_data_service_oracle:
ocpu_per_hour: 0.0252
notes: "Oracle distribution, includes Spark SQL compute"
big_data_service_cloudera:
ocpu_per_hour: 0.0168 - 0.0336
data_flow:
ocpu_usage: "Free"
notes: "Apache Spark, no charge for OCPU usage"

191
kb/pricing/compute.yaml Normal file
View File

@@ -0,0 +1,191 @@
---
last_verified: 2025-09-11
source: https://www.oracle.com/cloud/price-list/
description: OCI Compute pricing for estimation purposes.
Prices are approximate and subject to change. Always verify with
OCI pricing calculator for final quotes.
currency: USD
---
# ── Virtual Machine Instances ──────────────────────────────────────
flexible_shapes:
VM.Standard.E6.Flex:
ocpu_per_hour: 0.0168
memory_per_gb_hour: 0.0011
monthly_730h:
ocpu: 12.26
memory_per_gb: 0.80
notes: "AMD EPYC (latest gen), best price/performance for general workloads"
VM.Standard.E5.Flex:
ocpu_per_hour: 0.0210
memory_per_gb_hour: 0.0014
monthly_730h:
ocpu: 15.33
memory_per_gb: 1.02
notes: "AMD EPYC, general-purpose workloads"
VM.Standard.E4.Flex:
ocpu_per_hour: 0.0252
memory_per_gb_hour: 0.0017
monthly_730h:
ocpu: 18.40
memory_per_gb: 1.24
notes: "AMD EPYC (previous gen)"
VM.Standard.E3.Flex:
ocpu_per_hour: 0.0252
memory_per_gb_hour: 0.0017
monthly_730h:
ocpu: 18.40
memory_per_gb: 1.24
notes: "AMD EPYC (older gen)"
VM.Standard3.Flex:
ocpu_per_hour: 0.0336
memory_per_gb_hour: 0.0022
monthly_730h:
ocpu: 24.53
memory_per_gb: 1.61
notes: "Intel Xeon, for Intel-optimized workloads"
VM.Standard.A2.Flex:
ocpu_per_hour: 0.0254
memory_per_gb_hour: 0.0017
monthly_730h:
ocpu: 18.54
memory_per_gb: 1.24
notes: "Ampere Arm (latest A2), best cost for Arm-compatible workloads"
VM.Standard.A1.Flex:
ocpu_per_hour: 0.0127
memory_per_gb_hour: 0.0008
monthly_730h:
ocpu: 9.27
memory_per_gb: 0.58
free_tier: "3,000 OCPU-hours + 18,000 GB-hours per month"
notes: "Ampere Arm A1, eligible for Always Free tier"
VM.Standard.x86.Generic:
ocpu_per_hour: 0.0252
memory_per_gb_hour: 0.0017
notes: "Generic x86 pricing when specific shape not yet selected"
VM.Optimized3.Flex:
ocpu_per_hour: 0.0504
memory_per_gb_hour: 0.0034
monthly_730h:
ocpu: 36.79
memory_per_gb: 2.48
notes: "Highest single-thread performance"
# ── Bare Metal Instances ───────────────────────────────────────────
bare_metal_shapes:
BM.Standard.E5:
ocpu_per_hour: 0.0168
notes: "AMD EPYC bare metal"
BM.Standard.E4:
ocpu_per_hour: 0.0210
notes: "AMD EPYC bare metal (previous gen)"
BM.Standard.E3:
ocpu_per_hour: 0.0420
notes: "AMD EPYC bare metal (older gen)"
BM.Standard3:
ocpu_per_hour: 0.0504
notes: "Intel Xeon bare metal"
BM.Standard.A1:
ocpu_per_hour: 0.0127
notes: "Ampere Arm bare metal"
BM.Standard.x9:
ocpu_per_hour: 0.0672
notes: "Intel Xeon x9 bare metal"
# ── GPU Accelerated Compute ────────────────────────────────────────
gpu_shapes:
# NVIDIA Blackwell (latest)
BM.GPU.B300:
per_gpu_hour: 26.88
gpu_count: 8
gpu_model: "NVIDIA B300"
notes: "Blackwell latest, HPC/AI training"
BM.GPU.B200:
per_gpu_hour: 20.16
gpu_count: 8
gpu_model: "NVIDIA B200"
notes: "Blackwell, large-scale training"
# NVIDIA Hopper
BM.GPU.H200:
per_gpu_hour: 18.54
gpu_count: 8
gpu_model: "NVIDIA H200"
notes: "Hopper H200, large model training"
BM.GPU.H100:
per_gpu_hour: 12.96
gpu_count: 8
gpu_model: "NVIDIA H100"
notes: "Hopper H100, training workloads"
# NVIDIA Ampere / Ada
BM.GPU.A100:
per_gpu_hour: 6.72
gpu_count: 8
gpu_model: "NVIDIA A100 40GB/80GB"
notes: "Training and inference, 40GB or 80GB HBM2e"
VM.GPU.A10.1:
per_gpu_hour: 0.72
gpu_count: 1
gpu_model: "NVIDIA A10"
notes: "Inference workloads, cost-effective"
VM.GPU.A10.2:
per_gpu_hour: 0.72
gpu_count: 2
gpu_model: "NVIDIA A10"
notes: "Inference workloads"
BM.GPU.L40S:
per_gpu_hour: 2.42
gpu_count: 4
gpu_model: "NVIDIA L40S"
notes: "Ada Lovelace, inference and graphics"
# ── Secure Desktops ───────────────────────────────────────────────
secure_desktops:
per_desktop_month: 1750.00
notes: "Managed virtual desktop infrastructure"
# ── Estimation Helpers ─────────────────────────────────────────────
estimation_helpers:
typical_app_server:
config: "VM.Standard.E5.Flex, 4 OCPU, 64 GB"
monthly: 126.60 # (4 * 15.33) + (64 * 1.02)
typical_web_server:
config: "VM.Standard.E5.Flex, 2 OCPU, 16 GB"
monthly: 46.98 # (2 * 15.33) + (16 * 1.02)
typical_bastion:
config: "VM.Standard.E5.Flex, 1 OCPU, 8 GB"
monthly: 23.49 # (1 * 15.33) + (8 * 1.02)
typical_arm_app_server:
config: "VM.Standard.A1.Flex, 4 OCPU, 24 GB"
monthly: 50.96 # (4 * 9.27) + (24 * 0.58)
discounts:
preemptible: "~50% off on-demand"
capacity_reservation: "~15% off on-demand (85% of list)"
reserved_1yr: "~35% off on-demand"
reserved_3yr: "~55% off on-demand"
universal_credits: "Volume discounts on committed spend"
os_pricing:
free:
- "Oracle Linux"
- "CentOS"
- "Ubuntu"
- "Oracle Autonomous Linux"
paid:
windows_server:
notes: "Pricing varies by edition, added to compute cost"

View File

@@ -0,0 +1,46 @@
---
last_verified: 2025-09-11
source: https://www.oracle.com/cloud/price-list/
description: OCI Containers, Kubernetes, and Serverless pricing.
currency: USD
---
# ── Oracle Kubernetes Engine (OKE) ────────────────────────────────
oke:
basic_cluster:
per_hour: "Free"
notes: "Basic cluster management at no cost"
enhanced_cluster:
per_cluster_hour: 0.10
monthly_per_cluster: 73.00
notes: "Enhanced features: virtual nodes, workload identity, etc."
virtual_nodes:
notes: "Additional per-pod pricing on enhanced clusters"
worker_nodes:
notes: "Billed at standard compute shape rates"
# ── Container Instances ────────────────────────────────────────────
container_instances:
notes: "Billed at compute rates: OCPU/hour + GB memory/hour"
shapes_available:
- "A1 (Arm)"
- "E3 (AMD)"
- "E4 (AMD)"
# ── Functions (Serverless) ─────────────────────────────────────────
functions:
invocations:
free_per_month: 2000000
per_invocation_beyond: 0.0000002
memory:
free_gb_seconds_per_month: 400000
per_gb_second_beyond: 0.00001417
notes: "Generous free tier, very cost-effective for event-driven workloads"
# ── OCI Batch ──────────────────────────────────────────────────────
batch:
notes: "Pay-as-you-go compute pricing, no additional service charge"

283
kb/pricing/database.yaml Normal file
View File

@@ -0,0 +1,283 @@
---
last_verified: 2025-09-11
source: https://www.oracle.com/cloud/price-list/
description: OCI Database Service pricing for estimation purposes.
currency: USD
disclaimer: |
Approximate pricing for estimation (within ~15%). Actual pricing varies by
region, commitment level, and negotiated discounts. Always verify against
https://www.oracle.com/cloud/pricing/
---
# ── Autonomous AI Database (Serverless) ───────────────────────────
# NOTE: ADB now uses ECPU billing model (not OCPU)
autonomous_database_serverless:
billing_unit: ECPU
license_included:
ecpu_per_hour: 0.0420
byol:
ecpu_per_hour: 0.0168
storage:
per_gb_month: 0.0850
per_tb_month: 87.04
auto_scaling:
notes: "Billed per ECPU-second for additional ECPUs above base. Same rate."
adg_standby:
notes: "Standby ECPU cost at same rate as primary. Storage shared (no extra)."
backup:
notes: "Automated backups included in storage cost. Manual backups use Object Storage rates."
examples:
8_ecpu_2tb_payg:
monthly_li: "$2,699"
monthly_byol: "$1,150"
breakdown: "8 ECPU × $0.0420/hr × 730hr + 2048GB × $0.0850"
8_ecpu_2tb_byol_with_adg:
monthly: "$2,300"
breakdown: "2 × (8 ECPU × $0.0168/hr × 730hr) + 2048GB × $0.0850"
# ── Autonomous AI JSON Database ────────────────────────────────────
autonomous_json_database:
billing_unit: ECPU
ecpu_per_hour: 0.0420
storage_per_gb_month: 0.0850
notes: "Same pricing as ADB-S, optimized for JSON document workloads"
# ── Autonomous Database Dedicated ──────────────────────────────────
autonomous_database_dedicated:
billing_unit: ECPU
infrastructure:
# X9M / X8M — fixed rack shapes (legacy, still available in some regions)
x9m:
quarter_rack:
base_per_hour: "~$10.50"
monthly_estimate: "$7,500$8,000"
included: "2 DB servers, 3 storage servers, 100TB usable"
half_rack:
base_per_hour: "~$21.00"
monthly_estimate: "$15,000$16,000"
included: "4 DB servers, 6 storage servers, 200TB usable"
full_rack:
base_per_hour: "~$42.00"
monthly_estimate: "$30,000$32,000"
included: "8 DB servers, 12 storage servers, 400TB usable"
# X11M — elastic scaling (new default as of 2025, replaces fixed rack shapes)
x11m:
model: "Elastic — 2 to 32 DB servers + 3 to 64 storage servers (no fixed rack shapes)"
minimum_config: "2 DB servers minimum (cannot order 1 DB server) + 3 storage servers"
billing: "Per ECPU per second (8-ECPU minimum per active DB VM)"
infrastructure_rate: "NOT PUBLICLY LISTED — requires OCI PDM/sales confirmation"
monthly_estimate: "Confirm with Oracle sales; X9M rates used as proxy for estimation"
notes: |
X11M is the current-generation Exadata infrastructure (announced 2025).
Key changes vs X9M:
- No fixed quarter/half/full rack — elastic scale in/out
- MINIMUM: 2 DB servers + 3 storage servers (cannot provision less)
- Infrastructure pricing parity with X9M (no premium) per Oracle comms,
but exact per-hour rates are not published in the public price list
- ECPU billing by the second (vs hourly in older generations)
- Improved compute, storage density, and RDMA throughput vs X9M
ecpu_pricing:
license_included_per_hour: 0.0672
byol_per_hour: 0.0504
notes: |
Infrastructure cost is fixed per rack size (X9M) or elastic per server (X11M). ECPU cost is on top.
DEP (Database Enterprise Patching) co-location is at next maintenance window.
Billing starts only at AVAILABLE state.
Provisioning takes days to weeks depending on capacity.
IMPORTANT: For X11M sizing, confirm infrastructure rates with PDM — use X9M as proxy only.
# ── Base Database Service (DBCS) ──────────────────────────────────
dbcs:
billing_unit: ECPU
license_included:
ecpu_per_hour_se: 0.0336 # Standard Edition
ecpu_per_hour_ee: 0.0420 # Enterprise Edition
ecpu_per_hour_ee_hp: 0.0504 # High Performance
ecpu_per_hour_ee_ep: 0.0672 # Extreme Performance — BYOL only on newer docs
byol:
ecpu_per_hour: 0.0168
storage_per_gb_month: 0.0255
notes: |
SE = Standard Edition, EE = Enterprise Edition,
HP = High Performance (partitioning, advanced compression, etc.),
EP = Extreme Performance (RAC, Active Data Guard, In-Memory).
Backup storage charged separately at Object Storage rates.
examples:
4_ecpu_ee_hp_500gb:
monthly_li: "$160"
breakdown: "4 ECPU × $0.0504/hr × 730hr + 500GB × $0.0255"
# ── Exadata Database Service Dedicated ─────────────────────────────
exadata_dedicated:
billing_unit: ECPU
infrastructure:
# X9M — fixed rack shapes (available in all regions)
x9m:
quarter_rack:
per_hour: 2.10
monthly_estimate: "$1,533"
half_rack:
per_hour: 6.30
monthly_estimate: "$4,599"
full_rack:
per_hour: 12.60
monthly_estimate: "$9,198"
# X11M — elastic scaling (current generation, replaces fixed rack shapes)
x11m:
model: "Elastic — 2 to 32 DB servers + 3 to 64 storage servers"
minimum_config: "2 DB servers + 3 storage servers (hard minimum — applies to ADB-D and ExaCS)"
billing: "Per ECPU per second (8-ECPU minimum per active DB VM)"
infrastructure_rate: "Line items exist in OCI price list ('Database Server - X11M' and 'Storage Server - X11M') but dollar amounts not visible without Oracle Cost Estimator or authenticated access"
proxy_for_estimation: "Use X9M quarter rack ($2.10/hr) as proxy for 2 DB + 3 storage"
notes: |
X11M is confirmed current-gen Exadata for both ExaCS and ADB-D on OCI.
MINIMUM: 2 DB servers + 3 storage servers — cannot provision less (verified against Oracle datasheets).
Per-server line items exist in price list but amounts require Oracle Cost Estimator or PDM quote.
Use X9M quarter rack ($2.10/hr infrastructure) as proxy for minimum config estimation.
ecpu_pricing:
license_included_per_hour: 0.0504
byol_per_hour: 0.0420
what_is_included:
- "Exadata smart storage (flash cache, storage indexes)"
- "Automated patching (GI + DB separate schedules)"
- "Automated backups to Object Storage"
- "RAC licensing included in Extreme Performance edition"
what_is_extra:
- "Data Guard setup and standby infrastructure"
- "Additional storage beyond rack capacity"
- "Object Storage for long-term backup retention"
gotchas:
- "Infrastructure cost is fixed regardless of ECPU utilization (X9M)."
- "X11M elastic model: scale in/out by server, not by rack."
- "Provisioning takes 4-8 hours."
- "X11M has improved storage density, RDMA throughput, and CPU vs X9M."
# ── Exadata Exascale ───────────────────────────────────────────────
exadata_exascale:
billing_unit: ECPU
ecpu_per_hour: 0.0504
storage:
notes: "Storage priced separately per Exascale vault capacity"
notes: "Elastic scaling of compute and storage independently. Next-gen Exadata."
# ── Exadata Cloud@Customer ─────────────────────────────────────────
exadata_cloud_at_customer:
billing_unit: ECPU
ecpu_pricing:
license_included_per_hour: 0.0504
byol_per_hour: 0.0420
infrastructure:
base_per_hour: 7.35
monthly_estimate: "$5,365"
notes: "Exadata infrastructure in customer datacenter, managed by Oracle"
# ── MySQL HeatWave ─────────────────────────────────────────────────
mysql_heatwave:
billing_unit: ECPU
ecpu_per_hour: 0.0180
storage_per_gb_month: 0.0085
heatwave_cluster:
notes: "Additional capacity pricing for HeatWave in-memory acceleration"
free_tier:
notes: "MySQL HeatWave Free Tier available with limits"
mysql_heatwave_on_aws:
ecpu_per_hour: 0.0180
notes: "Cross-cloud deployment, same base pricing"
# ── PostgreSQL ─────────────────────────────────────────────────────
postgresql:
ocpu_per_hour: 0.0168
storage_per_gb_month: 0.0850
notes: "Managed PostgreSQL, includes HA options"
# ── Cache with Redis ───────────────────────────────────────────────
cache_redis:
up_to_10gb:
per_gb_hour: 0.0194
monthly_per_gb: 14.16
above_10gb:
per_gb_hour: 0.0136
monthly_per_gb: 9.93
# ── OpenSearch ─────────────────────────────────────────────────────
opensearch:
per_node_hour: 0.0252
notes: "HA configuration, pricing per node"
# ── NoSQL Database ─────────────────────────────────────────────────
nosql:
provisioned:
storage_per_gb_month: 0.0085
write_unit_per_month: 0.0001
read_unit_per_month: 0.000020
on_demand:
storage_per_gb_month: 0.0085
notes: "Auto-scaled read/write units"
free_tier:
storage_gb: 25
write_units: 50
read_units: 50
max_tables: 3
# ── TimesTen for OKE ──────────────────────────────────────────────
timesten:
x86_ocpu_per_hour: 0.0252
arm_ocpu_per_hour: 0.0168
notes: "In-memory relational database deployed on Kubernetes"
# ── Data Safe ──────────────────────────────────────────────────────
data_safe:
per_target_month: 0.0150
audit_records_per_10k_month: 0.0001
# ── Database Migration ─────────────────────────────────────────────
database_migration:
per_migration_hour: 0.0420
notes: "First 183 days free if migration is active"
# ── Database Autonomous Recovery ───────────────────────────────────
database_autonomous_recovery:
per_gb_virtualized_month: 0.0085
notes: "Autonomous backup recovery service"
# ── GoldenGate ─────────────────────────────────────────────────────
goldengate:
ocpu_per_hour: 0.0252
byol_available: true
notes: "Real-time data integration and replication"
# ── Estimation Helpers ─────────────────────────────────────────────
estimation_helpers:
monthly_hours: 730
byol_savings: "50-60% on ECPU cost for Oracle Database products"
adb_s_sweet_spot: "4-32 ECPUs with auto-scaling. Below 4, consider Always Free. Above 128, consider ADB-D or ExaCS."
cost_comparison_tip: |
When comparing with AWS RDS or Azure SQL MI, include:
- OCI inbound data transfer is free
- OCI outbound is ~80% cheaper than AWS
- OCI BYOL discount is deeper than AWS BYOL
- ADB-S includes patching, tuning, indexing — RDS does not
- ADB now uses ECPU (not OCPU) — 1 ECPU ≈ fraction of an OCPU
reserved_discounts:
one_year: "~35-40% vs PAYG"
three_year: "~55-65% vs PAYG"
notes: "Available for all database services. Commitment is per-region."

59
kb/pricing/developer.yaml Normal file
View File

@@ -0,0 +1,59 @@
---
last_verified: 2025-09-11
source: https://www.oracle.com/cloud/price-list/
description: OCI Developer Services pricing.
currency: USD
---
# ── APEX Application Development ──────────────────────────────────
apex:
ecpu_per_hour: 0.36
free_tier: true
notes: "Low-code development platform, free tier available"
# ── Visual Builder ─────────────────────────────────────────────────
visual_builder:
ocpu_per_hour: 0.0252
notes: "Low-code app builder with storage"
# ── DevOps ─────────────────────────────────────────────────────────
devops:
pipeline_execution: "Free"
notes: "No charge for pipeline execution; compute/memory billed separately"
# ── Blockchain Platform ───────────────────────────────────────────
blockchain:
ocpu_per_hour: 0.0252 - 0.0504
notes: "Plus storage costs"
# ── IoT Platform ──────────────────────────────────────────────────
iot:
ecpu_per_hour: 0.0360
notes: "Plus storage costs"
# ── Media Flow ─────────────────────────────────────────────────────
media_flow:
per_minute: 0.005 - 0.120
notes: "Varies by codec, resolution, and fps"
# ── Media Streams ──────────────────────────────────────────────────
media_streams:
per_gb_packaged: 0.015
# ── Tuxedo ─────────────────────────────────────────────────────────
tuxedo:
ocpu_per_hour: 0.0252 - 0.0504
notes: "For legacy Tuxedo workload migration"
# ── WebCenter ──────────────────────────────────────────────────────
webcenter:
ocpu_per_hour: 0.0252 - 0.0504

View File

@@ -0,0 +1,53 @@
---
last_verified: 2025-09-11
source: https://www.oracle.com/cloud/price-list/
description: OCI Hybrid Cloud and VMware Solution pricing.
currency: USD
---
# ── Oracle Cloud VMware Solution (OCVS) ───────────────────────────
vmware_solution:
base_nodes:
BM.Standard2.12:
per_node_hour: 2.10 - 4.20
notes: "Hourly to 3-year commitment range"
BM.Standard3.16:
per_node_hour: 3.03 - 6.06
BM.Standard.E4.32:
per_node_hour: 4.20 - 8.40
BM.Standard.E5.48:
per_node_hour: 4.99 - 9.98
expansion:
ocpu_per_hour: 0.0168 - 0.0420
notes: "Commitment-based pricing"
hcx_enterprise:
ocpu_per_hour: 0.0084
minimum_commitment: "1 month"
gpu_storage_nodes:
per_node_hour: 2.10 - 4.20
notes: "Commitment-based pricing"
# ── Compute Cloud@Customer ─────────────────────────────────────────
compute_cloud_at_customer:
e6_compute:
ocpu_per_hour: 0.0336 - 0.0504
storage:
per_gb_month: 0.0085 - 0.0170
load_balancer:
per_hour: 0.10
# ── Managed Service for Mac ────────────────────────────────────────
managed_mac:
per_server_hour:
m2_pro: 1.20
m4_pro: 4.20
notes: "Range depends on Mac model (M2 Pro to M4 Pro)"
# ── Roving Edge Infrastructure ─────────────────────────────────────
roving_edge:
per_device_day: 300 - 1000
notes: "Portable compute/GPU/storage for edge and disconnected scenarios"

View File

@@ -0,0 +1,55 @@
---
last_verified: 2025-09-11
source: https://www.oracle.com/cloud/price-list/
description: OCI Integration and Middleware pricing.
currency: USD
---
# ── Integration Cloud ─────────────────────────────────────────────
integration_cloud:
per_5k_messages_hour: 0.36 - 0.72
notes: "Standard and Enterprise editions"
# ── API Management ─────────────────────────────────────────────────
api_management:
per_api_call: 0.0000005
monthly_1m_calls: 0.50
notes: "Very low cost per call"
# ── Data Integration ───────────────────────────────────────────────
data_integration:
workspace_per_hour: 0.0252
data_processed_per_gb_hour: 0.0252
# ── Data Integrator ────────────────────────────────────────────────
data_integrator:
ocpu_per_hour: 0.0252
# ── Streaming (Kafka compatible) ──────────────────────────────────
streaming:
storage_per_gb_hour: 0.025
data_transfer_per_gb: 0.025
streaming_with_kafka:
ocpu_per_hour: 0.0252
# ── Queue ──────────────────────────────────────────────────────────
queue:
free_per_month: 1000000 # requests
per_request_beyond: 0.0000005
notes: "1M free requests/month, very cost-effective for decoupling"
# ── SOA Suite ──────────────────────────────────────────────────────
soa_suite:
ocpu_per_hour: 0.0504 - 0.0672
notes: "For legacy SOA workload migration"
# ── GoldenGate ─────────────────────────────────────────────────────
# See database.yaml for GoldenGate pricing

View File

@@ -0,0 +1,70 @@
---
last_verified: 2025-09-11
source: https://www.oracle.com/cloud/price-list/
description: OCI Networking pricing for estimation purposes.
currency: USD
---
# ── Load Balancing ─────────────────────────────────────────────────
load_balancer:
base_instance_per_hour: 0.10
bandwidth_per_mbps_hour: 0.0084
monthly_base: 73.00
notes: "Flexible shape, bandwidth billed separately"
network_load_balancer:
per_hour: "Free"
notes: "Layer 4, no per-hour charge, data processing fees apply"
# ── FastConnect ────────────────────────────────────────────────────
fastconnect:
port_per_hour:
1gbps: 0.30
2gbps: 0.50
5gbps: 1.26
10gbps: 2.52
40gbps: 5.04
100gbps: 6.30
400gbps: 12.60
monthly_730h:
1gbps: 219.00
10gbps: 1839.60
100gbps: 4599.00
data_transfer: "Free (ingress and egress)"
notes: "Private dedicated connectivity. No data transfer charges."
# ── VPN Connect ────────────────────────────────────────────────────
vpn_connect:
notes: "No additional charge for IPSec VPN tunnels. Included with DRG."
# ── DNS ────────────────────────────────────────────────────────────
dns:
queries_included_per_month: 1000000
additional: "Free for most use cases"
notes: "1M queries/month included at no cost"
# ── WAF ────────────────────────────────────────────────────────────
waf:
notes: "Pricing based on requests processed. See OCI price list for current rates."
# ── Data Transfer Summary ──────────────────────────────────────────
data_transfer:
ingress: "Free (all sources)"
egress_internet:
first_10tb_month: "Free"
per_gb_beyond: 0.0085
inter_region:
per_gb: 0.0085
fastconnect: "Free (both directions)"
key_advantage: |
OCI is dramatically cheaper than hyperscalers for data transfer:
- AWS charges $0.09/GB egress (OCI: $0.0085 after 10TB free)
- Azure charges $0.087/GB egress
- GCP charges $0.12/GB egress
- OCI FastConnect egress is FREE (AWS DirectConnect charges per GB)

View File

@@ -0,0 +1,89 @@
---
last_verified: 2025-09-11
source: https://www.oracle.com/cloud/price-list/
description: OCI Observability and Management pricing.
currency: USD
---
# ── Monitoring ─────────────────────────────────────────────────────
monitoring:
ingestion:
free_per_month: 500000000 # 500M datapoints
per_datapoint_beyond: 0.00002
retrieval:
free_per_month: 1000000000 # 1B datapoints
per_datapoint_beyond: 0.00002
notes: "Very generous free tier for most workloads"
# ── Logging ────────────────────────────────────────────────────────
logging:
free_per_month_gb: 10
per_gb_month_beyond: 0.0050
notes: "10 GB/month free, very affordable"
# ── Log Analytics ──────────────────────────────────────────────────
log_analytics:
per_storage_unit_month: 2.50 - 5.00
storage_unit_size_gb: 300
notes: "1 storage unit = 300 GB"
# ── Notifications ──────────────────────────────────────────────────
notifications:
free_per_month:
deliveries: 1000000
emails: 1000
per_operation_beyond: 0.00001
per_email_beyond: 0.00001
# ── Events ─────────────────────────────────────────────────────────
events:
notes: "No additional charge for Events service"
# ── APM / Application Performance Monitoring ──────────────────────
apm:
notes: "Pricing based on data ingestion volume and synthetic monitors"
# ── Database Management ────────────────────────────────────────────
database_management:
ecpu_per_hour: 0.0360
notes: "Fleet-level database monitoring and management"
# ── Ops Insights ───────────────────────────────────────────────────
ops_insights:
basic: "Free"
autonomous: "Free"
cloud_external:
ocpu_per_hour: 0.0420
notes: "Basic and Autonomous tiers are free"
# ── Email Delivery ─────────────────────────────────────────────────
email_delivery:
per_1k_emails: 0.00001 - 0.000015
# ── Full Stack Disaster Recovery ───────────────────────────────────
full_stack_dr:
ecpu_per_hour: 0.0360
ocpu_per_hour: 0.0420
notes: "Orchestrates DR failover across compute, database, and networking"
# ── Fleet Application Management ──────────────────────────────────
fleet_app_management:
per_managed_resource_month: 3.00 - 7.50
# ── OS & Java Management ──────────────────────────────────────────
os_management_hub: "Free"
java_management_service: "Free"
autonomous_linux: "Free"
resource_analytics: "Free"

View File

@@ -0,0 +1,83 @@
---
last_verified: 2025-09-11
source: https://www.oracle.com/cloud/price-list/
description: OCI pricing models and discount structures.
---
models:
payg:
name: "Pay As You Go"
commitment: none
discount: none
billing: "Per second (compute), per hour (database), per month (storage)"
when_to_use:
- "Variable/unpredictable workloads"
- "Short-term projects"
- "Dev/test environments"
- "Initial cloud adoption (before committing)"
monthly_flex:
name: "Monthly Flex (Universal Credits)"
commitment: "Minimum $1,000/month or custom commitment"
discount: "Volume discounts on committed spend"
billing: "Committed credits consumed by usage"
when_to_use:
- "Steady-state production workloads"
- "Known baseline consumption"
- "Multiple services across OCI"
discount_tiers:
- spend: "$1K-$10K/month"
discount: "~5-10%"
- spend: "$10K-$50K/month"
discount: "~10-20%"
- spend: "$50K+/month"
discount: "~20-30% (negotiated)"
annual_flex:
name: "Annual Flex (Committed)"
commitment: "1-year or 3-year commitment"
discount: "Deeper discounts than monthly flex"
when_to_use:
- "Established production workloads with predictable spend"
- "Organizations committed to OCI long-term"
byol:
name: "Bring Your Own License"
discount: "~50% on database OCPU costs"
eligible:
- "Oracle Database Enterprise Edition"
- "Oracle Database Standard Edition 2"
- "Oracle WebLogic"
- "Oracle Java SE"
conversion: "1 processor license = 2 OCPUs"
when_to_use:
- "Existing Oracle on-prem licenses with active support"
- "Licenses not being used elsewhere"
when_NOT_to_use:
- "No existing licenses"
- "Licenses still needed for on-prem during migration"
- "Standard Edition workloads on ADB (requires EE)"
reserved_capacity:
name: "Reserved Capacity"
commitment: "1-year or 3-year for specific shapes"
discount:
1_year: "~35% off on-demand"
3_year: "~55% off on-demand"
when_to_use:
- "Known compute shapes running 24/7"
- "Predictable database capacity"
notes: "Shape-specific, less flexible than Universal Credits"
estimation_approach:
step_1: "Calculate PAYG cost first (baseline)"
step_2: "Apply BYOL if customer has eligible licenses"
step_3: "Show savings with Monthly Flex / Annual Flex for steady-state"
step_4: "Compare total annual cost vs current on-prem spending"
step_5: "Include migration costs in year 1"
assumptions_to_state:
- "Hours per month (730 for 24/7)"
- "Auto-scaling hours per day (estimate)"
- "Data transfer volumes"
- "Backup retention"
- "Support tier"

56
kb/pricing/security.yaml Normal file
View File

@@ -0,0 +1,56 @@
---
last_verified: 2025-09-11
source: https://www.oracle.com/cloud/price-list/
description: OCI Security service pricing.
currency: USD
---
# ── Access Governance ──────────────────────────────────────────────
access_governance:
premium:
workforce_user_month: 0.0018 - 0.0036
consumer_user_month: 0.36
for_oracle_workloads:
workforce_user_month: 0.0009 - 0.0018
consumer_user_month: 0.36
for_oci:
workforce_user_month: 0.00009 - 0.00018
# ── Vault ──────────────────────────────────────────────────────────
vault:
notes: "Key management — see OCI price list for current rates. Free tier for software keys."
# ── Cloud Guard ────────────────────────────────────────────────────
cloud_guard:
notes: "Free for OCI tenancy monitoring and threat detection"
# ── Security Zones ─────────────────────────────────────────────────
security_zones:
notes: "Free — policy enforcement on compartments"
# ── Vulnerability Scanning ─────────────────────────────────────────
vulnerability_scanning:
notes: "Free — host and container image scanning"
# ── Certificates ───────────────────────────────────────────────────
certificates:
notes: "Free — TLS certificate management"
# ── Bastion ────────────────────────────────────────────────────────
bastion:
notes: "Free — managed SSH/RDP bastion service"
# ── Network Firewall ──────────────────────────────────────────────
network_firewall:
notes: "Pricing based on instance hours and data processed"
# ── Data Safe ──────────────────────────────────────────────────────
# See database.yaml for Data Safe pricing

60
kb/pricing/storage.yaml Normal file
View File

@@ -0,0 +1,60 @@
---
last_verified: 2025-09-11
source: https://www.oracle.com/cloud/price-list/
description: OCI Storage pricing for estimation purposes.
currency: USD
---
block_volume:
balanced:
per_gb_month: 0.0255
per_tb_month: 26.11
higher_performance:
per_gb_month: 0.0340
per_tb_month: 34.82
lower_cost:
per_gb_month: 0.0170
per_tb_month: 17.41
uhp:
notes: "Priced per VPU, varies by configuration"
boot_volume:
free_tier: "200 GB included"
additional: "Same as block volume pricing"
backup:
per_gb_month: 0.0050
object_storage:
standard:
per_gb_month: 0.0255
per_tb_month: 26.11
infrequent_access:
per_gb_month: 0.0100
per_tb_month: 10.24
archive:
per_gb_month: 0.0026
per_tb_month: 2.66
api_requests:
per_10k_put: 0.0040
per_10k_get: 0.0003
free_tier:
storage_gb: 10
requests: 50000
file_storage:
per_gb_month: 0.0340
per_tb_month: 34.82
data_transfer:
ingress: "Free"
egress_internet:
first_10tb_month: "Free"
per_gb_after: 0.0085
inter_region:
per_gb: 0.0085
fastconnect:
ingress: "Free"
egress: "Free"
notes: |
OCI egress pricing is significantly cheaper than AWS/Azure/GCP.
First 10 TB/month internet egress is free.
FastConnect egress is free (no per-GB charge).

View File

@@ -0,0 +1,80 @@
---
last_verified: 2026-03-14
service: Autonomous Database Dedicated (ADB-D)
category: database
oci_color: "#AA643B"
---
what: Autonomous Database on dedicated Exadata infrastructure. Provides isolation,
higher resource limits, and more control while retaining autonomous operations
(auto-patching, auto-tuning, auto-scaling).
when_to_use:
- Regulatory/compliance requirement for dedicated infrastructure
- Need for container database (CDB) level control
- Sustained workloads >128 OCPUs per database
- Multiple databases that benefit from shared Exadata infrastructure
- Organizations that want autonomous features but need infrastructure isolation
- Need to control maintenance windows precisely
when_NOT_to_use:
- Small/medium workloads (ADB-S is simpler and cheaper)
- Teams that don't need infrastructure isolation
- Budget-constrained projects (dedicated infrastructure has higher base cost)
- Rapid prototyping or dev/test (ADB-S provisions faster)
limits:
max_ocpu_per_vm_cluster: 400
max_adb_per_vm_cluster: 200
max_storage_per_vm_cluster_tb: 192
min_exadata_infrastructure: "Quarter rack (base)"
max_vm_clusters_per_infra: 8
features:
auto_scaling: true
auto_indexing: true
auto_partitioning: true
autonomous_data_guard: true
cross_region_adg: true
private_endpoint: true
customer_managed_keys: true
fleet_management: true
maintenance_window_control: true
resource_pool_management: true
os_access: false
rac: false # Not traditional RAC, but Exadata-managed HA
ha_dr:
local_ha: "Exadata-managed, automatic failover within infrastructure"
autonomous_data_guard:
same_region: "Synchronous, automatic failover"
cross_region: "Asynchronous, manual or automatic failover"
sizing_rules:
minimum_infrastructure: "Quarter rack equivalent"
ocpu_allocation: "Shared across all ADBs in the VM cluster"
storage_allocation: "Shared Exadata storage pool"
pricing:
model: dedicated_infrastructure
infrastructure_base: "Exadata infrastructure (fixed cost per shape)"
ocpu_payg: "Per OCPU per hour on top of infrastructure"
byol_discount: "~50% on OCPU costs"
notes:
- "Infrastructure cost is fixed regardless of utilization"
- "OCPU billing is for databases provisioned on the infrastructure"
- "Higher base cost but better economics at scale (>128 OCPUs sustained)"
gotchas:
- id: ADB-D-001
issue: "Provisioning infrastructure takes hours, not minutes"
impact: "Cannot spin up quickly like ADB-S"
recommendation: "Plan infrastructure provisioning well ahead of database needs"
- id: ADB-D-002
issue: "Minimum infrastructure commitment"
impact: "Even at low utilization, you pay for the base infrastructure"
recommendation: "Only choose ADB-D when sustained usage justifies the base cost"
- id: ADB-D-003
issue: "Maintenance windows affect all databases on the infrastructure"
impact: "Need to coordinate maintenance across all tenants"
recommendation: "Use maintenance window control to schedule during off-peak"

View File

@@ -0,0 +1,49 @@
---
last_verified: 2026-03-14
service: Autonomous Database Serverless Elastic Pool
category: database
oci_color: "#AA643B"
---
what: Pool of pre-provisioned ADB-S resources that multiple databases share.
Reduces provisioning time and allows resource sharing across databases.
when_to_use:
- Many small databases (SaaS per-tenant model)
- Need fast provisioning (<1 minute vs 2-5 minutes for standard ADB-S)
- Workloads with staggered peak times across databases
- Dev/test environments with many short-lived databases
when_NOT_to_use:
- Single large database (just use ADB-S directly)
- All databases peak simultaneously (no benefit from pooling)
- Need strict resource isolation between databases
limits:
max_ocpu_per_pool: 512
max_databases_per_pool: 1000
max_storage_per_pool_tb: 4096
features:
shared_resources: true
fast_provisioning: true
auto_scaling: "Per database within pool limits"
leader_follower: "Leader database manages pool, followers consume"
pricing:
model: pool_based
pool_ocpu_payg: "Per OCPU per hour for the pool"
notes:
- "Pool resources are billed whether databases use them or not"
- "Individual databases draw from the pool allocation"
- "Cost-effective when average utilization across pool is >50%"
gotchas:
- id: EP-001
issue: "Pool resources are committed even when idle"
impact: "Under-utilized pools cost more than individual ADB-S instances"
recommendation: "Size pool for aggregate average, not sum of peaks"
- id: EP-002
issue: "Noisy neighbor risk within pool"
impact: "One database can consume disproportionate resources"
recommendation: "Set per-database OCPU limits to prevent resource hogging"

View File

@@ -0,0 +1,146 @@
# OCI Service: Autonomous Database Serverless (ADB-S)
# Last verified: 2026-03
service:
name: "Autonomous Database Serverless (ADB-S)"
id: adb_serverless
category: database
color: "#AA643B"
features:
auto_scaling: true
auto_indexing: true
auto_tuning: true
auto_patching: true
transparent_application_continuity: true
autonomous_data_guard: true
private_endpoints: true
byol_eligible: true
ha_dr_options:
local_ha: "Built-in TAC (Transparent Application Continuity) — ~0 perceived RTO"
same_region_adg: "Autonomous Data Guard standby — synchronous, RPO 0"
cross_region_adg: "Cross-region ADG — asynchronous only, RPO seconds, RTO < 15 min"
limits:
max_ocpu: 128
max_storage_tb: 383
max_auto_scale: "3x base OCPUs"
auto_scale_activation: "2-3 minutes"
min_ocpu: 1
min_storage_tb: 1
variants:
- id: adb_s
name: "Autonomous Database Serverless (ADB-S)"
description: "Shared Exadata infrastructure, fully managed, auto-scaling"
workload_types:
- ATP (Transaction Processing / Mixed)
- ADW (Data Warehouse / Analytics)
- AJD (JSON Document Store)
- APEX (Low-code application development)
- id: adb_d
name: "Autonomous Database on Dedicated Exadata (ADB-D)"
description: "Dedicated Exadata infrastructure, full isolation"
use_when:
- "Strict isolation requirements (regulatory, multi-tenant)"
- "Predictable performance with no noisy-neighbor risk"
- "Need RAC for horizontal compute scaling"
- "> 128 OCPUs sustained"
when_to_use:
- "Oracle Database workloads migrating to cloud"
- "Need automated patching, tuning, and scaling"
- "BYOL opportunity with existing Oracle DB licenses"
- "JSON document workloads (AJD)"
- "Rapid APEX application development"
- "Data warehouse / analytics with auto-scaling"
when_not_to_use:
- "Non-Oracle database engines (use MySQL HeatWave, PostgreSQL, NoSQL)"
- "Need OS-level access or custom DB home configuration → use DBCS"
- "Need RAC but not ADB-D budget → use ExaCS or DBCS VM"
- "Workloads requiring specific DB patches not yet in ADB"
- "Extreme IOPS requirements > what Exadata provides"
sizing:
adb_s:
min_ocpu: 1
max_ocpu: 128
auto_scaling: "Up to 3x base OCPUs (takes 2-3 minutes to activate)"
sizing_guidance: "Size base OCPUs for P75 sustained load, not P50. Auto-scaling covers peaks but has activation latency."
storage_min_tb: 1
storage_max_tb: 383
iops: "Proportional to OCPU count, Exadata storage servers"
adb_d:
min_ocpu: "2 per VM (minimum 2 VMs for HA)"
max_ocpu: "Per Exadata infrastructure shape"
rac: true
storage: "Exadata storage dependent on infrastructure shape"
gotchas:
- id: adb_s_autoscale_latency
severity: MEDIUM
description: "Auto-scaling activation takes 2-3 minutes. Size base OCPUs for P75, not average."
- id: adb_s_private_endpoint
severity: HIGH
description: "Always use private endpoints for production. Public endpoints allow internet access to the DB listener."
- id: adb_s_service_gateway
severity: MEDIUM
description: "ADB-S requires a Service Gateway in the VCN for automated backups to Object Storage."
- id: adb_s_byol_savings
severity: LOW
description: "BYOL pricing is ~50% cheaper than License Included. Always check if customer has existing Oracle DB licenses."
- id: adb_d_minimum_infra
severity: HIGH
description: "ADB-D requires dedicated Exadata infrastructure — minimum cost is significant. Don't recommend for small workloads."
- id: adb_data_guard_async
severity: MEDIUM
description: "Cross-region Autonomous Data Guard is async only (RPO > 0). For zero RPO, need same-region standby or ADB-D with local Data Guard."
- id: adb_19c_only
severity: LOW
description: "ADB currently runs Oracle 19c. If customer needs 23ai features, verify availability."
implied_dependencies:
- service: service_gateway
reason: "Required for automated backups to Object Storage"
- service: private_endpoint
reason: "Production workloads must use private endpoints"
- service: oci_vault
reason: "Customer-managed encryption keys (recommended for production)"
- service: data_safe
reason: "Security assessment, audit, and data masking"
competitive:
vs_aws_rds:
advantages:
- "Autonomous operations (auto-patching, auto-tuning, auto-scaling)"
- "Dramatically lower DB licensing cost with BYOL"
- "Exadata performance for Oracle workloads"
disadvantages:
- "No multi-engine support (Oracle only)"
- "Auto-scaling latency vs. Aurora's faster scale-out"
vs_azure_sql:
advantages:
- "Oracle-native features (RAC, Data Guard, Advanced Compression)"
- "BYOL cost advantage"
disadvantages:
- "Azure has broader SQL Server ecosystem integration"
references:
documentation: "https://docs.oracle.com/en/cloud/paas/autonomous-database/"
pricing: "https://www.oracle.com/autonomous-database/pricing/"
sizing_guide: "https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsa/autonomous-database-cpu.html"
changelog:
- date: "2026-03-14"
contributor: { name: "Diego Cabrera", team: "Field Architecture" }
change: "Initial creation with sizing rules, gotchas, competitive notes, HA/DR options"

73
kb/services/compute.yaml Normal file
View File

@@ -0,0 +1,73 @@
---
last_verified: 2026-03-14
service: OCI Compute
category: compute
oci_color: "#4F7B6E"
---
what: Virtual machines and bare metal instances. Flexible shapes allow custom
OCPU/memory ratios. AMD, Intel, and Arm options available.
shape_families:
- name: VM.Standard.E5.Flex
processor: "AMD EPYC 9J14 (Genoa)"
max_ocpu: 94
memory_per_ocpu_gb: "1-64 GB per OCPU"
use_for: "General purpose, most workloads"
- name: VM.Standard3.Flex
processor: "Intel Xeon (Ice Lake)"
max_ocpu: 32
memory_per_ocpu_gb: "1-64 GB per OCPU"
use_for: "Intel-optimized workloads"
- name: VM.Standard.A2.Flex
processor: "Ampere Altra (Arm)"
max_ocpu: 80
memory_per_ocpu_gb: "1-64 GB per OCPU"
use_for: "Arm-compatible workloads, cost optimization"
- name: VM.Optimized3.Flex
processor: "Intel Xeon (Ice Lake)"
max_ocpu: 18
memory_per_ocpu_gb: "1-64 GB per OCPU"
use_for: "High-frequency trading, HPC"
- name: VM.GPU.A10.1
processor: "NVIDIA A10"
gpu_count: 1
use_for: "AI/ML inference, GPU workloads"
- name: BM.GPU.H100.8
processor: "NVIDIA H100 (8 GPUs)"
gpu_count: 8
use_for: "AI/ML training, large model inference"
when_to_use:
- Traditional VM-based applications
- Applications not suited for containers
- Database clients and application servers
- Bastion hosts and jump boxes
- GPU workloads (AI/ML, rendering)
when_NOT_to_use:
- Containerized microservices (use OKE)
- Serverless event-driven workloads (use Functions)
- Managed database workloads (use ADB/DBCS)
features:
flexible_shapes: true
burstable: "Burstable instances available (VM.Standard.E5.Flex.Burstable)"
preemptible: "Preemptible instances at reduced cost"
dedicated_hosts: true
live_migration: true
boot_volume_backup: true
instance_pools: true
autoscaling: "Instance pool autoscaling"
pricing:
model: per_ocpu_per_hour
e5_flex_per_ocpu: 0.0230
standard3_flex_per_ocpu: 0.0360
a2_flex_per_ocpu: 0.0100
memory_per_gb: 0.0015
preemptible_discount: "~50% off on-demand"
notes:
- "Flexible shapes: OCPU + memory billed separately"
- "Always Free tier: 1 VM.Standard.E2.1.Micro (AMD)"
- "Preemptible instances can be reclaimed with 30s notice"

View File

@@ -0,0 +1,186 @@
# Oracle Database@AWS — KB Service Card
# Last verified: 2026-03-17
# Sources:
# - https://www.oracle.com/cloud/aws/
# - https://docs.oracle.com/en-us/iaas/Content/database-at-aws/oaaws.htm
# - https://docs.oracle.com/en/solutions/network-topology-oracle-database-at-aws/
# - https://aws.amazon.com/about-aws/whats-new/2025/12/oracle-database-aws-available-three-additional-regions/
# - https://www.oracle.com/news/announcement/oracle-database-at-aws-now-generally-available-2025-07-08/
service:
name: "Oracle Database@AWS"
also_known_as:
- "ADB Multicloud (AWS)"
- "ODB@AWS"
- "Oracle Database Service for AWS (legacy name)"
category: "Multicloud Database"
ga_date: "2025-07-08"
what: |
Oracle Database running on OCI Exadata infrastructure co-located inside
AWS datacenters. AWS apps connect via ODB peering (private, low-latency
network bridging AWS VPC to OCI infrastructure in the same AZ).
Control plane runs in OCI; data plane is physically in the AWS region.
Single invoice through AWS Marketplace. Usage counts toward AWS commitments.
services_available:
- name: "OCI Exadata Database Service on Dedicated Infrastructure"
versions: ["19c", "26ai"]
notes: "Full Exadata performance, RAC, Data Guard"
- name: "OCI Autonomous AI Database on Dedicated Exadata Infrastructure (ADB-D)"
versions: ["19c", "26ai"]
notes: "Autonomous Database on dedicated Exadata — NOT serverless"
- name: "OCI Autonomous Recovery Service"
notes: "Automated backup and recovery"
services_NOT_available:
- name: "Autonomous Database Serverless (ADB-S)"
reason: |
ADB-S is NOT available on Database@AWS. Only ADB on Dedicated
Exadata Infrastructure (ADB-D) is supported. This is a critical
distinction when designing architectures — if the customer
specifically needs ADB-S serverless, they must use native OCI
or connect via FastConnect/VPN.
# --- Regions ---
regions_ga:
- {aws_region: "us-east-1", name: "US East (N. Virginia)", ga_date: "2025-07-08"}
- {aws_region: "us-west-2", name: "US West (Oregon)", ga_date: "2025-07-08"}
- {aws_region: "us-east-2", name: "US East (Ohio)", ga_date: "2025-12-23"}
- {aws_region: "eu-central-1", name: "Europe (Frankfurt)", ga_date: "2025-12-23"}
- {aws_region: "ap-northeast-1", name: "Asia Pacific (Tokyo)", ga_date: "2025-12-23"}
- {aws_region: "ca-central-1", name: "Canada (Central)", ga_date: "2026-Q1"}
- {aws_region: "eu-west-1", name: "Europe (Ireland)", ga_date: "2026-Q1"}
- {aws_region: "ap-southeast-2", name: "Asia Pacific (Sydney)", ga_date: "2026-Q1"}
regions_planned:
- "US West (N. California)"
- "South America (São Paulo)"
- "Europe (London)"
- "Europe (Milan)"
- "Europe (Paris)"
- "Europe (Spain)"
- "Europe (Stockholm)"
- "Europe (Zurich)"
- "Asia Pacific (Hyderabad)"
- "Asia Pacific (Melbourne)"
- "Asia Pacific (Mumbai)"
- "Asia Pacific (Osaka)"
- "Asia Pacific (Seoul)"
- "Asia Pacific (Singapore)"
regions_planned_notes: "Oracle and AWS announced plans to expand to 20+ total regions"
# --- Network Architecture ---
network:
connectivity: "ODB Peering"
description: |
ODB peering creates a private, direct connection between an AWS VPC
and the OCI-managed ODB network inside the same AWS AZ. Traffic never
traverses the public internet. This is NOT a standard FastConnect —
it's a co-located, same-datacenter interconnect.
latency:
same_az: "~200-400 microseconds RTT (extrapolated from Database@Azure benchmarks)"
cross_az: "~1 ms+ (variable, must validate)"
cross_region: "Variable, depends on distance"
notes: |
Oracle does not publish official RTT benchmarks for Database@AWS.
Database@Azure (same architecture pattern) shows 200-400μs same-AZ
and ~1.5ms cross-AZ per Accenture testing (32,000+ tests, 2 weeks).
Database@AWS should be comparable since the architecture is identical
(co-located OCI infra inside cloud provider datacenter).
best_practices:
- "Deploy app EC2 and ODB network in the SAME Availability Zone"
- "Use Transit Gateway with attachment in same AZ as ODB network"
- "CIDR blocks must not overlap with AWS VPC subnets or OCI VCNs"
- "Client subnet minimum /27, recommended /24 for expansion"
- "Backup subnet minimum /28 (optional for ADB-D)"
- "Use Direct Connect for hybrid (on-premises) connectivity"
topologies:
- name: "Same-AZ Direct Peering"
use_case: "Latency-sensitive apps"
path: "App VPC → ODB Peering → ODB Network → Oracle DB"
recommendation: "Primary topology for low-latency workloads"
- name: "Hub-and-Spoke via Transit Gateway"
use_case: "Multi-VPC architectures"
path: "Spoke VPCs → Transit Gateway → ODB Network → Oracle DB"
caveat: "Cross-VPC latency varies — must validate"
- name: "Cross-Region via Transit Gateway Peering"
use_case: "Multi-region apps"
caveat: "Significant latency increase — not for latency-sensitive"
# --- Pricing ---
pricing:
model: |
Single invoice through AWS Marketplace.
- Exadata: Upfront subscription for infrastructure + pay-per-use for CPUs
- ADB-D: Upfront subscription + pay-per-use for active CPUs
aws_commitment: "Oracle Database@AWS usage counts toward AWS spending commitments"
# --- When to use vs alternatives ---
when_to_use:
- "App runs on AWS and needs Oracle Database with Exadata performance"
- "Customer wants single AWS bill (Marketplace billing)"
- "Low-latency (<1ms) app-to-DB connectivity required without migrating app"
- "Customer has AWS spending commitments to burn down"
- "Data residency requires DB to be in same region as app"
when_NOT_to_use:
- "Need ADB-S Serverless — use native OCI + FastConnect instead"
- "Target AWS region not yet GA — check availability"
- "Workload fits RDS Oracle or doesn't need Exadata performance"
- "Budget-sensitive: minimum Exadata infra commitment applies"
- "Need full OCI service breadth beyond database (OKE, Functions, etc.)"
# --- Gotchas ---
gotchas:
- id: "DBAWS-001"
severity: HIGH
issue: "ADB-S Serverless NOT available — only ADB-D Dedicated"
impact: |
Customers expecting serverless auto-scaling and pay-per-query will
need to use ADB-D with manual OCPU scaling, or use native OCI ADB-S
with FastConnect from AWS.
recommendation: |
If the customer specifically needs serverless, design with native
OCI ADB-S + FastConnect. If they need co-located low latency,
use ADB-D on Database@AWS and size Exadata appropriately.
- id: "DBAWS-002"
severity: MEDIUM
issue: "Minimum Exadata infrastructure commitment"
impact: |
Database@AWS requires dedicated Exadata infrastructure.
Minimum quarter-rack equivalent — not suitable for small workloads.
recommendation: |
For workloads < 16 OCPUs, evaluate if the latency benefit of
co-location justifies the Exadata minimum vs FastConnect to
native OCI ADB-S.
- id: "DBAWS-003"
severity: MEDIUM
issue: "VM clusters cannot be moved between ODB networks"
impact: "Once deployed in an AZ, the cluster stays there."
recommendation: "Choose the AZ carefully — align with app tier AZ placement."
- id: "DBAWS-004"
severity: LOW
issue: "Control plane runs in OCI region, not in AWS"
impact: |
Management operations (provisioning, patching, scaling) go through
OCI control plane. If OCI region has issues, management is affected
but data plane continues to serve queries.
recommendation: "Monitor both OCI and AWS health dashboards."
# --- Integration with AWS services ---
aws_integrations:
- "Amazon VPC (ODB peering)"
- "AWS IAM (federated access)"
- "Amazon CloudWatch (monitoring)"
- "Amazon EventBridge (events)"
- "Amazon S3 (data integration)"
- "AWS SageMaker / Bedrock (AI/ML via zero-ETL)"
- "AWS Transit Gateway / Cloud WAN (networking)"
- "AWS Direct Connect (hybrid connectivity)"

77
kb/services/dbcs.yaml Normal file
View File

@@ -0,0 +1,77 @@
---
last_verified: 2026-03-14
service: Database Cloud Service (DBCS)
category: database
oci_color: "#AA643B"
---
what: Oracle Database on VM or Bare Metal in OCI. Full DBA control with
automated provisioning and backup. Available as single-instance or 2-node RAC.
editions:
- Standard Edition
- Enterprise Edition
- Enterprise Edition High Performance
- Enterprise Edition Extreme Performance
when_to_use:
- Standard Edition workloads (ADB requires EE)
- Need full OS and database control without Exadata
- Moderate workloads that don't need Exadata performance
- Budget-conscious deployments where Exadata is over-provisioned
- Development and test environments mirroring production DB config
- Applications requiring specific Oracle versions or patches
when_NOT_to_use:
- High-performance OLTP (Exadata or ADB better)
- Variable workloads benefiting from auto-scaling (use ADB-S)
- No DBA team available (use ADB-S)
- Need Exadata features (Smart Scan, HCC, Flash Cache)
limits:
vm_shapes:
- "VM.Standard.E5.Flex: 1-94 OCPUs"
- "VM.Standard3.Flex: 1-32 OCPUs"
bm_shapes:
- "BM.Standard.E5: 128 OCPUs"
- "BM.DenseIO.E5: 128 OCPUs with NVMe"
max_storage_tb: 80 # block storage
rac_max_nodes: 2
features:
os_access: true
rac: "2-node RAC on VM shapes"
data_guard: true
cross_region_data_guard: true
custom_db_home: true
custom_patches: true
automated_backup: true
database_management: true
ha_dr:
local_ha: "2-node RAC for HA, single-instance with automated restart"
data_guard:
same_region: "Synchronous or async, FSFO available"
cross_region: "Asynchronous, manual or auto failover"
pricing:
model: per_ocpu_per_hour
vm_ocpu_payg: 0.1360 # per OCPU per hour (EE)
vm_ocpu_byol: 0.0680
bm_per_hour: "Fixed per shape"
storage: "Block Volume pricing applies"
notes:
- "VM shapes billed per enabled OCPU per hour"
- "BM shapes billed per hour for the full shape"
- "Storage is separate (Block Volume pricing)"
- "Backup storage at Object Storage rates"
gotchas:
- id: DBCS-001
issue: "2-node RAC is maximum on VM shapes"
impact: "Cannot scale RAC beyond 2 nodes (use ExaCS for more)"
recommendation: "If >2 RAC nodes needed, evaluate ExaCS"
- id: DBCS-002
issue: "Performance limited by block storage"
impact: "Cannot match Exadata IOPS/latency"
recommendation: "Use higher performance block volumes or move to ExaCS for I/O intensive workloads"

View File

@@ -0,0 +1,89 @@
---
last_verified: 2026-03-17
description: |
Oracle DBExpert public REST API reference for refreshing the database service catalog.
Use this to keep kb/services/dbexpert-catalog.yaml up to date.
---
# ── DBExpert ORDS REST API ─────────────────────────────────────────
swagger_ui: https://oracle-dbexpert.github.io/swagger/
base_url: https://apexadb.oracle.com/ords/dbexpert
endpoints:
all_db_services:
method: GET
url: https://apexadb.oracle.com/ords/dbexpert/db-services/v1/all
description: "Complete database service catalog with capabilities, multicloud, compliance"
response_format: JSON
fields_per_service:
- DATABASE_SERVICE_NAME
- DATABASE_TYPE # Single Database, Distributed, Consolidation Pool
- MANAGEMENT_MODEL # Fully Managed PaaS, Co-managed PaaS, Customer Managed
- SUPPORTED_CLOUD_ENVIRONMENTS
- RECOMMENDED_WORKLOADS
- RECOMMENDED_DATA_MODELS
- CERTIFIED_ORACLE_APPLICATIONS
- ORACLE_AI_DATABASE_BYOL_SUPPORT
- CPU_RANGE
- SHAPES
- CPU_SCALING # Online, Auto scale up/down
- STORAGE_SCALING
- MAX_IOPS
- MAX_THROUGHPUT
- MAX_MEMORY
- NINES_OF_AVAILABILITY # SLA/SLO
- ORACLE_DB_MAXIMUM_AVAILABILITY_ARCHITECTURE_MEDALS
- AUTOMATED_BACKUPS_MAX_RETENTION
- AZURE_COMPLIANCE
- GOOGLE_CLOUD_COMPLIANCE
- AWS_COMPLIANCE
- ALLOWS_SYSDBA_ACCESS
- SELECTAI_SUPPORT
- MONGO-COMPATIBLE_API
- SUPPORTED_DATABASE_VERSIONS
- AUTONOMOUS
- HARDWARE_INFRASTRUCTURE
- INCLUDED_ORACLE_DB_OPTIONS_FOR_LICENSE-INCLUDED_SERVICE
- FREE_ADD-ONS_(NO_EXTRA_LICENSING_REQUIRED)
- OCI_LOCATIONS
- ORACLE_DATABASE@AZURE_LOCATIONS
- ORACLE_DATABASE@GOOGLE_CLOUD_LOCATIONS
- ORACLE_DATABASE@AWS_LOCATIONS
- IS_AVAILABLE_AT_GOOGLE_CLOUD_(GCP)
- IS_AVAILABLE_AT_AZURE
- IS_AVAILABLE_AT_AWS
multicloud_regions:
url: https://apexadb.oracle.com/ords/r/dbexpert/multicloud-capabilities/multicloud-regions
description: "Multicloud region availability matrix (APEX app, WAF-blocked for curl)"
notes: "Must use browser or Swagger UI"
service_advisor:
url: https://apexadb.oracle.com/ords/r/dbexpert/dbsn/service-advisor
description: "Interactive service advisor/comparison tool (APEX app, WAF-blocked for curl)"
notes: "Must use browser"
dbsn_home:
url: https://apexadb.oracle.com/ords/r/dbexpert/dbsn/home
description: "Cloud Tools home page (APEX app)"
access_notes: |
- The REST API at /ords/dbexpert/db-services/v1/all is accessible from Swagger UI
but blocked by Akamai WAF when called from curl/Python/programmatic clients
- The APEX apps (multicloud-capabilities, dbsn) are fully WAF-blocked
- To refresh data: open Swagger UI, execute the endpoint, copy JSON response
refresh_procedure:
step_1: "Open https://oracle-dbexpert.github.io/swagger/"
step_2: "Find GET /db-services/v1/all and click 'Try it out' → 'Execute'"
step_3: "Copy the Response body JSON"
step_4: "Paste to Claude with instruction: 'actualiza kb/services/dbexpert-catalog.yaml con esto'"
alternative: |
curl -s 'https://apexadb.oracle.com/ords/dbexpert/db-services/v1/all' \
-H 'accept: application/json'
(may fail due to WAF — use browser if it does)
kb_target_file: kb/services/dbexpert-catalog.yaml
services_count: 35
last_data_date: 2026-03-17

View File

@@ -0,0 +1,679 @@
---
last_verified: 2026-03-17
source: https://apexadb.oracle.com/ords/dbexpert/db-services/v1/all
swagger: https://oracle-dbexpert.github.io/swagger/
description: Oracle Database services catalog from DBExpert API. Comprehensive capabilities, multicloud availability, SLAs, workload recommendations, and compliance data.
refresh_command: "curl -s 'https://apexadb.oracle.com/ords/dbexpert/db-services/v1/all' -H 'accept: application/json'"
notes: |
API may be blocked by Akamai WAF from non-browser clients.
Use Swagger UI at https://oracle-dbexpert.github.io/swagger/ to test.
(A) = Azure colocated region, (G) = Google Cloud colocated region
---
# =============================================================================
# Fully Managed PaaS
# =============================================================================
fully_managed_paas:
- short_name: ATP Dedicated
full_name: Autonomous AI Transaction Processing on Dedicated Infrastructure
management_model: Fully Managed PaaS
cloud_environments: [OCI, AWS]
multicloud: { azure: false, gcp: false, aws: true }
autonomous: true
sla: "99.995"
maa_medals: [Silver, Gold, Platinum]
cpu_unit: ECPU
cpu_range: "2-21504"
max_storage_tb: 1572
select_ai: true
mongo_api: true
open_source: false
recommended_workloads: [OLTP, Mixed, AI/ML, JSON, Graph, Blockchain, IoT]
byol_support: true
db_versions: ["26ai", "19c"]
- short_name: LAK Dedicated
full_name: Autonomous AI Lakehouse on Dedicated Infrastructure
management_model: Fully Managed PaaS
cloud_environments: [OCI, AWS]
multicloud: { azure: false, gcp: false, aws: true }
autonomous: true
sla: "99.995"
maa_medals: [Silver, Gold, Platinum]
cpu_unit: ECPU
cpu_range: "2-21504"
max_storage_tb: 1572
select_ai: true
mongo_api: true
open_source: false
recommended_workloads: [DW, Analytics, Data Lake, AI/ML, Mixed]
byol_support: true
db_versions: ["26ai", "19c"]
- short_name: ATP Serverless
full_name: Autonomous AI Transaction Processing Serverless
management_model: Fully Managed PaaS
cloud_environments: [OCI, Azure, GCP]
multicloud: { azure: true, gcp: true, aws: false }
autonomous: true
sla: "99.995"
sla_note: "with Autonomous Data Guard"
maa_medals: [Silver, Gold]
cpu_unit: ECPU
cpu_range: "2-16128"
max_storage_tb: 393
select_ai: true
mongo_api: true
open_source: false
recommended_workloads: [OLTP, Mixed, Microservices, AI/ML, JSON, Graph, Blockchain, IoT]
byol_support: true
db_versions: ["26ai", "19c"]
- short_name: LAK Serverless
full_name: Autonomous AI Lakehouse Serverless
management_model: Fully Managed PaaS
cloud_environments: [OCI, Azure, GCP]
multicloud: { azure: true, gcp: true, aws: false }
autonomous: true
sla: "99.995"
sla_note: "with Autonomous Data Guard"
maa_medals: [Silver, Gold]
cpu_unit: ECPU
cpu_range: "2-16128"
max_storage_tb: 393
select_ai: true
mongo_api: true
open_source: false
recommended_workloads: [DW, Analytics, Data Lake, AI/ML, Mixed]
byol_support: true
db_versions: ["26ai", "19c"]
- short_name: AJD Serverless
full_name: Autonomous AI JSON Database Serverless
management_model: Fully Managed PaaS
cloud_environments: [OCI, Azure, GCP]
multicloud: { azure: true, gcp: true, aws: false }
autonomous: true
sla: "99.95"
maa_medals: []
cpu_unit: ECPU
cpu_range: "2-512"
max_storage_tb: 10
select_ai: true
mongo_api: true
open_source: false
recommended_workloads: [JSON, Document Store, Microservices, IoT]
byol_support: false
db_versions: ["26ai", "19c"]
- short_name: ADB-S Elastic Pool
full_name: Autonomous AI Database Serverless in an Elastic Pool
management_model: Fully Managed PaaS
cloud_environments: [OCI, Azure, GCP]
multicloud: { azure: true, gcp: true, aws: false }
autonomous: true
sla: "99.995"
maa_medals: [Silver, Gold]
cpu_unit: ECPU
cpu_range: "128-16384"
max_storage_tb: 393
select_ai: true
mongo_api: true
open_source: false
recommended_workloads: [Multi-tenant SaaS, ISV, Consolidated workloads]
byol_support: true
db_versions: ["26ai", "19c"]
- short_name: ADB-D Elastic Pool
full_name: Autonomous AI Database Dedicated in an Elastic Pool
management_model: Fully Managed PaaS
cloud_environments: [OCI, AWS]
multicloud: { azure: false, gcp: false, aws: true }
autonomous: true
sla: "99.95"
maa_medals: [Silver]
cpu_unit: ECPU
cpu_range: "128-16384"
max_storage_tb: 1572
select_ai: true
mongo_api: true
open_source: false
recommended_workloads: [Multi-tenant SaaS, ISV, Consolidated workloads]
byol_support: true
db_versions: ["26ai", "19c"]
- short_name: Globally Distributed ATP-D
full_name: Globally Distributed Autonomous AI Transaction Processing
management_model: Fully Managed PaaS
cloud_environments: [OCI]
multicloud: { azure: false, gcp: false, aws: false }
autonomous: true
sla: "99.995"
maa_medals: []
cpu_unit: ECPU
cpu_range: "2-16128"
max_storage_tb: 393
select_ai: false
mongo_api: false
open_source: false
recommended_workloads: [Globally distributed OLTP, Sharded databases, Low-latency geo-distributed]
byol_support: false
db_versions: ["26ai", "19c"]
- short_name: NoSQL
full_name: NoSQL Database Cloud Service
management_model: Fully Managed PaaS
cloud_environments: [OCI]
multicloud: { azure: false, gcp: false, aws: false }
autonomous: false
sla: "99.995"
sla_note: "99.999 with Global Active Tables"
maa_medals: []
cpu_unit: Serverless
cpu_range: serverless
max_storage_tb: unlimited
select_ai: false
mongo_api: false
open_source: false
recommended_workloads: [IoT, Mobile backend, Gaming, Ad-tech, Key-value, Document]
byol_support: false
db_versions: []
- short_name: MySQL HeatWave
full_name: MySQL Database Service with HeatWave
management_model: Fully Managed PaaS
cloud_environments: [OCI]
multicloud: { azure: false, gcp: false, aws: false }
autonomous: false
sla: "99.99"
sla_note: "with High Availability"
maa_medals: []
cpu_unit: OCPU
cpu_range: "1-128"
max_storage_tb: 64
select_ai: false
mongo_api: false
open_source: true
recommended_workloads: [Web applications, SaaS, E-commerce, OLTP+Analytics, HeatWave ML/GenAI]
byol_support: false
db_versions: ["8.4", "8.0"]
# =============================================================================
# Co-managed PaaS
# =============================================================================
co_managed_paas:
- short_name: ExaDB-D
full_name: Exadata Database Service on Dedicated Infrastructure
management_model: Co-managed PaaS
cloud_environments: [OCI, Azure, GCP, AWS]
multicloud: { azure: true, gcp: true, aws: true }
autonomous: false
sla: "99.95"
maa_medals: [Bronze, Silver, Gold, Platinum]
cpu_unit: ECPU
cpu_range: "16-24320"
max_storage_tb: 3924
select_ai: false
mongo_api: true
open_source: false
recommended_workloads: [Mission-critical OLTP, Large DW, Consolidation, EBS, RAC, Data Guard]
byol_support: true
db_versions: ["26ai", "19c", "12.2", "12.1", "11.2"]
- short_name: ExaDB-XS
full_name: Exadata Database Service on Exascale Infrastructure (ExaDB-XS)
management_model: Co-managed PaaS
cloud_environments: [OCI, Azure, GCP]
multicloud: { azure: true, gcp: true, aws: false }
autonomous: false
sla: "99.95"
maa_medals: [Bronze, Silver, Gold, Platinum]
cpu_unit: ECPU
cpu_range: "0-2000"
max_storage_tb: 300
select_ai: false
mongo_api: true
open_source: false
recommended_workloads: [Small-to-medium Exadata, Dev/Test on Exadata, Entry-level mission-critical]
byol_support: true
db_versions: ["26ai", "19c"]
- short_name: ExaDB-C@C
full_name: Exadata Database Service on Cloud@Customer
management_model: Co-managed PaaS
cloud_environments: [Cloud@Customer]
multicloud: { azure: false, gcp: false, aws: false }
autonomous: false
sla: "99.95"
sla_note: SLO
maa_medals: [Bronze, Silver, Gold, Platinum]
cpu_unit: ECPU
cpu_range: "16-24320"
max_storage_tb: 3924
select_ai: false
mongo_api: true
open_source: false
recommended_workloads: [Data sovereignty, Regulated industries, Latency-sensitive on-prem, EBS]
byol_support: true
db_versions: ["26ai", "19c", "12.1", "11.2"]
- short_name: BaseDB SE
full_name: Base Database Service - Standard Edition - VM
management_model: Co-managed PaaS
cloud_environments: [OCI]
multicloud: { azure: false, gcp: false, aws: false }
autonomous: false
sla: "99.9"
sla_note: SLO
maa_medals: [Bronze]
cpu_unit: OCPU
cpu_range: "1-8"
max_storage_tb: 40
select_ai: false
mongo_api: false
open_source: false
recommended_workloads: [Small departmental, Dev/Test, Non-critical OLTP]
byol_support: true
db_versions: ["26ai", "19c"]
- short_name: BaseDB EE
full_name: Base Database Service - Enterprise Edition - VM
management_model: Co-managed PaaS
cloud_environments: [OCI]
multicloud: { azure: false, gcp: false, aws: false }
autonomous: false
sla: "99.9"
sla_note: SLO
maa_medals: [Bronze]
cpu_unit: OCPU
cpu_range: "1-64"
max_storage_tb: 40
select_ai: false
mongo_api: false
open_source: false
recommended_workloads: [Enterprise OLTP, Mixed workloads, Moderate DW]
byol_support: true
db_versions: ["26ai", "19c"]
- short_name: BaseDB EE HP
full_name: Base Database Service - Enterprise Edition High Performance - VM
management_model: Co-managed PaaS
cloud_environments: [OCI]
multicloud: { azure: false, gcp: false, aws: false }
autonomous: false
sla: "99.9"
sla_note: SLO
maa_medals: [Bronze]
cpu_unit: OCPU
cpu_range: "1-64"
max_storage_tb: 40
select_ai: false
mongo_api: false
open_source: false
recommended_workloads: [Enterprise OLTP with partitioning, Advanced compression, OLAP]
byol_support: true
db_versions: ["26ai", "19c"]
- short_name: BaseDB EE EP
full_name: Base Database Service - Enterprise Edition Extreme Performance - VM
management_model: Co-managed PaaS
cloud_environments: [OCI]
multicloud: { azure: false, gcp: false, aws: false }
autonomous: false
sla: "99.9"
sla_note: SLO
maa_medals: [Bronze, Silver, Gold, Platinum]
cpu_unit: OCPU
cpu_range: "1-128"
cpu_note: "RAC up to 128 OCPUs across 2 nodes"
max_storage_tb: 40
select_ai: false
mongo_api: false
open_source: false
recommended_workloads: [Mission-critical OLTP, RAC, Data Guard, In-Memory, Active Data Guard]
byol_support: true
db_versions: ["26ai", "19c"]
- short_name: BaseDB SE - ECPU
full_name: Base Database Service - Standard Edition - ECPU
management_model: Co-managed PaaS
cloud_environments: [OCI, Azure, GCP]
multicloud: { azure: true, gcp: true, aws: false }
autonomous: false
sla: "99.9"
sla_note: SLO
maa_medals: [Bronze]
cpu_unit: ECPU
cpu_range: "4-32"
max_storage_tb: 40
select_ai: false
mongo_api: false
open_source: false
recommended_workloads: [Small departmental, Dev/Test, Non-critical OLTP, Multicloud]
byol_support: true
db_versions: ["26ai", "19c"]
- short_name: BaseDB EE - ECPU
full_name: Base Database Service - Enterprise Edition - ECPU
management_model: Co-managed PaaS
cloud_environments: [OCI, Azure, GCP]
multicloud: { azure: true, gcp: true, aws: false }
autonomous: false
sla: "99.9"
sla_note: SLO
maa_medals: [Bronze]
cpu_unit: ECPU
cpu_range: "4-256"
max_storage_tb: 40
select_ai: false
mongo_api: false
open_source: false
recommended_workloads: [Enterprise OLTP, Mixed workloads, Multicloud]
byol_support: true
db_versions: ["26ai", "19c"]
- short_name: BaseDB EE HP - ECPU
full_name: Base Database Service - Enterprise Edition High Performance - ECPU
management_model: Co-managed PaaS
cloud_environments: [OCI, Azure, GCP]
multicloud: { azure: true, gcp: true, aws: false }
autonomous: false
sla: "99.9"
sla_note: SLO
maa_medals: [Bronze]
cpu_unit: ECPU
cpu_range: "4-256"
max_storage_tb: 40
select_ai: false
mongo_api: false
open_source: false
recommended_workloads: [Enterprise OLTP with partitioning, Advanced compression, Multicloud]
byol_support: true
db_versions: ["26ai", "19c"]
- short_name: Globally Distributed ExaDB-XS
full_name: Globally Distributed Exadata Database on Exascale Infrastructure
management_model: Co-managed PaaS
cloud_environments: [OCI]
multicloud: { azure: false, gcp: false, aws: false }
autonomous: false
sla: "99.95"
sla_note: SLO
maa_medals: []
cpu_unit: ECPU
cpu_range: "0-2000"
max_storage_tb: 300
select_ai: false
mongo_api: false
open_source: false
recommended_workloads: [Globally distributed databases, Sharded Exadata, Geo-distributed OLTP]
byol_support: true
db_versions: ["26ai"]
- short_name: PostgreSQL
full_name: Oracle Cloud Infrastructure Database with PostgreSQL
management_model: Co-managed PaaS
cloud_environments: [OCI]
multicloud: { azure: false, gcp: false, aws: false }
autonomous: false
sla: "99.99"
sla_note: "with multi-node HA"
maa_medals: []
cpu_unit: OCPU
cpu_range: "2-64"
max_storage_tb: 64
select_ai: false
mongo_api: false
open_source: true
recommended_workloads: [PostgreSQL workloads, Open source migration, Web applications]
byol_support: false
db_versions: ["15", "14"]
- short_name: LAK-ExaC@C
full_name: Autonomous AI Lakehouse on Dedicated Infrastructure Cloud@Customer
management_model: Co-managed PaaS
cloud_environments: [Cloud@Customer]
multicloud: { azure: false, gcp: false, aws: false }
autonomous: true
sla: "99.995"
maa_medals: [Silver, Gold, Platinum]
cpu_unit: ECPU
cpu_range: "2-21504"
max_storage_tb: 1572
select_ai: true
mongo_api: true
open_source: false
recommended_workloads: [Data sovereignty DW, On-prem analytics, Regulated data lake]
byol_support: true
db_versions: ["26ai", "19c"]
- short_name: ATP-ExaC@C
full_name: Autonomous AI Transaction Processing on Dedicated Infrastructure Cloud@Customer
management_model: Co-managed PaaS
cloud_environments: [Cloud@Customer]
multicloud: { azure: false, gcp: false, aws: false }
autonomous: true
sla: "99.995"
maa_medals: [Silver, Gold, Platinum]
cpu_unit: ECPU
cpu_range: "2-21504"
max_storage_tb: 1572
select_ai: true
mongo_api: true
open_source: false
recommended_workloads: [Data sovereignty OLTP, On-prem mission-critical, Regulated workloads]
byol_support: true
db_versions: ["26ai", "19c"]
- short_name: BaseDB Arm EE
full_name: Base Database Service Arm - Enterprise Edition - VM
management_model: Co-managed PaaS
cloud_environments: [OCI]
multicloud: { azure: false, gcp: false, aws: false }
autonomous: false
sla: "99.9"
sla_note: SLO
maa_medals: [Bronze]
cpu_unit: OCPU
cpu_range: "2-80"
max_storage_tb: 40
select_ai: false
mongo_api: false
open_source: false
recommended_workloads: [Cost-optimized Enterprise, Arm-native workloads]
byol_support: true
db_versions: ["26ai", "19c"]
- short_name: BaseDB Arm EE EP
full_name: Base Database Service Arm - Enterprise Edition Extreme Performance - VM
management_model: Co-managed PaaS
cloud_environments: [OCI]
multicloud: { azure: false, gcp: false, aws: false }
autonomous: false
sla: "99.9"
sla_note: SLO
maa_medals: [Bronze, Silver, Gold, Platinum]
cpu_unit: OCPU
cpu_range: "2-160"
max_storage_tb: 40
select_ai: false
mongo_api: false
open_source: false
recommended_workloads: [Cost-optimized mission-critical, Arm RAC, Arm Data Guard]
byol_support: true
db_versions: ["26ai", "19c"]
- short_name: BaseDB Arm EE HP
full_name: Base Database Service Arm - Enterprise Edition High Performance - VM
management_model: Co-managed PaaS
cloud_environments: [OCI]
multicloud: { azure: false, gcp: false, aws: false }
autonomous: false
sla: "99.9"
sla_note: SLO
maa_medals: [Bronze]
cpu_unit: OCPU
cpu_range: "2-80"
max_storage_tb: 40
select_ai: false
mongo_api: false
open_source: false
recommended_workloads: [Cost-optimized with partitioning, Arm advanced compression]
byol_support: true
db_versions: ["26ai", "19c"]
# =============================================================================
# Customer Managed
# =============================================================================
customer_managed:
- short_name: IaaS Bare Metal
full_name: OCI Compute - Bare Metal
management_model: Customer Managed
cloud_environments: [OCI]
multicloud: { azure: false, gcp: false, aws: false }
autonomous: false
sla: null
maa_medals: [Bronze]
cpu_unit: OCPU
cpu_range: "64-192"
max_storage_tb: unlimited
select_ai: false
mongo_api: false
open_source: false
recommended_workloads: [Full OS control, Custom RAC, Legacy versions, Bare-metal performance]
byol_support: true
db_versions: ["26ai", "19c", "12.2", "12.1", "11.2"]
- short_name: IaaS VM
full_name: OCI Compute - Virtual Machine
management_model: Customer Managed
cloud_environments: [OCI]
multicloud: { azure: false, gcp: false, aws: false }
autonomous: false
sla: null
maa_medals: [Bronze]
cpu_unit: OCPU
cpu_range: "1-94"
cpu_note: "E6.Flex up to 126 OCPUs"
max_storage_tb: unlimited
select_ai: false
mongo_api: false
open_source: false
recommended_workloads: [Dev/Test, Custom config, Legacy versions, Full OS control]
byol_support: true
db_versions: ["26ai", "19c", "12.2", "12.1", "11.2"]
- short_name: Exadata DB Machine
full_name: Oracle Database on Exadata Database Machine (on-prem)
management_model: Customer Managed
cloud_environments: [On-Premises]
multicloud: { azure: false, gcp: false, aws: false }
autonomous: false
sla: null
maa_medals: [Bronze, Silver, Gold, Platinum]
cpu_unit: Cores
cpu_range: "0-2880"
max_storage_tb: unlimited
select_ai: false
mongo_api: false
open_source: false
recommended_workloads: [On-prem Exadata, Air-gapped, Full hardware control]
byol_support: true
db_versions: ["26ai", "19c", "12.2", "12.1", "11.2"]
# =============================================================================
# Always Free & Developer Editions
# =============================================================================
always_free_and_developer:
- short_name: ATP Serverless - Always Free
full_name: Autonomous AI Transaction Processing Serverless - Always Free
base_service: ATP Serverless
management_model: Fully Managed PaaS
cloud_environments: [OCI]
autonomous: true
cpu_unit: ECPU
cpu_range: "2"
max_storage_tb: 0.02
select_ai: true
mongo_api: true
db_versions: ["26ai", "19c"]
notes: "Always Free tier, 20 GB storage, no SLA"
- short_name: LAK Serverless - Always Free
full_name: Autonomous AI Lakehouse Serverless - Always Free
base_service: LAK Serverless
management_model: Fully Managed PaaS
cloud_environments: [OCI]
autonomous: true
cpu_unit: ECPU
cpu_range: "2"
max_storage_tb: 0.02
select_ai: true
mongo_api: true
db_versions: ["26ai", "19c"]
notes: "Always Free tier, 20 GB storage, no SLA"
- short_name: AJD Serverless - Always Free
full_name: Autonomous AI JSON Database Serverless - Always Free
base_service: AJD Serverless
management_model: Fully Managed PaaS
cloud_environments: [OCI]
autonomous: true
cpu_unit: ECPU
cpu_range: "2"
max_storage_tb: 0.02
select_ai: true
mongo_api: true
db_versions: ["26ai", "19c"]
notes: "Always Free tier, 20 GB storage, no SLA"
- short_name: ADB-S Developer
full_name: Autonomous AI Database Serverless - Developer
base_service: ATP Serverless
management_model: Fully Managed PaaS
cloud_environments: [OCI]
autonomous: true
cpu_unit: ECPU
cpu_range: "2-512"
max_storage_tb: 10
select_ai: true
mongo_api: true
db_versions: ["26ai", "19c"]
notes: "Developer edition, reduced cost, non-production use"
- short_name: BaseDB Arm Developer
full_name: Base Database Service Arm - Developer Edition - VM
base_service: BaseDB Arm EE
management_model: Co-managed PaaS
cloud_environments: [OCI]
autonomous: false
cpu_unit: OCPU
cpu_range: "2-80"
max_storage_tb: 40
select_ai: false
mongo_api: false
db_versions: ["26ai", "19c"]
notes: "Arm Developer edition, non-production use"
# =============================================================================
# Quick-reference: Multicloud availability matrix
# =============================================================================
# Service | OCI | Azure | GCP | AWS | C@C
# -------------------------|-----|-------|-----|-----|----
# ExaDB-D | Y | Y | Y | Y |
# ExaDB-XS | Y | Y | Y | |
# ATP Dedicated | Y | | | Y |
# LAK Dedicated | Y | | | Y |
# ATP Serverless | Y | Y | Y | |
# LAK Serverless | Y | Y | Y | |
# AJD Serverless | Y | Y | Y | |
# ADB-S Elastic Pool | Y | Y | Y | |
# ADB-D Elastic Pool | Y | | | Y |
# BaseDB SE/EE/HP - ECPU | Y | Y | Y | |
# ExaDB-C@C | | | | | Y
# LAK-ExaC@C / ATP-ExaC@C | | | | | Y
# All others | Y | | | |

102
kb/services/exacs.yaml Normal file
View File

@@ -0,0 +1,102 @@
---
last_verified: 2026-03-14
service: Exadata Cloud Service (ExaCS)
category: database
oci_color: "#AA643B"
---
what: Full Oracle Exadata system in OCI. Provides OS access, RAC, full DBA control
with cloud elasticity. Runs the same Exadata software as on-prem.
when_to_use:
- Need OS-level access for custom agents, scripts, or compliance tools
- RAC required for application architecture
- Sustained high OCPU workloads (>128 OCPUs)
- Lift-and-shift from on-prem Exadata with minimal changes
- Need custom database parameters not available in ADB
- Applications that use features incompatible with ADB (e.g., dblinks to non-Oracle)
when_NOT_to_use:
- Small/medium workloads (over-provisioned)
- No DBA team (ExaCS requires database administration)
- Variable workloads that benefit from ADB auto-scaling
- Budget-constrained (high minimum commitment)
limits:
shapes:
- name: "Exadata.Quarter3.100"
base_ocpu: 100
max_ocpu: 100
storage_tb: 49.5
- name: "Exadata.Half3.200"
base_ocpu: 200
max_ocpu: 200
storage_tb: 99
- name: "Exadata.Full3.400"
base_ocpu: 400
max_ocpu: 400
storage_tb: 198
max_vm_clusters: 8
max_databases_per_cluster: "Limited by resources"
max_pdb_per_cdb: 252
features:
os_access: true
rac: true
data_guard: true
cross_region_data_guard: true
custom_db_home: true
custom_patches: true
grid_infrastructure: true
flash_cache: true
smart_scan: true
storage_compression: true
hybrid_columnar_compression: true
ha_dr:
local_ha: "RAC across Exadata nodes, automatic failover"
data_guard:
same_region: "Synchronous, automatic failover with FSFO"
cross_region: "Asynchronous or far-sync, manual or automatic failover"
sizing_rules:
minimum: "Quarter rack (100 OCPUs base)"
scaling: "Can enable additional OCPUs in increments"
storage: "Comes with infrastructure, expandable"
pricing:
model: infrastructure_plus_ocpu
infrastructure_monthly: "Fixed per shape"
enabled_ocpu_per_hour: 0.336 # approximate
byol_ocpu_per_hour: 0.168
notes:
- "Infrastructure cost is fixed per shape"
- "Only enabled OCPUs are billed"
- "BYOL provides ~50% discount on OCPU portion"
- "Storage included with infrastructure"
gotchas:
- id: EXACS-001
issue: "Provisioning takes hours to days"
impact: "Cannot provision on-demand like ADB-S"
recommendation: "Plan capacity well in advance"
- id: EXACS-002
issue: "Minimum quarter rack commitment"
impact: "Significant base cost even at low utilization"
recommendation: "Ensure sustained usage justifies the infrastructure cost"
- id: EXACS-003
issue: "DBA team required for ongoing operations"
impact: "Patching, tuning, and maintenance are customer responsibility"
recommendation: "Ensure DBA team capacity before choosing ExaCS over ADB"
- id: EXACS-004
issue: "Scale-down requires VM cluster modification"
impact: "Not as elastic as ADB-S for variable workloads"
recommendation: "Right-size for steady-state, not peak"
migration_tools:
- name: Oracle Data Guard
use_for: "On-prem Exadata to ExaCS with minimal downtime"
- name: RMAN Restore
use_for: "Backup-based migration with planned downtime"
- name: Zero Downtime Migration (ZDM)
use_for: "Automated physical migration"

View File

@@ -0,0 +1,101 @@
# OCI Service: Exadata Cloud Service (ExaCS)
# Last verified: 2026-03
service:
name: "Exadata Cloud Service (ExaCS)"
id: exacs
category: database
color: "#AA643B"
description: "Dedicated Exadata infrastructure running in OCI, providing the full performance and isolation of Exadata hardware with cloud elasticity. Supports Oracle RAC, Data Guard, and direct OS/CDB-level access for maximum DBA control."
when_to_use:
- "Oracle RAC workloads requiring multi-node clustering"
- "Regulatory or compliance scenarios demanding dedicated infrastructure isolation"
- "High IOPS / low-latency database workloads (OLTP or mixed)"
- "Sustained compute needs exceeding 128 OCPUs"
- "Need direct OS-level or CDB-level access for custom patching, tuning, or agents"
when_not_to_use:
- "Small workloads under 16 OCPUs — use Autonomous Database Serverless (ADB-S) or Base Database Service"
- "No dedicated DBA team to manage patching, RAC, and infrastructure"
- "Simple OLTP with no RAC or isolation requirements — use ADB-S instead"
- "Dev/test environments where cost efficiency matters more than performance"
variants:
- id: exacs_x9m
name: "ExaCS X9M"
description: "Exadata X9M shape — current-generation infrastructure with RDMA over Converged Ethernet and persistent memory acceleration."
- id: exacs_x10m
name: "ExaCS X10M"
description: "Exadata X10M shape — next-generation infrastructure with improved compute, storage density, and throughput."
sizing:
rack_configurations:
quarter_rack:
ocpus: "100 (scalable)"
memory: "1.44 TB"
storage: "Up to 76.8 TB usable (Exadata Storage)"
db_nodes: 2
storage_servers: 3
half_rack:
ocpus: "200 (scalable)"
memory: "2.88 TB"
storage: "Up to 153.6 TB usable"
db_nodes: 4
storage_servers: 6
full_rack:
ocpus: "400 (scalable)"
memory: "5.76 TB"
storage: "Up to 307.2 TB usable"
db_nodes: 8
storage_servers: 12
ocpu_scaling: "OCPUs can be scaled online in increments without downtime. You pay for enabled OCPUs, not the total available in the rack."
sizing_guidance: "Start with a quarter rack for most production workloads. Scale OCPUs on demand. Choose half/full rack only when storage capacity or aggregate memory requirements exceed quarter rack limits."
gotchas:
- id: exacs_minimum_cost
severity: HIGH
description: "Minimum infrastructure cost is approximately $6,000+/month for a quarter rack, regardless of OCPU usage. Ensure sustained workload justifies the commitment."
- id: exacs_provisioning_time
severity: MEDIUM
description: "Exadata infrastructure provisioning takes 4-8 hours. Plan deployments accordingly — this is not an instant resource like a Compute VM."
- id: exacs_patching_window
severity: MEDIUM
description: "Patching requires a scheduled maintenance window. Database nodes are patched in a rolling fashion but plan for reduced capacity during the process."
- id: exacs_gi_db_patch_separate
severity: MEDIUM
description: "Grid Infrastructure (GI) and Database Home patches are applied separately and may have different schedules. Coordinate both to avoid version skew."
- id: exacs_overprovisioning_risk
severity: HIGH
description: "Customers frequently over-provision by choosing half or full racks when a quarter rack with OCPU scaling would suffice. Always validate actual IOPS and CPU requirements before sizing up."
- id: exacs_network_placement
severity: LOW
description: "ExaCS requires placement in a private subnet with sufficient IP addresses. Each DB node and each virtual IP consumes an IP; plan your subnet CIDR accordingly."
implied_dependencies:
- service: vcn
reason: "ExaCS infrastructure must be deployed in a VCN"
- service: private_subnet
reason: "DB nodes and SCAN listeners require private subnet placement"
- service: service_gateway
reason: "Access to OCI object storage for backups and patching from private subnets"
- service: oci_vault
reason: "TDE wallet management and encryption key storage"
competitive_notes:
vs_aws: "AWS has no equivalent dedicated Oracle Exadata infrastructure offering. RDS Oracle and RDS Custom lack RAC support and Exadata storage acceleration. Customers needing true Exadata performance have no AWS-native path."
references:
documentation: "https://docs.oracle.com/en-us/iaas/Content/Database/Concepts/exaoverview.htm"
pricing: "https://www.oracle.com/cloud/price-list/#exadata"
changelog:
- date: "2026-03-14"
contributor: { name: "Diego Cabrera", team: "Field Architecture" }
change: "Initial creation with shapes, sizing, gotchas, dependencies"

View File

@@ -0,0 +1,91 @@
---
last_verified: 2026-03-14
service: OCI Networking
category: networking
oci_color: "#4F7B6E"
---
what: Software-defined networking layer in OCI. Includes VCN, subnets, gateways,
load balancers, DNS, and connectivity options.
components:
vcn:
what: "Virtual Cloud Network — isolated network in OCI"
cidr: "Supports multiple CIDR blocks, /16 to /30"
max_per_region: 50
subnet:
what: "Subdivision of VCN, can be regional (spans all ADs)"
types: ["public", "private"]
recommendation: "Always use private subnets for databases and app servers"
security_list:
what: "Stateful firewall rules at subnet level"
recommendation: "Prefer NSGs (Network Security Groups) for granular control"
nsg:
what: "Network Security Group — firewall rules at VNIC level"
recommendation: "Preferred over security lists for micro-segmentation"
internet_gateway:
what: "Enables internet access for public subnets"
nat_gateway:
what: "Enables outbound internet for private subnets"
service_gateway:
what: "Private access to OCI services (Object Storage, ADB, etc.)"
recommendation: "Always use for database and storage access — no internet traversal"
drg:
what: "Dynamic Routing Gateway — hub for VCN peering and on-prem connectivity"
supports: ["VCN peering", "FastConnect", "IPSec VPN", "Remote peering"]
load_balancer:
types:
- name: "Flexible Load Balancer"
what: "Layer 7 (HTTP/HTTPS) load balancer"
bandwidth: "10 Mbps to 8 Gbps (flexible)"
- name: "Network Load Balancer"
what: "Layer 4 (TCP/UDP) load balancer"
bandwidth: "Up to line rate"
connectivity:
fastconnect:
what: "Dedicated private connection to OCI (like AWS Direct Connect)"
speeds: ["1 Gbps", "2 Gbps", "5 Gbps", "10 Gbps", "100 Gbps"]
redundancy: "Always deploy 2 circuits for HA"
notes: "Partner or co-location model, typical setup takes 2-4 weeks"
ipsec_vpn:
what: "Encrypted tunnel over internet"
bandwidth: "Up to 250 Mbps per tunnel, aggregate with multiple tunnels"
notes: "Good for dev/test or backup connectivity, not production data transfer"
vcn_peering:
local: "Within same region, no bandwidth limits"
remote: "Cross-region via DRG, standard inter-region latency"
pricing:
vcn: "Free"
subnet: "Free"
nat_gateway_per_hour: 0.0084
service_gateway: "Free"
drg_per_hour: 0.016
fastconnect:
port_per_month:
1gbps: 180
10gbps: 680
data_ingress: "Free"
data_egress: "Free over FastConnect"
load_balancer:
flexible_base: 0.014 # per hour
per_mbps: 0.0013
notes:
- "Inter-region data transfer: $0.0085/GB"
- "Internet egress: first 10 TB/month free, then $0.0085/GB"
- "OCI egress pricing is significantly cheaper than AWS/Azure/GCP"
gotchas:
- id: NET-001
issue: "VCN CIDR blocks cannot overlap for peering"
impact: "Plan CIDR ranges carefully for multi-VCN architectures"
recommendation: "Use a documented IP addressing scheme before deployment"
- id: NET-002
issue: "FastConnect provisioning takes 2-4 weeks with partners"
impact: "Can delay migration timelines"
recommendation: "Start FastConnect procurement early, use VPN as interim"
- id: NET-003
issue: "Security lists apply to entire subnet, NSGs to specific VNICs"
impact: "Security lists can be too broad for micro-segmentation"
recommendation: "Use NSGs as primary, security lists as fallback"

View File

@@ -0,0 +1,97 @@
# OCI Service: OCI Networking Core (VCN, Subnets, Gateways)
# Last verified: 2026-03
service:
name: "OCI Networking Core"
id: networking_core
category: infrastructure
description: "Foundational networking bundle covering Virtual Cloud Networks (VCN), subnets, and gateways. Every OCI deployment depends on these components for connectivity, segmentation, and traffic routing."
components:
- name: "Virtual Cloud Network (VCN)"
id: vcn
description: "Software-defined private network in OCI. Provides the IP address space, DNS, and route table framework for all attached resources."
when_to_use:
- "Required for every OCI deployment — compute, database, Kubernetes, and managed services all reside in a VCN"
- name: "Subnet (Public)"
id: public_subnet
description: "Subnet where instances can receive public IP addresses and are reachable from the internet via an Internet Gateway."
when_to_use:
- "Load balancers, bastion hosts, or resources that must accept inbound internet traffic"
- "Dev/test instances needing direct internet access"
- name: "Subnet (Private)"
id: private_subnet
description: "Subnet with no public IP assignment. Resources communicate outbound via NAT Gateway and access OCI services via Service Gateway."
when_to_use:
- "Application servers, databases, and backend services that should not be internet-facing"
- "Any workload subject to security or compliance restrictions on public exposure"
- name: "Internet Gateway (IGW)"
id: igw
description: "Provides a path for inbound and outbound internet traffic to/from resources in public subnets."
when_to_use:
- "Public-facing load balancers or bastion hosts need internet connectivity"
- name: "NAT Gateway"
id: nat_gateway
description: "Enables outbound-only internet access for resources in private subnets. No inbound initiation from the internet."
when_to_use:
- "Private subnet resources need to pull OS patches, container images, or call external APIs"
- name: "Service Gateway"
id: service_gateway
description: "Private pathway from a VCN to supported OCI services (e.g., Object Storage, Autonomous Database) without traffic traversing the internet."
when_to_use:
- "Any private subnet workload that needs to reach OCI Object Storage, streaming, or other supported services"
- "Backup traffic from databases or compute that should stay on the Oracle backbone"
- name: "Dynamic Routing Gateway (DRG)"
id: drg
description: "Virtual router that connects a VCN to on-premises networks (via FastConnect or IPSec VPN), other VCNs, or remote regions."
when_to_use:
- "Hybrid cloud connectivity to on-premises data centers"
- "VCN-to-VCN peering across regions or tenancies"
- "Hub-and-spoke network topologies"
- name: "Local Peering Gateway (LPG)"
id: lpg
description: "Connects two VCNs in the same region for private traffic exchange without traversing the internet or a DRG."
when_to_use:
- "Intra-region VCN-to-VCN peering when a DRG hub is not needed"
- "Simple two-VCN peering scenarios"
design_rules:
- "Allocate a /16 CIDR block per VCN to allow room for future subnet expansion"
- "Plan CIDR ranges for growth — adding non-overlapping CIDRs later is supported but the original CIDR cannot be changed"
- "Avoid CIDR overlap with on-premises networks and other VCNs that will be peered"
- "Create separate subnets per tier (web, app, database) and per availability domain when needed for fault isolation"
- "Prefer Network Security Groups (NSGs) over Security Lists — NSGs are attached to individual resources and are easier to manage at scale"
gotchas:
- id: vcn_cidr_immutable
severity: HIGH
description: "A VCN's original CIDR block cannot be modified or removed after creation. Additional non-overlapping CIDRs can be added, but plan the initial range carefully."
- id: security_rule_limit
severity: MEDIUM
description: "Each security list supports a maximum of 200 rules (ingress + egress combined). For complex environments, use multiple NSGs instead of overloading a single security list."
- id: service_gateway_required
severity: HIGH
description: "Resources in private subnets cannot reach OCI services (Object Storage, Autonomous Database, etc.) without a Service Gateway and corresponding route rule. This is a common misconfiguration."
- id: drg_required_hybrid
severity: MEDIUM
description: "A DRG is required for FastConnect, IPSec VPN, and cross-VCN peering via transit routing. Plan DRG attachment early — retrofitting routing later adds complexity."
references:
documentation: "https://docs.oracle.com/en-us/iaas/Content/Network/Concepts/overview.htm"
vcn_best_practices: "https://docs.oracle.com/en-us/iaas/Content/Network/Concepts/bestpractices.htm"
changelog:
- date: "2026-03-14"
contributor: { name: "Diego Cabrera", team: "Field Architecture" }
change: "Initial creation with VCN, subnets, gateways, DRG design rules and gotchas"

View File

@@ -0,0 +1,45 @@
---
last_verified: 2026-03-14
service: OCI Queue
category: integration
oci_color: "#6B4D9A"
---
what: Fully managed serverless message queue. Supports standard queue semantics
with at-least-once delivery, visibility timeout, and dead letter queues.
when_to_use:
- Decoupling microservices
- Work distribution across consumers
- Buffering requests during traffic spikes
- Simple pub/sub messaging without Kafka complexity
when_NOT_to_use:
- Need strict ordering (use OCI Streaming)
- Need real-time streaming analytics (use OCI Streaming)
- Need message replay (use OCI Streaming)
- Complex routing/filtering (use OCI Streaming or third-party)
limits:
max_message_size_kb: 512
max_retention_days: 7
max_queues_per_compartment: 100
max_channels_per_queue: 10
max_visibility_timeout_hours: 12
features:
dead_letter_queue: true
visibility_timeout: true
long_polling: true
batched_operations: true
encryption_at_rest: true
private_endpoint: true
pricing:
model: per_request
per_million_requests: 0.40
data_transfer: "Standard OCI egress pricing"
notes:
- "No minimum commitment"
- "Billed per API request (send, receive, delete)"
- "Very cost-effective for moderate throughput"

74
kb/services/oke.yaml Normal file
View File

@@ -0,0 +1,74 @@
# OCI Service: Oracle Container Engine for Kubernetes (OKE)
# Last verified: 2026-03
service:
name: "Oracle Container Engine for Kubernetes (OKE)"
id: oke
category: infrastructure
color: "#2D5967"
description: "Managed Kubernetes service with Oracle-optimized control plane, integrated with OCI networking, IAM, and observability."
when_to_use:
- "Containerized applications (microservices, 12-factor apps)"
- "Need horizontal auto-scaling for application tier"
- "Multi-team environments needing namespace isolation"
- "CI/CD-driven deployments"
- "Workloads requiring service mesh, ingress controllers"
when_not_to_use:
- "Simple stateless functions → use OCI Functions instead"
- "Single monolithic app with no container strategy → use Compute VMs"
- "Team has no Kubernetes experience and timeline is tight"
- "Batch processing only → consider OCI Data Flow or Compute"
variants:
- id: oke_managed
name: "OKE Managed Nodes"
description: "Customer manages worker nodes (OS patching, scaling config)"
- id: oke_virtual
name: "OKE Virtual Nodes"
description: "Serverless worker nodes — no OS management, pay per pod"
use_when:
- "Want zero node management overhead"
- "Bursty workloads with variable pod count"
- "Cost optimization for intermittent workloads"
sizing:
control_plane: "Free (managed by Oracle)"
worker_nodes:
recommended_shapes:
- "VM.Standard.E4.Flex (general purpose, best price/performance)"
- "VM.Standard.A1.Flex (ARM/Ampere, 30-50% cheaper for compatible workloads)"
- "VM.Standard3.Flex (Intel, when Intel compatibility required)"
- "VM.GPU.A10.1 / VM.GPU.A100 (GPU workloads)"
sizing_guidance: "Start with 3 nodes across fault domains for HA. Size OCPUs based on aggregate pod CPU requests + 20% headroom."
gotchas:
- id: oke_lb_shape
severity: LOW
description: "OKE creates OCI Load Balancers for LoadBalancer-type services. Default is 10 Mbps flexible — adjust annotation for production bandwidth."
- id: oke_cni_choice
severity: MEDIUM
description: "VCN-Native Pod Networking (OCI CNI) gives pods VCN IPs directly — better for NSG integration but consumes subnet IPs. Flannel overlay is simpler but no direct VCN integration."
- id: oke_pv_block_volume
severity: LOW
description: "Persistent volumes use OCI Block Volumes. For ReadWriteMany, use OCI File Storage (FSS) CSI driver."
implied_dependencies:
- service: vcn
reason: "Worker nodes and pods need VCN subnets"
- service: load_balancer
reason: "Ingress traffic to services"
- service: block_storage
reason: "Persistent volumes for stateful pods"
references:
documentation: "https://docs.oracle.com/en-us/iaas/Content/ContEng/home.htm"
changelog:
- date: "2026-03-14"
contributor: { name: "Diego Cabrera", team: "Field Architecture" }
change: "Initial creation with managed/virtual nodes, sizing, gotchas, dependencies"

70
kb/services/storage.yaml Normal file
View File

@@ -0,0 +1,70 @@
---
last_verified: 2026-03-14
service: OCI Storage Services
category: storage
oci_color: "#4F7B6E"
---
what: OCI storage services including Block Volume, Object Storage, File Storage,
and Archive Storage.
services:
block_volume:
what: "Network-attached block storage for compute instances"
performance_tiers:
- name: Lower Cost
iops_per_gb: 2
throughput_kbps_per_gb: 240
- name: Balanced
iops_per_gb: 60
throughput_kbps_per_gb: 480
- name: Higher Performance
iops_per_gb: 75
throughput_kbps_per_gb: 600
- name: Ultra High Performance
max_iops: 450000
max_throughput_mbps: 2680
max_volume_size_tb: 32
max_volumes_per_instance: 32
object_storage:
what: "S3-compatible object storage"
tiers:
- name: Standard
use_for: "Frequently accessed data"
- name: Infrequent Access
use_for: "Data accessed less than once per month"
- name: Archive
use_for: "Long-term retention, compliance"
retrieval_time: "1 hour (standard), 1 minute (expedited)"
features:
- "S3-compatible API"
- "Versioning"
- "Lifecycle policies"
- "Server-side encryption (SSE)"
- "Replication (same-region and cross-region)"
max_object_size_tb: 10
file_storage:
what: "NFSv3-compatible managed file system"
use_for: "Shared file access across multiple compute instances"
max_size: "8 EB (exabytes)"
iops: "Up to 25,000 IOPS per file system"
throughput: "Up to 1.2 GB/s per mount target"
pricing:
block_volume:
balanced_per_gb_month: 0.0255
higher_performance_per_gb_month: 0.0340
uhp_per_gb_month: "Varies by VPU"
object_storage:
standard_per_gb_month: 0.0255
infrequent_per_gb_month: 0.0100
archive_per_gb_month: 0.0026
api_per_10k_requests: 0.0034
file_storage:
per_gb_month: 0.0340
notes:
- "Block Volume: first 200 GB free (boot volume)"
- "Object Storage: first 10 GB free, 50k API requests free"
- "Data transfer to Object Storage: free (within region)"

View File

@@ -0,0 +1,57 @@
---
last_verified: 2026-03-14
description: ADB-S auto-scaling behavior, timing, and sizing implications.
---
auto_scaling:
ocpu_scaling:
trigger: "CPU demand exceeds current allocation"
max_scale: "3x base OCPUs (up to 128 OCPU maximum)"
ramp_up_time: "2-3 minutes to begin scaling"
ramp_down_time: "After sustained low utilization (5-10 minutes)"
billing: "Only billed during active scaling period, per OCPU per second"
storage_scaling:
trigger: "Storage usage approaches allocated storage"
behavior: "Auto-expands storage allocation"
billing: "Billed for allocated storage"
sizing_recommendations:
base_ocpu_strategy: |
Size base OCPUs for P75 utilization, not average.
Auto-scaling handles P95+ bursts, but the 2-3 minute ramp-up
means very short spikes may complete before scaling activates.
guidelines:
- scenario: "Steady OLTP workload"
base: "P75 utilization"
auto_scale: "Enable, set max to P95 or 2x base"
- scenario: "Highly variable workload (2x+ peak/baseline)"
base: "P50 utilization"
auto_scale: "Enable, set max to 3x base"
- scenario: "Batch processing with known peak times"
base: "Baseline requirement"
auto_scale: "Enable, supplement with scheduled scaling if available"
- scenario: "Dev/test"
base: "1-2 OCPUs"
auto_scale: "Disable to control costs"
connection_impact:
connections_per_ocpu: 300
example: |
Base 8 OCPUs → 2,400 connections
Auto-scale to 16 OCPUs → 4,800 connections
Connection limits scale with OCPUs automatically
performance_during_scaling:
notes:
- "Active sessions are not interrupted during scale-up"
- "New connections get additional capacity immediately"
- "Scale-down uses connection draining — active sessions complete normally"
- "Brief performance dip possible during scaling transition"
gotchas:
- "Short bursts (<3 min) may complete before auto-scaling activates"
- "Very rapid burst from 0 to max can cause connection queuing"
- "Auto-scaling cost can surprise if workload is consistently above base"
- "Monitor auto-scaling events to right-size base OCPUs over time"

View File

@@ -0,0 +1,72 @@
# CPU Conversion Ratios: vCPU → OCPU
# Used for right-sizing when migrating from other platforms
conversion_ratios:
description: |
OCI uses OCPUs (Oracle Compute Units). 1 OCPU = 1 physical core = 2 vCPUs.
When migrating from AWS/Azure/GCP, convert vCPUs to OCPUs using these ratios.
# Source → OCI OCPU conversion
aws:
general:
ratio: "2 AWS vCPUs = 1 OCI OCPU"
notes: "AWS vCPU = 1 hyperthread. OCI OCPU = 1 physical core (2 threads)."
by_processor:
intel_xeon_2nd_gen: # m5, c5, r5
vcpu_to_ocpu: 2.0
intel_xeon_3rd_gen: # m6i, c6i, r6i
vcpu_to_ocpu: 2.0
amd_epyc_2nd_gen: # m5a, c5a, r5a
vcpu_to_ocpu: 2.0
notes: "OCI E4 (AMD EPYC 3rd gen) is typically faster per core"
graviton2: # m6g, c6g, r6g
vcpu_to_ocpu: 1.0
notes: "Graviton2 vCPU = 1 physical core. Map 1:1 to Ampere A1."
graviton3: # m7g, c7g, r7g
vcpu_to_ocpu: 1.0
notes: "Map to Ampere A2 for comparable performance."
azure:
general:
ratio: "2 Azure vCores = 1 OCI OCPU (for Intel/AMD)"
by_processor:
intel_dv5:
vcpu_to_ocpu: 2.0
amd_dv5a:
vcpu_to_ocpu: 2.0
on_prem:
oracle_database:
description: "Use AWR Top Activity to determine actual core utilization"
approach: |
1. Get AWR "DB Time per second" for P75 interval
2. Divide by number of available cores
3. Result = core utilization ratio
4. Multiply by source cores to get required OCPUs
5. Apply 1.2x headroom factor
fallback: "If no AWR data: 1 on-prem core = 1 OCPU (conservative)"
vmware:
ratio: "2 VMware vCPUs = 1 OCI OCPU"
notes: "VMware vCPU is a hyperthread equivalent"
adb_s_sizing:
description: |
For ADB-S, size base OCPUs for P75 sustained load:
- Auto-scaling can go up to 3x base OCPUs
- Auto-scaling activation takes 2-3 minutes
- If P95 spikes are short (< 2 min), they may hit before scale-out
- Size base for P75 to ensure good baseline performance
formula: |
base_ocpus = ceil(p75_cpu_usage / cores_per_ocpu * headroom_factor)
headroom_factor = 1.2 (default)
auto_scale_max = base_ocpus * 3
memory_sizing:
oci_shapes:
standard_e4: "16 GB per OCPU (VM.Standard.E4.Flex)"
standard_e5: "16 GB per OCPU (VM.Standard.E5.Flex)"
standard_a1: "6 GB per OCPU (VM.Standard.A1.Flex / Ampere)"
standard_a2: "8 GB per OCPU (VM.Standard.A2.Flex / Ampere)"
optimized3: "14 GB per OCPU (VM.Optimized3.Flex)"
dense_io_e4: "32 GB per OCPU + local NVMe (VM.DenseIO.E4.Flex)"

View File

@@ -0,0 +1,57 @@
---
last_verified: 2026-03-14
description: Memory sizing guidelines for OCI compute and database workloads.
---
compute_memory:
flexible_shapes:
min_gb_per_ocpu: 1
max_gb_per_ocpu: 64
default_gb_per_ocpu: 16
recommendation: |
Start with 16 GB per OCPU for general workloads.
Java applications: 8-16 GB per OCPU.
In-memory caches (Redis, Memcached): size for data set + 20%.
Database client/app servers: 8 GB per OCPU usually sufficient.
common_ratios:
general_purpose: 16 # GB per OCPU
memory_intensive: 32
compute_intensive: 8
java_application: 12
web_server: 8
database_memory:
adb_s:
notes: "Memory managed automatically by ADB. Not directly configurable."
sga_estimate: "~7 GB per OCPU"
pga_estimate: "~2.5 GB per OCPU"
exacs:
notes: "Memory allocated per VM cluster from Exadata infrastructure pool"
recommendation: "Size VM cluster memory based on SGA+PGA requirements"
typical_sga_per_ocpu: 8
typical_pga_per_ocpu: 3
dbcs:
notes: "Memory = compute shape memory. Choose shape accordingly."
recommendation: |
Total DB memory = SGA + PGA aggregate
SGA = 60-80% of available memory
PGA = 10-20% of available memory
OS overhead = 10-15%
sizing_from_source:
on_prem_oracle_to_oci:
steps:
- "Get current SGA + PGA sizes from AWR/ASH"
- "Add 15% for OS overhead"
- "Map to compute shape with sufficient memory"
- "For ADB: translate to OCPU count (memory scales automatically)"
notes: "ADB auto-tunes memory, so OCPU sizing is the key input"
aws_rds_to_oci:
steps:
- "Note current instance class memory"
- "Map to equivalent OCI shape memory"
- "For ADB: divide memory by 10 to estimate OCPU count"

View File

@@ -0,0 +1,74 @@
# OCI Storage IOPS and Throughput Reference
# Used for right-sizing block and file storage
block_volume:
description: "OCI Block Volume performance tiers"
tiers:
- name: "Lower Cost"
iops_per_gb: 2
max_iops: 3000
throughput_mbps_per_gb: 0.024
max_throughput_mbps: 480
use_when: "Archive, cold data, infrequent access"
- name: "Balanced"
iops_per_gb: 60
max_iops: 25000
throughput_mbps_per_gb: 0.48
max_throughput_mbps: 480
use_when: "General purpose, boot volumes, typical workloads"
default: true
- name: "Higher Performance"
iops_per_gb: 75
max_iops: 35000
throughput_mbps_per_gb: 0.6
max_throughput_mbps: 480
use_when: "Database data files, high-throughput applications"
- name: "Ultra High Performance"
iops_per_gb: 90
max_iops: 120000
throughput_mbps_per_gb: 0.72
max_throughput_mbps: 2680
use_when: "Extreme IOPS requirements, OLTP databases"
notes: "Only available with certain compute shapes"
sizing_guidance: |
1. Determine required IOPS (from AWR, CloudWatch, or application benchmarks)
2. Select tier that provides needed IOPS/GB ratio
3. Calculate minimum volume size: required_iops / iops_per_gb
4. Ensure volume size also covers storage capacity needs
5. If capacity-driven size exceeds IOPS needs, lower tier may suffice
object_storage:
tiers:
- name: "Standard"
use_when: "Frequently accessed data"
first_10tb_per_month: "$0.0255/GB"
- name: "Infrequent Access"
use_when: "Accessed < once per month"
retrieval_fee: true
min_retention: "31 days"
- name: "Archive"
use_when: "Rarely accessed, long-term retention"
restore_time: "1 hour"
min_retention: "90 days"
auto_tiering: |
Enable auto-tiering to automatically move objects between Standard and
Infrequent Access based on access patterns. No retrieval fee when
auto-tiering moves data back to Standard.
file_storage:
description: "OCI File Storage Service (NFS)"
performance: "Scales with file system size — larger = more IOPS/throughput"
iops_baseline: "Up to 50,000 IOPS"
throughput: "Up to 1.2 GB/s"
use_when:
- "Shared file system across multiple compute instances"
- "NFS-compatible workloads"
- "Kubernetes ReadWriteMany persistent volumes"
pricing: "$0.30/GB/month"

View File

@@ -0,0 +1,70 @@
---
last_verified: 2026-03-14
description: Storage performance characteristics across OCI storage tiers.
---
storage_tiers:
adb_serverless:
type: "Exadata managed storage"
iops_random_read: "Up to 600K per ADB instance"
iops_random_write: "Workload dependent"
throughput: "Scales with OCPUs"
latency_read_us: "<200 (Smart Scan eligible)"
latency_write_us: "<500"
notes: "Performance scales with OCPU count, Exadata Smart Scan offloads queries"
exadata_storage:
type: "Exadata Smart Storage"
iops_random_read: "Up to 6.4M per rack (X9M)"
throughput_gbps: "Up to 100 GB/s (X9M)"
smart_scan: true
flash_cache: true
hcc: true
notes: "Highest performance tier, Smart Scan can offload full table scans"
block_volume_balanced:
type: "Block Volume (Balanced)"
iops_per_gb: 60
max_iops: 25000
throughput_kbps_per_gb: 480
max_throughput_mbps: 480
latency_us: "Sub-millisecond"
block_volume_higher_performance:
type: "Block Volume (Higher Performance)"
iops_per_gb: 75
max_iops: 35000
throughput_kbps_per_gb: 600
max_throughput_mbps: 600
latency_us: "Sub-millisecond"
block_volume_uhp:
type: "Block Volume (Ultra High Performance)"
max_iops: 450000
max_throughput_mbps: 2680
notes: "Requires UHP-enabled shapes"
object_storage:
type: "Object Storage"
throughput: "High (parallel multipart uploads)"
latency: "Milliseconds (first byte)"
use_for: "Backups, archives, unstructured data"
not_for: "Random IOPS workloads"
file_storage:
type: "File Storage (NFS)"
max_iops: 25000
max_throughput_mbps: 1200
latency: "Sub-millisecond"
use_for: "Shared file access, NFS workloads"
sizing_from_source:
exadata_to_adb:
notes: "ADB-S on Exadata infra — performance is comparable or better"
recommendation: "Map directly, ADB auto-tunes storage"
physical_server_to_block_volume:
notes: "Match IOPS and throughput requirements to block volume tier"
recommendation: "Use Higher Performance for database, Balanced for app tier"
san_to_block_volume:
notes: "SAN IOPS vary widely — get actual metrics"
recommendation: "Size for P95 IOPS, test with fio before migration"

View File

@@ -0,0 +1,131 @@
# OCI Well-Architected Framework — Pillar 5: Distributed Cloud
# Source: https://docs.oracle.com/en/solutions/oci-best-practices/effective-strategies-distributed-cloud-implementation1.html
pillar:
name: "Distributed Cloud"
id: distributed_cloud
wa_reference: "https://docs.oracle.com/en/solutions/oci-best-practices/effective-strategies-distributed-cloud-implementation1.html"
reference: "https://docs.oracle.com/en/solutions/oci-best-practices/effective-strategies-distributed-cloud-implementation1.html"
conditional: true
applies_when: "multi_region OR hybrid_cloud OR multicloud OR data_residency_requirements OR sovereign_requirements"
categories:
- name: "Deployment Strategy"
id: dc_deployment_strategy
checks:
- id: DC-DEP-001
name: "Deployment model selected"
description: "Appropriate deployment model selected (public, dedicated, hybrid, multicloud)"
auto_detect:
pass_if: "deployment model explicitly chosen with justification"
gap_if: "no explicit deployment model decision"
severity: HIGH
applies_when: "distributed_cloud_applicable"
- id: DC-DEP-002
name: "Data residency mapping"
description: "Data residency requirements mapped to region selection"
auto_detect:
pass_if: "data residency requirements documented with region mapping"
gap_if: "data residency requirements exist but no region mapping"
severity: HIGH
applies_when: "has_data_residency_requirements"
- id: DC-DEP-003
name: "Sovereign/Dedicated Region"
description: "Sovereign Cloud or Dedicated Region considered if required"
auto_detect:
pass_if: "Sovereign Cloud or Dedicated Region evaluated"
gap_if: "sovereignty requirements exist without cloud model evaluation"
severity: HIGH
applies_when: "has_sovereign_requirements"
- name: "Integration Across Environments"
id: dc_integration
checks:
- id: DC-INT-001
name: "Consistent IAM"
description: "Consistent IAM across all locations"
auto_detect:
pass_if: "unified IAM strategy across all deployment locations"
gap_if: "separate, uncoordinated IAM in different locations"
severity: HIGH
applies_when: "distributed_cloud_applicable"
- id: DC-INT-002
name: "Data synchronization"
description: "Data synchronization strategy between sites"
auto_detect:
pass_if: "data sync strategy defined (replication, ETL, streaming)"
gap_if: "no data synchronization strategy between sites"
severity: HIGH
applies_when: "distributed_cloud_applicable"
- id: DC-INT-003
name: "Cross-environment networking"
description: "Network connectivity between environments (FastConnect, VPN, DRG)"
auto_detect:
pass_if: "network connectivity defined between all environments"
gap_if: "no network connectivity plan between environments"
severity: HIGH
applies_when: "distributed_cloud_applicable"
- name: "Compliance & Sovereignty"
id: dc_compliance
checks:
- id: DC-CMP-001
name: "Data residency laws"
description: "Regional data residency laws addressed"
auto_detect:
pass_if: "applicable data residency laws identified and addressed"
gap_if: "data residency laws not evaluated"
severity: HIGH
applies_when: "has_data_residency_requirements"
- id: DC-CMP-002
name: "Encryption key locality"
description: "Encryption key locality requirements met"
auto_detect:
pass_if: "encryption keys stored in required jurisdictions"
gap_if: "key locality requirements not addressed"
severity: HIGH
applies_when: "has_data_residency_requirements"
- id: DC-CMP-003
name: "Cross-environment audit"
description: "Audit trail spans all environments"
auto_detect:
pass_if: "unified audit across all deployment locations"
gap_if: "audit gaps between environments"
severity: MEDIUM
applies_when: "distributed_cloud_applicable"
- name: "Unified Operations"
id: dc_operations
checks:
- id: DC-OPS-001
name: "Single pane of glass"
description: "Single pane of glass monitoring across environments"
auto_detect:
pass_if: "centralized monitoring spanning all environments"
gap_if: "separate monitoring per environment"
severity: MEDIUM
applies_when: "distributed_cloud_applicable"
- id: DC-OPS-002
name: "IaC consistency"
description: "IaC consistency across all deployment targets"
auto_detect:
pass_if: "same IaC tooling and patterns across all environments"
gap_if: "different IaC approaches in different environments"
severity: MEDIUM
applies_when: "distributed_cloud_applicable"
- id: DC-OPS-003
name: "Operations feedback loop"
description: "Feedback loop from operations to design"
auto_detect:
pass_if: "operational feedback process defined"
gap_if: "no formal feedback loop from operations to architecture"
severity: LOW
applies_when: "distributed_cloud_applicable"

View File

@@ -0,0 +1,115 @@
# OCI Well-Architected Framework — Landing Zone Patterns
# Reference: https://docs.oracle.com/en/solutions/cis-oci-benchmark/
landing_zones:
- name: "CIS OCI Landing Zone"
id: cis_landing_zone
description: "CIS Benchmark-aligned landing zone with security best practices baked in"
reference: "https://github.com/oracle-quickstart/oci-cis-landingzone-quickstart"
use_when:
- "Enterprise customers requiring CIS compliance"
- "Greenfield OCI deployments"
- "Customers with regulatory requirements"
provides:
compartments:
- name: "Network"
purpose: "Hub VCN, DRG, FastConnect, VPN"
- name: "Security"
purpose: "Cloud Guard, Vault, Bastion, VSS"
- name: "AppDev"
purpose: "Application workloads, OKE, Functions"
- name: "Database"
purpose: "Database services, Data Safe"
- name: "ExaCS"
purpose: "Exadata Cloud Service (if applicable)"
networking:
- "Hub-spoke VCN topology via DRG"
- "Service Gateway for OCI service access"
- "NAT Gateway for outbound internet"
- "Bastion service for secure access"
- "NSGs for fine-grained network security"
identity:
- "Break-glass admin account"
- "Separation of duties (network, security, appdev admins)"
- "Least-privilege IAM policies"
- "Dynamic groups for instance principals"
security:
- "Cloud Guard with default recipes"
- "Security Zones for production"
- "VCN Flow Logs enabled"
- "OCI Vault for key management"
- "Vulnerability Scanning service"
governance:
- "Defined tags for cost tracking"
- "Budgets per compartment"
- "Notification topics for events"
- name: "Oracle Enterprise Landing Zone"
id: oelz
description: "Multi-environment enterprise landing zone with full lifecycle management"
reference: "https://github.com/oracle-quickstart/terraform-oci-open-lz"
use_when:
- "Large enterprise deployments"
- "Multi-workload environments"
- "Customers needing full environment isolation"
provides:
compartments:
- name: "Shared Infrastructure"
purpose: "Common services, networking hub, security"
- name: "Production"
purpose: "Production workloads with Security Zones"
- name: "Non-Production"
purpose: "Dev, test, staging environments"
- name: "Logging"
purpose: "Centralized logging and audit"
networking:
- "Hub VCN with Network Firewall option"
- "Spoke VCNs per workload/environment"
- "DRG for transit routing"
- "DNS views per environment"
identity:
- "Multiple Identity Domains"
- "Federated authentication"
- "Role-based access control"
security:
- "Cloud Guard with custom recipes"
- "Security Zones"
- "WAF integration"
- "Data Safe"
- name: "Minimal Landing Zone"
id: minimal_lz
description: "Lightweight landing zone for POCs, small workloads, or single-application deployments"
use_when:
- "Proof of concept"
- "Small workloads (< 10 resources)"
- "Single application deployment"
- "Developer sandbox"
provides:
compartments:
- name: "Workload"
purpose: "All resources for the workload"
networking:
- "Single VCN"
- "Public and private subnets"
- "Internet Gateway + NAT Gateway"
- "Service Gateway"
identity:
- "Basic IAM policies"
- "Instance principals for compute"
security:
- "Cloud Guard (default)"
- "Default encryption"
selection_criteria:
- condition: "regulatory_compliance OR enterprise_customer"
recommendation: "cis_landing_zone"
rationale: "CIS compliance provides strong security baseline and meets audit requirements"
- condition: "multi_environment AND large_enterprise"
recommendation: "oelz"
rationale: "Full environment isolation with centralized governance"
- condition: "poc OR small_workload OR single_application"
recommendation: "minimal_lz"
rationale: "Fast deployment without over-engineering; can upgrade to CIS later"

View File

@@ -0,0 +1,174 @@
# OCI Well-Architected Framework — Pillar 4: Operational Efficiency
# Source: https://docs.oracle.com/en/solutions/oci-best-practices/best-practices-operating-cloud-deployments-efficiency.html
pillar:
name: "Operational Efficiency"
id: operational_efficiency
wa_reference: "https://docs.oracle.com/en/solutions/oci-best-practices/best-practices-operating-cloud-deployments-efficiency.html"
reference: "https://docs.oracle.com/en/solutions/oci-best-practices/best-practices-operating-cloud-deployments-efficiency.html"
categories:
- name: "Deployment Strategy"
id: deployment_strategy
checks:
- id: OPS-DEP-001
name: "Infrastructure as Code"
description: "Infrastructure as Code (Terraform, Resource Manager) for all resources"
auto_detect:
pass_if: "Terraform or Resource Manager specified for infrastructure provisioning"
gap_if: "no IaC strategy specified"
severity: HIGH
applies_when: always
- id: OPS-DEP-002
name: "CI/CD pipeline"
description: "CI/CD pipeline defined for application deployment"
auto_detect:
pass_if: "CI/CD pipeline specified (OCI DevOps, Jenkins, GitLab, etc.)"
gap_if: "no CI/CD pipeline defined"
severity: MEDIUM
applies_when: "has_application_workloads"
- id: OPS-DEP-003
name: "Deployment strategy"
description: "Blue/green or canary deployment strategy for production changes"
auto_detect:
pass_if: "deployment strategy (blue/green, canary, rolling) defined"
gap_if: "no deployment strategy for production changes"
severity: MEDIUM
applies_when: "has_production_applications"
- id: OPS-DEP-004
name: "Environment parity"
description: "Environment parity (dev/staging/prod use same IaC templates)"
auto_detect:
pass_if: "same IaC templates used across environments with variable overrides"
gap_if: "different provisioning methods across environments"
severity: MEDIUM
applies_when: "has_multiple_environments"
- name: "Workload Monitoring"
id: workload_monitoring
checks:
- id: OPS-MON-001
name: "OCI Monitoring alarms"
description: "OCI Monitoring alarms configured for key metrics"
auto_detect:
pass_if: "monitoring alarms defined for CPU, memory, disk, network"
gap_if: "no monitoring alarms configured"
severity: HIGH
applies_when: always
- id: OPS-MON-002
name: "Custom application metrics"
description: "Custom metrics for application-specific KPIs"
auto_detect:
pass_if: "custom metrics defined for application performance"
gap_if: "no application-level monitoring beyond infrastructure metrics"
severity: MEDIUM
applies_when: "has_application_workloads"
- id: OPS-MON-003
name: "Logging Analytics"
description: "Logging Analytics for centralized log analysis"
auto_detect:
pass_if: "OCI Logging Analytics configured"
gap_if: "no centralized log analysis solution"
severity: MEDIUM
applies_when: always
- id: OPS-MON-004
name: "APM configured"
description: "APM configured for application tracing"
auto_detect:
pass_if: "OCI APM or third-party APM configured"
gap_if: "no application performance monitoring"
severity: LOW
applies_when: "has_application_workloads"
- id: OPS-MON-005
name: "Database Management"
description: "Database Management enabled for DB performance monitoring"
auto_detect:
pass_if: "OCI Database Management service enabled"
gap_if: "databases without performance monitoring"
severity: MEDIUM
applies_when: "has_databases"
- id: OPS-MON-006
name: "Ops Insights"
description: "Ops Insights for capacity planning"
auto_detect:
pass_if: "Ops Insights configured for capacity planning"
gap_if: "no capacity planning solution"
severity: LOW
applies_when: "has_production_workloads"
- name: "OS Management"
id: os_management
checks:
- id: OPS-OSM-001
name: "OS Management Hub"
description: "OS Management Hub for patch management"
auto_detect:
pass_if: "OS Management Hub configured for compute fleet"
gap_if: "no automated OS patch management"
severity: MEDIUM
applies_when: "has_compute_instances"
- id: OPS-OSM-002
name: "Automated patching schedule"
description: "Automated patching schedule for compute instances"
auto_detect:
pass_if: "patching schedule defined with maintenance windows"
gap_if: "no patching schedule for compute instances"
severity: MEDIUM
applies_when: "has_compute_instances"
- id: OPS-OSM-003
name: "Vulnerability remediation SLA"
description: "Vulnerability remediation SLA defined"
auto_detect:
pass_if: "vulnerability remediation timelines defined by severity"
gap_if: "no vulnerability remediation SLA"
severity: MEDIUM
applies_when: "has_compute_instances"
- name: "Operations Support"
id: operations_support
checks:
- id: OPS-SUP-001
name: "Support plan level"
description: "Support plan level appropriate for workload criticality"
auto_detect:
pass_if: "Oracle support plan level specified and matches criticality"
gap_if: "no support plan consideration"
severity: LOW
applies_when: always
- id: OPS-SUP-002
name: "Notification topics"
description: "Notification topics configured for operational events"
auto_detect:
pass_if: "OCI Notifications configured for operational events"
gap_if: "no notification configuration"
severity: MEDIUM
applies_when: always
- id: OPS-SUP-003
name: "Operational runbooks"
description: "Runbooks documented for common operational procedures"
auto_detect:
pass_if: "operational runbooks planned or documented"
gap_if: "no operational runbooks"
severity: LOW
applies_when: "has_production_workloads"
- id: OPS-SUP-004
name: "Automated remediation"
description: "OCI Events + Functions for automated remediation"
auto_detect:
pass_if: "event-driven automation configured for common issues"
gap_if: "no automated remediation"
severity: LOW
applies_when: "has_production_workloads"

Some files were not shown because too many files have changed in this diff Show More