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

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>