Compare commits
66 Commits
394b821579
...
automation
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6aea208129 | ||
|
|
4552ef7226 | ||
|
|
75203e7196 | ||
|
|
c22ba64bdb | ||
|
|
7ea17b2f9e | ||
|
|
ee15e1f45e | ||
|
|
a032e7980b | ||
|
|
198861f533 | ||
|
|
7f8cba7f30 | ||
|
|
ff77563133 | ||
|
|
1b4828f293 | ||
|
|
5566a171b0 | ||
|
|
eef213612c | ||
|
|
b77a855a3e | ||
|
|
5b8a6ad5ec | ||
|
|
c46219468f | ||
|
|
82d09aeee6 | ||
|
|
0b6ca3b776 | ||
|
|
357dd10670 | ||
|
|
fba2d23d5d | ||
|
|
d86adaf7cc | ||
|
|
a1ad3a6fa1 | ||
|
|
a0a059887a | ||
|
|
68d1753a74 | ||
|
|
3fb832e578 | ||
|
|
e384e627d1 | ||
|
|
e5a1959585 | ||
|
|
b30a4f0d32 | ||
|
|
2491c38d4b | ||
| d9b1bb52a4 | |||
|
|
9fbe05a6a5 | ||
|
|
9b4d04cf34 | ||
|
|
30394ece48 | ||
|
|
480c4bca52 | ||
|
|
433b08071b | ||
|
|
874d40d38a | ||
|
|
a22711c065 | ||
|
|
9d5cda8986 | ||
|
|
6de2251e00 | ||
|
|
77298a471c | ||
|
|
6209907a63 | ||
|
|
fc550c14bb | ||
|
|
490072a4b7 | ||
|
|
bcb16795d1 | ||
|
|
e57ab57b48 | ||
|
|
dc4abf3774 | ||
|
|
01baff1f5b | ||
|
|
aaf0ecc548 | ||
|
|
7cfb5dce2d | ||
|
|
98cb570e96 | ||
|
|
20be7c297e | ||
|
|
886c09ad10 | ||
|
|
4660b93a98 | ||
|
|
9db2e59e5b | ||
|
|
f6f355c465 | ||
|
|
32d82df197 | ||
|
|
4e80528d1e | ||
|
|
635863502d | ||
|
|
b4edc2914d | ||
|
|
a0feea08bb | ||
|
|
214b1c518e | ||
|
|
8726f14512 | ||
|
|
cd718f8628 | ||
|
|
4d3b3507f5 | ||
|
|
b0fcf8d0f3 | ||
|
|
d2b153c5ce |
@@ -17,32 +17,54 @@ You follow the **Oracle ECAL framework** (Define → Design → Deliver) to prod
|
||||
|
||||
When the user starts a conversation without providing discovery notes or a specific request, present the welcome message and capability menu.
|
||||
|
||||
### Pre-flight: KB freshness check
|
||||
### Pre-flight checks
|
||||
|
||||
**Before showing the welcome message**, run `python tools/kb_freshness.py --check --json` and parse the JSON output. Behavior based on the result:
|
||||
Run these checks silently **before** showing the welcome message. **CRITICAL:** Never show command execution, tool output, or errors to the user. If any check fails, silently skip it and proceed to the welcome message. These checks are informational — they NEVER block the user.
|
||||
|
||||
- **`stale_count == 0`** → proceed directly to the welcome message. No banner.
|
||||
- **`stale_count > 0` and at least one file has `refreshable: true`** → prepend this banner above the menu and ask the user inline:
|
||||
#### Check 1: KB changelog banner
|
||||
|
||||
Read the file `kb/CHANGELOG.md` and extract the **most recent date and first bullet point**. If the file exists and has entries, prepend a one-line banner above the welcome message:
|
||||
|
||||
```
|
||||
📢 KB updated (<date>): <first bullet summary>
|
||||
```
|
||||
|
||||
Example: `📢 KB updated (Apr 14): Diagram generator calibrated from 37 Oracle ref architectures`
|
||||
|
||||
If the file is missing or empty, skip — no banner.
|
||||
|
||||
#### Check 2: Local repo updates (git users only)
|
||||
|
||||
Run `git fetch --dry-run origin main 2>/dev/null`. If the output contains any text (meaning there are remote commits not yet pulled), prepend this banner:
|
||||
|
||||
```
|
||||
📢 KB updates available — run `git pull` to get latest prices and fixes.
|
||||
```
|
||||
|
||||
If the command fails (not a git repo, no network, MCP deployment), silently skip. This check is only relevant for users running the skill from a local git clone.
|
||||
|
||||
#### Check 3: KB freshness
|
||||
|
||||
Run `make kb-check 2>/dev/null` and parse the JSON output. Behavior:
|
||||
|
||||
- **`stale_count == 0`** → no banner.
|
||||
- **`stale_count > 0` and at least one file has `refreshable: true`** → prepend banner and ask inline:
|
||||
|
||||
```
|
||||
⚠️ KB freshness: <N> file(s) outdated (oldest: <file> — <age_days>d).
|
||||
<M> can be auto-refreshed (SKU catalog, Architecture Center).
|
||||
Refresh now before showing the menu? [y/N]
|
||||
<M> can be auto-refreshed. Refresh now? [y/N]
|
||||
```
|
||||
|
||||
- If the user replies `y` / `yes` / `sí` → run `python tools/kb_freshness.py --auto-refresh`, wait for completion, then show the menu.
|
||||
- If the user replies `n` / anything else → show the menu immediately, with a one-line compact reminder above it: `⚠️ <N> KB file(s) stale — run /freshness or python tools/kb_freshness.py --auto-refresh later.`
|
||||
- `y` / `yes` / `sí` → run `make freshness-refresh`, then show menu.
|
||||
- Anything else → show menu with one-line reminder: `⚠️ <N> KB file(s) stale — run make freshness-refresh later.`
|
||||
|
||||
- **`stale_count > 0` but no file has `refreshable: true`** (only manual files stale) → prepend a non-blocking informational banner above the menu, do NOT ask:
|
||||
- **`stale_count > 0` but no `refreshable: true`** → non-blocking info banner, then show menu directly:
|
||||
|
||||
```
|
||||
⚠️ KB freshness: <N> file(s) need manual review (oldest: <file> — <age_days>d).
|
||||
No automated refresh available — see kb/README.md for review process.
|
||||
```
|
||||
|
||||
Then show the menu directly.
|
||||
|
||||
**Important**: this check is informational, not gating. If `kb_freshness.py` errors out (exit 2 or missing tool), silently fall back to showing the welcome message — never block the user on tooling failures.
|
||||
If `make kb-check` errors out (exit ≠ 0, missing make, missing Python, missing tool), **silently skip** — no error output, no banner, no mention of failure.
|
||||
|
||||
### Welcome Message
|
||||
|
||||
@@ -63,10 +85,10 @@ Present these options as a compact numbered list. Each option has a bold title f
|
||||
```
|
||||
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*
|
||||
1. 📋 Full proposal — *notes → architecture + deck + native PPTX diagram + costs*
|
||||
2. 📐 Architecture diagram — *description/sketch → .excalidraw → .drawio or native PPTX*
|
||||
3. 📊 Slide deck — *architecture → .pptx with native OCI diagram*
|
||||
4. 💰 Cost estimate — *quick PAYG/BYOL comparison while you scope (terminal + optional deck)*
|
||||
|
||||
VALIDATE & CHECK
|
||||
─────────────────
|
||||
@@ -90,19 +112,78 @@ Present these options as a compact numbered list. Each option has a bold title f
|
||||
|
||||
SA TOOLS
|
||||
─────────────────
|
||||
13. 📦 BOM generator — *services + quantities → .xlsx Bill of Materials*
|
||||
13. 📦 BOM generator — *formal .xlsx artefact you send to the customer*
|
||||
14. 📤 BOM for AppCA — *BOM → .xlsx ready to import into AppCA*
|
||||
|
||||
━━━━━━━━━━━━━━━━━━━━━━━
|
||||
Pick a number, or just describe what you need.
|
||||
```
|
||||
|
||||
### Example Direct Requests
|
||||
|
||||
If the user asks for examples, or skips the menu and writes a natural-language request, prompts like these map directly to the capabilities above:
|
||||
|
||||
- `Generame un diagrama nativo en .pptx, simple y prolijo, de esta arquitectura: usuarios externos -> load balancer público -> 2 VMs de aplicación en subnet privada -> Autonomous Database Serverless. Quiero que quede presentable para mostrar directo en PowerPoint. No me pidas YAML ni setup adicional.`
|
||||
- `Sketch this architecture first for Excalidraw: external users -> public load balancer -> private app VMs -> Autonomous Database. Give me a native .excalidraw file so I can review and collaborate before making the formal diagram.`
|
||||
- `Generate a simple high-level integration diagram for this flow: Slack -> Oracle Integration Cloud (OIC) -> Jira Service Management -> My Oracle Support. Add clear Client, Oracle, and External layers. Use brand icons for Slack and Jira Service Management, and deliver both .drawio and .pptx.`
|
||||
- `Generate a high-level architecture diagram for this scenario: 1 PostgreSQL in OCI Ashburn, accessed from GCP Virginia through interconnect. PostgreSQL connects internally to 1 Autonomous Database Serverless, which also has 1 refreshable clone in the same region but in a different AD. Deliver both .drawio and .pptx. Keep it simple, executive-friendly, and technically correct.`
|
||||
- `Gere um BOM em USD para este cenário: PostgreSQL no OCI com 4 OCPU e 500 GB, ADB-S com 200 ECPU e 1 TB BYOL, 1 refreshable clone com o mesmo sizing e FastConnect de 1 Gbps. Aplique 11% de desconto, 12 meses, 24 horas por dia. Quero o arquivo .xlsx e um resumo claro do custo mensal e anual.`
|
||||
|
||||
### 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 **2**, ask **two explicit questions** in one message and wait for both answers before doing anything else:
|
||||
|
||||
```
|
||||
1. Describe the architecture you want to diagram (or paste a YAML spec if you have one).
|
||||
2. Which output format(s) do you want? Pick one or more:
|
||||
(a) sketch — native .excalidraw whiteboard draft for brainstorming
|
||||
(b) .drawio — editable technical diagram
|
||||
(c) .pptx — native Oracle-style PowerPoint diagram/slide
|
||||
(d) sketch + .drawio
|
||||
(e) sketch + .pptx
|
||||
(f) all
|
||||
```
|
||||
|
||||
If the user chooses **sketch only**, create a concise sketch spec and run `python tools/oci_excalidraw_gen.py --spec <sketch-spec.yaml> --output <output-dir>/architecture-sketch.excalidraw`. Save the generated `.excalidraw` file and companion `.md` instructions in the engagement output folder. Present the file list and the simple import/share workflow from the companion `.md` as the primary deliverable. Optionally save `architecture-sketch.mmd` as a secondary source when Mermaid is useful, but the native `.excalidraw` file is the draft artifact. Do not run the formal `absolute_layout` renderer unless the user asks to promote the sketch to `.drawio` or `.pptx`.
|
||||
|
||||
If the user chooses **sketch plus formal output**, produce the `.excalidraw` draft first and ask the user to confirm or adjust the intent before formal rendering. If the user explicitly says to generate all outputs without another checkpoint, generate the sketch and continue. If the user later uploads or references an edited `.excalidraw` from Excalidraw.com, treat it as visual discovery/reference input for the formal `.drawio` / `.pptx` flow; do not blindly convert its rough geometry into the final source of truth.
|
||||
|
||||
If the user provides an existing `.excalidraw` file and asks to convert it to `.drawio`, default to **Formal OCI diagram** unless they explicitly ask for a literal/whiteboard copy:
|
||||
- **Hard rule:** do **not** hand-roll draw.io XML with inline Python for this path. Use the repo tools below. If `python` is not available, use `.venv/bin/python` or `python3`; do not fall back to a custom converter.
|
||||
- **Formal OCI diagram (default)** — run `.venv/bin/python tools/excalidraw_to_oci_diagram.py --input <file.excalidraw> --output <output-dir>/<name>-oci.drawio --spec-output <output-dir>/<name>-oci.yaml`. This extracts the approved sketch intent, writes `*-analysis.yaml` and `*-review.md`, generates an `absolute_layout` YAML, then renders a new Oracle-style `.drawio` through `oci_diagram_gen.py` with OCI containers, icons, connector styles, and validators. For complex sketches (multicloud, hub-spoke, migration/cutover, cross-region DR, multiple regions/VCNs), run the same command with `--mode review` first, inspect/refine the generated analysis/spec, then render.
|
||||
- **Literal sketch conversion (secondary)** — run `.venv/bin/python tools/excalidraw_to_drawio.py --input <file.excalidraw> --output <output-dir>/<name>-literal.drawio` only when the user asks to preserve the exact whiteboard look. This is an editable bridge artifact and does **not** infer OCI icons/services.
|
||||
- **Both** — produce the formal OCI `.drawio` first, then the literal bridge if useful for comparison.
|
||||
|
||||
For any `.drawio` or `.pptx` output, **follow these steps in order — do NOT skip step 1**:
|
||||
1. **Reference-architecture lookup.** Run `python tools/archcenter_pattern_lookup.py "<topology keywords>"` against `kb/architecture-center/catalog.yaml` (123 Oracle-curated entries with cached `.drawio` / `_description.md` / `_template.yaml` under `kb/diagram/assets/archcenter-refs/`). Pick the highest-scoring entry whose topology matches.
|
||||
- **The cached `_template.yaml` is your YAML SCAFFOLD** — auto-extracted from the canonical `.drawio` by `tools/archcenter_drawio_to_template.py`. It carries Oracle's container geometry (region/vcn/ad/subnet bboxes), service positions, and edge waypoints in the `absolute_layout:` shape your spec uses. Copy it as the starting point, rename ids, fill in `type:` for services (the extractor leaves `type: TODO_identify` because the canonical icon TYPE is encoded in stencil bytes — pick the right alias from the renderer's TYPE_TO_ICON), and adapt to the customer's components. Lookup result surfaces it as `cached: yaml=<path>`.
|
||||
- **The cached `.drawio` is the visual source of truth** if the template extractor missed something — open it (drawio.exe, the SVG companion, or the XML) for the canonical look.
|
||||
- **Migration/cutover + multicloud templates.** Also check `kb/diagram/templates/catalog.yaml`. Use `renderable_templates` when the user asks for an operational cutover/runbook view (for example ADB-S → ADB-D with OGG forward/reverse replication) instead of a canonical steady-state Architecture Center topology.
|
||||
- **Do NOT use `examples/` as a geometry source.** `examples/` is previous user output, not authoritative. The `_template.yaml` covers everything `examples/` was being abused for.
|
||||
- **Lookup budget: max 2 queries — never loop.** If query 1 returns nothing convincing, run ONE refinement (broader phrasing or different keyword angle), then STOP. Re-querying the catalog 3+ times to find a "better" match is the dominant time-sink in this phase — the catalog has 123 entries indexed once; if two passes can't surface a topology match, none exists. Output of the lookup tool also surfaces a **`⚠ KNOWN GAP`** banner at the top whenever the query touches a documented gap (e.g. OCI-native services accessed FROM GCP via Cross-Cloud Interconnect, or OCI Cache/Redis/PostgreSQL as primary subject). When that banner appears, follow its **Recommended composition** verbatim instead of running more queries — it lists the primitives to combine. When NO gap banner appears AND no top-3 entry matches the topology, present the closest 3 to the user with: *"No exact ref-arch matches. Closest hits are X / Y / Z. I can either base the diagram on the closest of these (geometry transfers, service names don't), or compose from `<list specific slugs / patterns>`. Which?"* — let the user pick the chassis instead of guessing.
|
||||
2. **Pre-generation review.** Confirm the component list with the user (REQUESTED + TECHNICAL DEPENDENCIES per the whitelist).
|
||||
3. **Author the spec in `absolute_layout` shape** — this is REQUIRED. Do NOT use the legacy workload-driven shape (`tenancy → regions → compartments → services`); it does not resolve OCI icon stencils, does not run through the spec validator, and produces wireframe-looking output (rectangles with text instead of real OCI icons). Every container, service, label, and connection needs explicit `(x, y, w, h)`.
|
||||
|
||||
**Where to look up valid `type:` values for services:** the authoritative sources are (1) `TYPE_TO_ICON` in `tools/oci_pptx_diagram_gen.py` (PPTX path) and `ICON_TYPE_ALIASES` in `tools/oci_diagram_gen.py` (drawio path), and (2) the slug keys in `kb/diagram/oci-icons.json` (drawio) and `kb/diagram/oci-pptx-icons-index.json` (PPTX). Do NOT grep `examples/` for `type:` patterns to discover valid slugs — `examples/` are previous user outputs that may use stale or non-canonical slugs. Both renderer files and both index files are exhaustive and current.
|
||||
|
||||
**Newer OCI services without a toolkit icon** (OCI Cache with Redis / Valkey, OCI PostgreSQL, etc. — services GA after the v24.2 toolkit shipped): use the generic icon as the canonical fallback (Oracle's own ref archs do the same — they embed custom inline SVG over the generic icon). The renderer's alias tables already route `type: redis` / `cache` / `valkey` / `postgresql` to the generic `database` stencil. Pair with an explicit `label:` carrying the real service name (e.g. `label: "OCI Cache (Redis)"`). When Oracle ships a v25+ toolkit with these icons, update `kb/diagram/oci-icons.json` + the alias tables and the next render uses the real icon automatically.
|
||||
4. **Spec validator runs automatically** before either renderer (`tools/diagram_spec_validator.py`). It runs ONLY on `absolute_layout` specs — that's another reason workload-driven is forbidden. Fix any errors before re-rendering.
|
||||
5. **Render.** `oci_diagram_gen.py` for drawio, `oci_deck_gen.py` for PPTX.
|
||||
6. **Visually verify.** `tools/oci_pptx_render.py` to rasterize, then read the PNG.
|
||||
|
||||
Full reference: `docs/skill/output-formats.md` § "Standard diagram-generation procedure (MANDATORY)".
|
||||
- If the user picks **3**, ask: "Describe the architecture or paste the spec. I'll generate the deck with a native OCI PowerPoint diagram when the architecture is structured enough."
|
||||
- If the user picks **4**, ask: "What services and sizing? (e.g., 'ADB-S 8 OCPU + 2 VMs + FastConnect'). License model — PAYG, BYOL, or both?"
|
||||
Then follow the cost-estimate flow:
|
||||
1. **Catalog first, web never.** `grep` [`kb/pricing/oci-sku-catalog.yaml`](kb/pricing/oci-sku-catalog.yaml) (auto-refreshed, authoritative) for the requested SKUs and consult [`docs/bom-cookbook.md`](docs/bom-cookbook.md) for copy-paste recipes (ExaCS X11M BYOL, ADB-Dedicated, ADB-S + Block, FastConnect, etc.). Use `kb/pricing/compute.yaml` for shape-level lookups. Do NOT reach for WebSearch / WebFetch / `oracle.com` for list prices — the catalog IS the source.
|
||||
2. **Staleness gate.** Read `last_verified` at the top of the catalog. If >60 days stale, warn the user and offer `python tools/refresh_sku_catalog.py --refresh` before quoting. If <=60 days, proceed without web lookups.
|
||||
3. **Catalog miss policy.** If a SKU is genuinely absent after `grep` (not "I didn't find it on first try"), state it explicitly, then run `python tools/refresh_sku_catalog.py --refresh` and re-grep. Only if a fresh catalog still doesn't surface it is `oracle.com/cloud/price-list/` an acceptable fallback — and cite the source URL next to the part number.
|
||||
4. **Source extraction.** When the request references a customer artefact (`.pptx`, BOM, quote), extract the topology / sizing from the artefact first, list each scenario's components, then map to SKUs. Show the mapping (component → SKU) so the SA can audit it.
|
||||
5. **Quote shape.** Per scenario list: SKU + product name + metric + list price USD + quantity + monthly subtotal. End with total $/month and total $/year. Cite the catalog's `last_verified` date in the output.
|
||||
6. When both PAYG and BYOL are requested, present them side-by-side (same SKU rows, two price columns). Save the cost estimate to `examples/<customer>-cost-estimate.yaml` and present the formatted table in the terminal.
|
||||
7. **Disclaimer (mandatory).** Read the `disclaimer:` field from `kb/pricing/oci-sku-catalog.yaml` and append it verbatim — as a footer line under the terminal table, and (if a deck is generated) as a final "Commercial Disclaimer" slide. Do NOT paraphrase or rewrite; the field already carries Oracle's sample-quote boilerplate plus the "reference only / no client-specific discounts" clauses. `tools/oci_bom_gen.py` already reads this field for BOM xlsx output.
|
||||
8. **Deck verification (if a deck is generated).** Open the produced `.pptx` with `python-pptx` and assert: (a) slide count matches spec, (b) each slide's expected title is present, (c) chart types match what the spec asked for (e.g. `COLUMN_CLUSTERED`, `COLUMN_STACKED`), (d) the disclaimer slide is the last one. Print a one-line `deck OK: <N> slides, titles=[...]` summary so the SA can audit at a glance. Rasterizing to PNG via PowerPoint is not always available on Linux/WSL — structural validation is the floor, not optional.
|
||||
- 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
|
||||
@@ -121,13 +202,22 @@ Pick a number, or just describe what you need.
|
||||
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/oci-sku-catalog.yaml` (live SKU prices), `kb/pricing/compute.yaml` (shape-level), `kb/field-knowledge/pricing-knowledge.yaml` (billing models, BYOL rules, free tiers), 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)
|
||||
4. For ADB-S to ADB-D cases, use the reusable `adbs_to_adbd` model:
|
||||
- keep workload/billable ECPU demand separate from dedicated physical capacity (`DB nodes × ECPU per DB node`)
|
||||
- do not assume ADB-D uses 100% physical capacity; show utilization explicitly
|
||||
- keep workload demand comparable between ADB-S and ADB-D unless customer data says otherwise
|
||||
- model ADB-D fixed DB server + storage server infrastructure separately from workload ECPU
|
||||
- keep ADB-S as-is components explicit: primaries, local ADG, cross-region standby, refreshable/read clones, read clones, GoldenGate
|
||||
5. Separate financial views: current/as-is run-rate, target/to-be run-rate, forecasted TCO by horizon, and scenario comparison when applicable. Avoid ambiguous labels such as `OCI Annual`; use scenario labels like `ADB-S As-Is`, `ADB-D Dedicated`, `Incremental Investment`, and `TCO Crossover`.
|
||||
6. Generate companion BOMs for current as-is, to-be steady state, and 24M/36M projected as-is/to-be annual run-rate snapshots. Projected BOMs are not cumulative multi-year totals.
|
||||
7. Model read architecture explicitly: ADB-S may require refreshable/read clones because standby is not the application read path; ADB-D may use Local ADG read-only standby and retire steady-state clones. Reflect this in BOM notes, value drivers, and risk/value slides.
|
||||
8. Add storage economics: ADB-S per-GB storage, ADB-D fixed footprint, customer-provided base break-even when available, recalculated break-even for the proposed footprint, and visible storage offset.
|
||||
9. Treat GoldenGate as `steady_state`, `migration_bridge_only`, or `migration_plus_fallback_months`. Bridge-only GoldenGate is Year-1 / one-time and is excluded from future steady-state BOMs.
|
||||
10. Add a TCO crossover chart when multi-year forecast exists, defaulting to native PowerPoint grouped bars with executive labels (`Near-term`, `Year 1`, `Year 2`, `Year 3`) and delta bullets.
|
||||
11. For risk-reduction cases, generate a Business Value Model instead of generic ROI percentages. Do not invent revenue impact; convert stability to USD only when the customer provides revenue-at-risk, transaction margin, fraud loss impact, or cost per degraded/outage hour.
|
||||
12. Assess migration and inaction risks against the selected scenario only. Remove obsolete risks such as `if 4x3 is selected` after the customer has chosen `5x3`.
|
||||
13. Produce an executive deck using Oracle FY26 template (`config/oracle-pptx-layouts.yaml` → `business_case` type), plus business-case YAML and generated BOM artefacts where applicable.
|
||||
14. **Disclaimer + deck verification.** Append the `disclaimer:` field from `kb/pricing/oci-sku-catalog.yaml` as a final "Commercial Disclaimer" slide (verbatim — see option 4 step 7). Then run structural PPTX validation that reads text boxes, table cells, and grouped shapes; check slide count/titles, disclaimer-last, required assumptions, and forbidden obsolete phrases before reporting completion.
|
||||
- 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:
|
||||
@@ -173,7 +263,7 @@ Pick a number, or just describe what you need.
|
||||
|
||||
**BOM Output Rules:**
|
||||
- NEVER include "Confidential: Internal ONLY" or any confidentiality marking
|
||||
- ALWAYS include the Oracle Cost Estimator disclaimer at the bottom
|
||||
- ALWAYS include the disclaimer from `kb/pricing/oci-sku-catalog.yaml` `disclaimer:` field at the bottom — `tools/oci_bom_gen.py` reads it automatically (do not duplicate, paraphrase, or maintain a second copy elsewhere)
|
||||
- Only include SKUs the customer actually requested — never dump the full catalog
|
||||
- Show cost proportions so the customer can see where their spend concentrates
|
||||
- Use Excel formulas (not static values) so the customer can adjust quantities
|
||||
@@ -196,7 +286,7 @@ After delivering an output, show elapsed time and offer the natural next step.
|
||||
```
|
||||
✅ Done — [task description] completed in [Xm Ys]
|
||||
|
||||
→ [A] Generate additional outputs (drawio / doc / xlsx)
|
||||
→ [A] Generate additional outputs (sketch / 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
|
||||
@@ -254,6 +344,32 @@ Full tier definitions and artifact matrix: [docs/engagement-tiers.md](docs/engag
|
||||
|
||||
**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 1b — Extraction Receipt (MANDATORY).** After parsing discovery notes, present an extraction receipt to the user BEFORE proceeding. This ensures the architecture is built on confirmed facts, not assumptions:
|
||||
```
|
||||
📋 Extraction Receipt
|
||||
━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
From your input I extracted:
|
||||
|
||||
CONFIRMED (explicitly stated):
|
||||
• [field]: [value] — source: "[exact quote or reference from notes]"
|
||||
• [field]: [value] — source: "[exact quote or reference from notes]"
|
||||
|
||||
INFERRED (not stated, derived from context):
|
||||
• [field]: [value] — reason: "[why I inferred this]"
|
||||
|
||||
MISSING (needed but not provided):
|
||||
• [field] — needed for: [which artifact or decision needs it]
|
||||
|
||||
━━━━━━━━━━━━━━━━━━━━
|
||||
Confirm, correct, or fill gaps before I proceed.
|
||||
```
|
||||
Rules:
|
||||
- Every field in the workload profile that you populate must appear in either CONFIRMED or INFERRED.
|
||||
- Do NOT proceed to Step 2 until the user confirms the receipt.
|
||||
- If the user provides additional data, update the receipt and re-confirm.
|
||||
- When generating the workload-profile.yaml, tag each field with `source: customer` (confirmed), `source: inferred`, or `source: default` so the SA knows what to validate with the customer.
|
||||
|
||||
**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.
|
||||
@@ -287,7 +403,7 @@ Capture enough about current state to architect the future. Frame the problem
|
||||
|
||||
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.
|
||||
3. **Compose topology** from `kb/patterns/` blocks. Check conflicts and apply compliance overlays. Use `kb/patterns/application-patterns.yaml` for workload-type guidance. **Do NOT silently add components** — only add technical dependencies from the closed whitelist in the Guardrails section below. Everything else must be proposed as optional in the pre-generation review.
|
||||
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
|
||||
@@ -310,6 +426,28 @@ Capture enough about current state to architect the future. Frame the problem
|
||||
|
||||
#### Confirm (Solution Proposal)
|
||||
|
||||
**Completeness gate (MANDATORY before generating artifacts).** Before calling any generation tool (deck, diagram, BOM, PDF), verify that critical fields are populated based on engagement tier:
|
||||
|
||||
| Field | Small | Standard | Complex |
|
||||
|---|---|---|---|
|
||||
| customer_name | required | required | required |
|
||||
| workload_type | required | required | required |
|
||||
| databases (type + count) | required | required | required |
|
||||
| primary_region | required | required | required |
|
||||
| compliance_frameworks | — | required | required |
|
||||
| RTO / RPO | — | required | required |
|
||||
| team_size | — | required | required |
|
||||
| current_infrastructure | — | required | required |
|
||||
| migration_driver | — | required | required |
|
||||
| environment_strategy | — | — | required |
|
||||
| operational_model | — | — | required |
|
||||
| multi_region_topology | — | — | required |
|
||||
| data_residency | — | — | required |
|
||||
|
||||
- If **required** fields are missing: ask the user before generating.
|
||||
- If **optional** fields are missing: list them as assumptions in the output (e.g., "Assumed: PAYG pricing, single environment, no compliance requirements").
|
||||
- Fields tagged `source: inferred` in the workload profile count as populated but should be flagged as assumptions.
|
||||
|
||||
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)
|
||||
@@ -351,7 +489,7 @@ Full DELIVER guide: [docs/deliver-phase.md](docs/deliver-phase.md)
|
||||
|
||||
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.
|
||||
- **Options 1-4, 8:** Primary output is `.pptx` (slide deck), `.drawio` (diagram), and/or native `.excalidraw` sketch when the user requests draft mode. YAML/Mermaid specs are saved alongside when useful but never presented as the final 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`.
|
||||
@@ -364,6 +502,14 @@ See [docs/skill/output-formats.md](docs/skill/output-formats.md) for the per-cus
|
||||
|
||||
---
|
||||
|
||||
## Cookbook: Building Tool Payloads
|
||||
|
||||
Any pricing or SKU work — cost estimate (option 4), BOM (option 13), BOM-AppCA (option 14), business-case TCO (option 8), scenario comparison from a customer artefact (`.pptx`, BOM, quote) — starts in the local catalog, not on the web. Check [docs/bom-cookbook.md](docs/bom-cookbook.md) for copy-paste recipes (ExaCS X11M BYOL, ADB-Dedicated, ADB-S + Block + FastConnect) and the gotchas that otherwise burn exploration turns (e.g. ADB-Dedicated shares infrastructure SKUs with ExaCS — there are no separate `adb_dedicated` SKUs in the catalog).
|
||||
|
||||
If a requirement does not match a recipe, `grep` [`kb/pricing/oci-sku-catalog.yaml`](kb/pricing/oci-sku-catalog.yaml) and consult `kb/services/` before inventing SKUs. See "What You Do NOT Do" for the web-lookup rule and `kb/pricing/oci-sku-catalog.yaml`'s `last_verified` for staleness handling.
|
||||
|
||||
---
|
||||
|
||||
## Knowledge Base
|
||||
|
||||
KB lives under `kb/`. See [kb/README.md](kb/README.md) for the directory map, frontmatter requirements, refresh tooling, and contributor guide.
|
||||
@@ -418,23 +564,49 @@ KB lives under `kb/`. See [kb/README.md](kb/README.md) for the directory map, fr
|
||||
|
||||
## 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.
|
||||
- **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. The ONLY exception is the closed whitelist of technical dependencies below.
|
||||
|
||||
- **Technical dependency whitelist (closed — nothing else is auto-added):**
|
||||
|
||||
| If the user requests… | Auto-include | Reason |
|
||||
|---|---|---|
|
||||
| FastConnect | DRG | FastConnect terminates on DRG — cannot work without it |
|
||||
| VPN Connect | DRG | IPSec tunnels terminate on DRG |
|
||||
| ADB-S / ExaCS with backup to Object Storage | Service Gateway | Backup traffic requires SGW for Oracle Services Network |
|
||||
| Any service in a public subnet | Internet Gateway | Public subnet routing requires IGW |
|
||||
| Any private subnet service needing internet egress | NAT Gateway | Private-to-internet routing requires NAT |
|
||||
| Cross-region DR (Data Guard, FSDR) | Remote Peering Connection (RPC) | Cross-region VCN connectivity requires RPC on both DRGs |
|
||||
|
||||
Everything NOT in this table — including Monitoring, Logging, Events, Vault, Data Safe, WAF, Cloud Guard, Bastion, management subnets, compartment boundaries — requires explicit user approval via the pre-generation review.
|
||||
|
||||
- **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?
|
||||
- **MANDATORY pre-generation review.** Before generating ANY diagram, deck, or architecture artifact, you MUST confirm the component list with the user. Never skip this step. Present three clearly separated sections:
|
||||
```
|
||||
This takes 5 seconds to confirm and prevents rework.
|
||||
I'll generate with:
|
||||
|
||||
REQUESTED (from your input):
|
||||
✅ [only components explicitly mentioned by the user]
|
||||
|
||||
TECHNICAL DEPENDENCIES (auto-added per whitelist):
|
||||
⚙️ [only items from the whitelist table above, with reason]
|
||||
|
||||
OPTIONAL — want me to add any of these?
|
||||
○ Observability (Monitoring, Logging, Events)
|
||||
○ Security services (Vault, Data Safe, WAF, Cloud Guard)
|
||||
○ Management subnet
|
||||
○ Compartment boundaries
|
||||
○ Bastion / jump host
|
||||
○ [other relevant options based on context]
|
||||
|
||||
Generate with the above, or adjust?
|
||||
```
|
||||
Wait for the user's response before generating. If the user says "just generate" or equivalent, proceed with only REQUESTED + TECHNICAL DEPENDENCIES (no optionals).
|
||||
|
||||
- **Source attribution.** When the user provides documents, URLs, meeting notes, or external data:
|
||||
- Cite the source when extracting data: "From [document/source]: [extracted fact]"
|
||||
- Clearly separate facts from the source vs. your own inferences
|
||||
- If the source contradicts the internal KB, flag the conflict explicitly and let the architect decide
|
||||
|
||||
## What You Do NOT Do
|
||||
|
||||
@@ -442,6 +614,10 @@ KB lives under `kb/`. See [kb/README.md](kb/README.md) for the directory map, fr
|
||||
- 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 use WebSearch / WebFetch / `oracle.com` for OCI list prices or SKU lookups. `kb/pricing/oci-sku-catalog.yaml` is auto-refreshed via `tools/refresh_sku_catalog.py` (Oracle apexapps pricing API) and is the source of truth — including for ECPU/OCPU rates, BYOL deltas, Exadata X11M part numbers, and ADB-D ECPU SKUs. Web fallback is allowed ONLY when (a) the SKU is genuinely absent after `grep` AND a fresh `--refresh` still does not surface it, or (b) the catalog's `last_verified` is >60 days stale and a refresh is not currently possible. In either case, cite the source URL alongside the part number. Reflexively reaching for WebSearch when the catalog already has the answer is the most common cost-estimate failure mode — don't.
|
||||
- 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.
|
||||
- **The skill ships as an MCP server.** This repo is packaged and served via the hosted MCP at `https://mcp.tech-lad.com/deal-accelerator/mcp/`. Anything you change in the skill's runtime — `tools/`, `scripts/`, `kb/`, `SKILL.md`, `AGENTS.md`, `.agents/` — must keep working in that deployed environment, not just on the SA's laptop. Concrete implications: (1) NO machine-specific paths (use `pathlib.Path(__file__).resolve().parent.parent` or env vars, never hardcoded `/mnt/c/...` or `/home/diego/...`); (2) NO required network calls during normal operation (the MCP container won't have access to drawio.exe, paid APIs, or Diego's local files — opt-in via env vars like `DRAWIO_EXE` / `ANTHROPIC_API_KEY`, never required); (3) NO writes outside the repo tree (the MCP filesystem is the cloned repo, write only under `examples/`, `tmp/`, or the artifacts the skill is meant to produce); (4) NO new dependencies that aren't in `requirements.txt` (CI installs from there, the MCP container too); (5) any new tool must work in a fresh clone with `make venv` — no manual setup steps. Before adding a feature that depends on a binary, an external service, or a privileged operation, ask whether it'll work when the SA is hitting the MCP endpoint with no laptop attached.
|
||||
|
||||
- **You do NOT edit skill source code or tooling when the user is in "menu mode".** When the user invoked the skill via the welcome menu (options 1–14) or asked for one of the menu outputs (proposal, diagram, deck, BOM, WA review, etc.), your job is to USE the existing tools, not modify them. Do NOT touch `tools/`, `scripts/`, `kb/diagram/*.json`, or any other code/index file as part of fulfilling a menu request — even if you discover a bug or a missing alias mid-task. If you hit a tool gap (missing icon alias, broken renderer, type that doesn't resolve), surface it as a follow-up at the end of your reply (e.g. "I noticed `refreshable_clone` doesn't have a PPTX icon alias — flag this for the maintainer to add to `tools/oci_pptx_diagram_gen.py::TYPE_TO_ICON`") rather than silently patching it. Code edits happen in a separate "developer mode" engagement, not while the SA is generating customer artifacts. The two exceptions: (1) `kb/field-findings/tracker.yaml` via menu option 11 (the menu's purpose IS to write that file), and (2) writing the customer's spec/output YAML files under `examples/<customer>/` — those are the deliverable, not the skill itself.
|
||||
|
||||
20
.claude/settings.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"permissions": {
|
||||
"allow": [
|
||||
"Read(**)",
|
||||
"Write(examples/**)",
|
||||
"Write(output/**)",
|
||||
"Bash(python3.12:*)",
|
||||
"Bash(python3:*)",
|
||||
"Bash(.venv/bin/python:*)",
|
||||
"Bash(make:*)",
|
||||
"Bash(git:*)",
|
||||
"Bash(pip:*)",
|
||||
"Bash(pip3:*)",
|
||||
"Bash(pip3.12:*)",
|
||||
"Bash(ls:*)",
|
||||
"Bash(which:*)",
|
||||
"Bash(find:*)"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -74,7 +74,142 @@
|
||||
"WebFetch(domain:github.com)",
|
||||
"Bash(curl -s --max-time 15 -H \"X-Oracle-Accept-CurrencyCode: USD\" \"https://itra.oraclecloud.com/itas/.anon/myservices/api/v1/products?limit=2&partNumber=B110627\")",
|
||||
"Bash(curl -v --max-time 10 -H \"X-Oracle-Accept-CurrencyCode: USD\" \"https://itra.oraclecloud.com/itas/.anon/myservices/api/v1/products?limit=1\")",
|
||||
"Bash(curl -s --max-time 15 \"https://apexapps.oracle.com/pls/apex/cetools/api/v1/products/?partNumber=B110627¤cyCode=USD\")"
|
||||
"Bash(curl -s --max-time 15 \"https://apexapps.oracle.com/pls/apex/cetools/api/v1/products/?partNumber=B110627¤cyCode=USD\")",
|
||||
"Bash(find:*)",
|
||||
"Bash(echo \"exit=$?\")",
|
||||
"Bash(echo \"quiet exit=$?\")",
|
||||
"Bash(make freshness:*)",
|
||||
"Bash(echo \"freshness exit=$?\")",
|
||||
"Bash(make help:*)",
|
||||
"Bash(make lint:*)",
|
||||
"Bash(curl -sS \"https://apexapps.oracle.com/pls/apex/cetools/api/v1/products/?currencyCode=USD\")",
|
||||
"Bash(/bin/rm kb/pricing/ai-ml.yaml kb/pricing/analytics.yaml kb/pricing/containers-serverless.yaml kb/pricing/database.yaml kb/pricing/developer.yaml kb/pricing/hybrid-vmware.yaml kb/pricing/integration.yaml kb/pricing/networking.yaml kb/pricing/observability.yaml kb/pricing/pricing-models.yaml kb/pricing/security.yaml kb/pricing/storage.yaml)",
|
||||
"Bash(python3.12 tools/oci_deck_gen.py --spec examples/proposal-spec.yaml --output examples/output-cli-improvements-deliverables/architecture-proposal.pptx)",
|
||||
"Bash(python3.12 tools/oci_diagram_gen.py --spec examples/diagram-spec.yaml --output examples/output-cli-improvements-deliverables/architecture.drawio)",
|
||||
"Bash(python3.12 tools/oci_pdf_gen.py --spec examples/proposal-spec.yaml --output examples/output-cli-improvements-deliverables/customer-proposal.pdf)",
|
||||
"Bash(python3.12 tools/oci_bom_gen.py --spec examples/exacs-bom-spec.yaml --output examples/output-cli-improvements-deliverables/exacs-bom.xlsx)",
|
||||
"Bash(python3.12 tools/oci_bom_gen.py --spec examples/exacs-x11m-bom-spec.yaml --output examples/output-cli-improvements-deliverables/exacs-x11m-bom.xlsx)",
|
||||
"Bash(python3.12 tools/kb_cli.py search \"Autonomous Database\" --json)",
|
||||
"Bash(python3.12 tools/findings_cli.py search \"adb\" --product ADB-S --json)",
|
||||
"Bash(python3.12 tools/findings_cli.py stats --json)",
|
||||
"Bash(python3.12 tools/kb_cli.py arch-search --services adb-s exacs --tags ha-dr --json)",
|
||||
"Bash(python3.12 tools/kb_cli.py ecal-score --summary \"ADB-S migration with Data Guard business case architecture review customer profile strategy map handover go-live\" --json)",
|
||||
"Bash(python3.12 tools/oci_bom_gen.py --spec examples/exacs-bom-spec.yaml --output examples/output-cli-improvements-deliverables/exacs-bom-appca.xlsx --appca)",
|
||||
"Bash(python3.12 tools/oci_bom_gen.py --spec examples/exacs-x11m-bom-spec.yaml --output examples/output-cli-improvements-deliverables/exacs-x11m-bom-appca.xlsx --appca)",
|
||||
"Bash(python3.12:*)",
|
||||
"Bash(pip3.12 list:*)",
|
||||
"Bash(pip3.12 install:*)",
|
||||
"Bash(xargs ls:*)",
|
||||
"WebFetch(domain:www.drawio.com)",
|
||||
"WebFetch(domain:jgraph.github.io)",
|
||||
"WebFetch(domain:raw.githubusercontent.com)",
|
||||
"Bash(ls /root/.claude/projects/-mnt-c-Users-Diego-Documents-oci-deal-accelerator-oracle-oci-deal-accelerator/a0d00b4c-8d61-421c-8ba9-19bb85f15fdb/tool-results/*.zip)",
|
||||
"WebFetch(domain:developers.openai.com)",
|
||||
"Bash(echo \"---exit:$?---\")",
|
||||
"Bash(date +%s)",
|
||||
"Read(//tmp/**)",
|
||||
"Bash(.venv/bin/pip install *)",
|
||||
"Bash(curl -sS -o /dev/null -w \"HTTP:%{http_code} dns:%{remote_ip} time:%{time_total}s\\\\n\" --max-time 10 https://mcp.tech-lad.com/deal-accelerator/mcp/)",
|
||||
"Bash(curl -sS -o /dev/null -w \"oauth HTTP:%{http_code}\\\\n\" --max-time 10 https://mcp.tech-lad.com/oauth/authorize)",
|
||||
"mcp__oci-deal-accelerator__generate_deck",
|
||||
"mcp__oci-deal-accelerator__generate_business_case",
|
||||
"mcp__oci-deal-accelerator__generate_bom",
|
||||
"mcp__oci-deal-accelerator__generate_bom_appca",
|
||||
"Bash(mkdir -p /tmp/mcp-test-outputs)",
|
||||
"Bash(curl -sS -o deck-nova.pptx \"https://mcp.tech-lad.com/deal-accelerator/files/176ac90e-test-nova-retail-deck.pptx\")",
|
||||
"Bash(curl -sS -o biz-nova.pptx \"https://mcp.tech-lad.com/deal-accelerator/files/42dd4da2-test-nova-retail-bizcase.pptx\")",
|
||||
"Bash(curl -sS -o bom-vector.xlsx \"https://mcp.tech-lad.com/deal-accelerator/files/3868d74a-test-vector-retail-bom.xlsx\")",
|
||||
"Bash(curl -sS -o bom-vector-appca.xlsx \"https://mcp.tech-lad.com/deal-accelerator/files/b34fa397-test-vector-retail-bom-appca.xlsx\")",
|
||||
"Bash(curl -sS -o /tmp/mcp-test-outputs/biz-nova.pptx \"https://mcp.tech-lad.com/deal-accelerator/files/42dd4da2-test-nova-retail-bizcase.pptx\")",
|
||||
"Bash(curl -sS -o /tmp/mcp-test-outputs/bom-vector.xlsx \"https://mcp.tech-lad.com/deal-accelerator/files/3868d74a-test-vector-retail-bom.xlsx\")",
|
||||
"Bash(curl -sS -o /tmp/mcp-test-outputs/bom-vector-appca.xlsx \"https://mcp.tech-lad.com/deal-accelerator/files/b34fa397-test-vector-retail-bom-appca.xlsx\")",
|
||||
"Bash(curl -sS -o /tmp/mcp-test-outputs/deck-vector.pptx \"https://mcp.tech-lad.com/deal-accelerator/files/19c5330e-test-vector-bank-deck.pptx\")",
|
||||
"Bash(curl -sS -o /tmp/mcp-test-outputs/biz-digital.pptx \"https://mcp.tech-lad.com/deal-accelerator/files/16b90f10-test-vector-digital-bizcase.pptx\")",
|
||||
"Bash(curl -sS -o /dev/null -w \"git remote HTTP: %{http_code} time: %{time_total}s\\\\n\" --max-time 15 https://git.tech-lad.com.br/)",
|
||||
"Bash(awk '/- sku:/{sku=$NF} /product:/{print sku\" - \"$0}' kb/pricing/oci-sku-catalog.yaml)",
|
||||
"Bash(awk '{print $3}')",
|
||||
"Bash(awk '/- sku: B110627|- sku: B110628|- sku: B110629|- sku: B90453/{print;f=1;next} f&&/product:/{print;f=0}' kb/pricing/oci-sku-catalog.yaml)",
|
||||
"Bash(awk '/- sku:/{sku=$NF} /product:.*Exadata|product:.*ECPU|product:.*Autonomous/{print sku\" - \"$0}' kb/pricing/oci-sku-catalog.yaml)",
|
||||
"Bash(awk '/- sku: B90453/,/product:/' kb/pricing/oci-sku-catalog.yaml)",
|
||||
"Bash(awk '/- sku:/{sku=$NF} /product:.*ADB|product:.*NoSQL|product:.*HeatWave|product:.*MySQL/{print sku\" - \"$0}' kb/pricing/oci-sku-catalog.yaml)",
|
||||
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" --help)",
|
||||
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png -b 10 -o \"tmp/compare-iter/iter1.png\" \"tmp/compare-iter/iter1.drawio\")",
|
||||
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png -b 20 --crop -s 2 -o tmp/compare-iter/iter4_crop.png tmp/compare-iter/iter4.drawio)",
|
||||
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png -b 20 --crop -s 2 -o tmp/compare-iter/REFERENCE.png examples/output-meli-fraud-adbd-migration/adbsplusadbd.drawio)",
|
||||
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png -b 30 --crop -s 3 -o tmp/compare-iter/iter6_hires.png tmp/compare-iter/iter6.drawio)",
|
||||
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png -b 20 --crop -s 3 -o tmp/compare-iter/to_be_v1_hires.png tmp/compare-iter/to_be_v1.drawio)",
|
||||
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png -b 40 -s 4 -o tmp/compare-iter/to_be_v1_4x.png tmp/compare-iter/to_be_v1.drawio)",
|
||||
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png --crop -b 20 --width 3000 -o tmp/compare-iter/to_be_v1_w3000.png tmp/compare-iter/to_be_v1.drawio)",
|
||||
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png -b 20 --crop --width 4500 -o tmp/compare-iter/to_be_v1_w4500.png tmp/compare-iter/to_be_v1.drawio)",
|
||||
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png -b 30 --crop --width 5000 -o tmp/compare-iter/as_is_final.png examples/output-meli-fraud-adbd-migration/fraud-as-is-adbs.drawio)",
|
||||
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png -b 30 --crop --width 5000 -o tmp/compare-iter/to_be_final.png examples/output-meli-fraud-adbd-migration/fraud-to-be-adbd.drawio)",
|
||||
"Bash(curl -sL \"https://docs.oracle.com/en/solutions/deploy-autonomous-database-db-at-azure/index.html\" -o tmp/oracle-ref-archs/adb-azure.html)",
|
||||
"Bash(curl -sL -w 'HTTP:%{http_code} size:%{size_download}\\\\n' \"https://docs.oracle.com/en/solutions/deploy-autonomous-database-db-at-azure/index.html\" -o /tmp/x.html)",
|
||||
"Bash(curl -sL -w 'HTTP:%{http_code} size:%{size_download}\\\\n' \"https://docs.oracle.com/en/solutions/deploy-autonomous-database-db-at-azure/img/autonomous-database-db-azure-diagram-oracle.zip\" -o adb-azure.zip)",
|
||||
"Bash(unzip -l adb-azure.zip)",
|
||||
"Bash(unzip -o -q adb-azure.zip)",
|
||||
"Bash(mv oracle-adb-jde-exadata-arch-oracle *)",
|
||||
"Bash(curl -sL \"https://docs.oracle.com/en/solutions/dataguard-exadata-dedicated-infrastructure/index.html\" -o dg-exa-dedicated.html)",
|
||||
"Bash(curl -sL \"https://docs.oracle.com/en/solutions/dataguard-exadata-dedicated-infrastructure/img/exadata-dedicated-region-dataguard.zip\" -o dg-exa-region.zip)",
|
||||
"Bash(curl -sL \"https://docs.oracle.com/en/solutions/dataguard-exadata-dedicated-infrastructure/img/exadata-dedicated-cross-region-dataguard.zip\" -o dg-exa-cross-region.zip)",
|
||||
"Bash(unzip -o -q dg-exa-region.zip)",
|
||||
"Bash(unzip -o -q dg-exa-cross-region.zip)",
|
||||
"Bash('/mnt/c/Program Files/draw.io/draw.io.exe' -x -f png -b 20 --crop -o /mnt/c/Users/Diego/Documents/oci-deal-accelerator-oracle/oci-deal-accelerator/tmp/oracle-ref-archs/oracle-adb-jde-exadata-arch-oracle/oracle-adb-jde-exadata-arch.png /mnt/c/Users/Diego/Documents/oci-deal-accelerator-oracle/oci-deal-accelerator/tmp/oracle-ref-archs/oracle-adb-jde-exadata-arch-oracle/oracle-adb-jde-exadata-arch.drawio)",
|
||||
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png -b 20 --crop -s 2 -o /mnt/c/Users/Diego/Documents/oci-deal-accelerator-oracle/oci-deal-accelerator/tmp/oracle-ref-archs/oracle-adb-jde-exadata-arch-oracle/oracle-adb-jde-exadata-arch.png /mnt/c/Users/Diego/Documents/oci-deal-accelerator-oracle/oci-deal-accelerator/tmp/oracle-ref-archs/oracle-adb-jde-exadata-arch-oracle/oracle-adb-jde-exadata-arch.drawio)",
|
||||
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png -b 20 --crop -s 2 -o tmp/oracle-ref-archs/oracle-adb-jde-exadata-arch-oracle/rendered.png tmp/oracle-ref-archs/oracle-adb-jde-exadata-arch-oracle/oracle-adb-jde-exadata-arch.drawio)",
|
||||
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png -b 20 --crop -s 2 -o tmp/compare-iter/fraud-as-is-template.png examples/output-meli-fraud-adbd-migration/fraud-as-is-template.drawio)",
|
||||
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png -b 20 --crop -s 2 -o tmp/compare-iter/fraud-to-be-template.png examples/output-meli-fraud-adbd-migration/fraud-to-be-template.drawio)",
|
||||
"WebFetch(domain:www.bugraparlayan.com.tr)",
|
||||
"WebFetch(domain:www.infolob.com)",
|
||||
"Bash(curl -sS \"https://git.tech-lad.com.br/api/v1/repos/diegoecab/oci-deal-accelerator/actions/runs?limit=10\")",
|
||||
"Bash(curl -sS \"https://git.tech-lad.com.br/api/v1/repos/diegoecab/oci-deal-accelerator/actions/secrets\")",
|
||||
"Bash(curl -sS -o /dev/null -w \"%{http_code}\\\\n\" \"https://git.tech-lad.com.br/api/v1/repos/diegoecab/oci-deal-accelerator\")",
|
||||
"Bash(curl -sS \"https://git.tech-lad.com.br/diegoecab/oci-deal-accelerator/raw/branch/main/.gitea/workflows/sku-catalog-refresh.yaml\")",
|
||||
"Bash(curl -sS -o /dev/null -w \"%{http_code}\\\\n\" \"https://git.tech-lad.com.br/diegoecab/oci-deal-accelerator/raw/branch/main/.gitea/workflows/sku-catalog-refresh.yaml\")",
|
||||
"Bash(curl -sS \"https://git.tech-lad.com.br/api/v1/repos/diegoecab/oci-deal-accelerator/issues?type=issues&state=open&limit=5&sort=newest\")",
|
||||
"Bash(curl -sS \"https://git.tech-lad.com.br/api/v1/repos/diegoecab/oci-deal-accelerator/branches?limit=50\")",
|
||||
"Bash(curl -sS \"https://git.tech-lad.com.br/api/v1/repos/diegoecab/oci-deal-accelerator\")",
|
||||
"Bash(xargs -n1 grep -l '\"fidelity\"')",
|
||||
"Bash(xargs '-I{}' .venv/bin/python -c ' *)",
|
||||
"Bash(apt-cache show *)",
|
||||
"Bash(apt list *)",
|
||||
"Read(//mnt/c/Program Files/draw.io/**)",
|
||||
"Read(//mnt/c/Users/Diego/AppData/Local/Programs/draw.io/**)",
|
||||
"Read(//mnt/c/**)",
|
||||
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png -o /tmp/test-drawio.png examples/dataguard-exa-dedicated-in-region/out/dataguard-exa-dedicated-in-region.drawio)",
|
||||
"Bash(mkdir -p /mnt/c/Users/Diego/tmp-drawio-export)",
|
||||
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png -s 2 -o /mnt/c/Users/Diego/tmp-drawio-export/test.png examples/dataguard-exa-dedicated-in-region/out/dataguard-exa-dedicated-in-region.drawio)",
|
||||
"Bash(mkdir -p '/mnt/c/Users/Diego/tmp-drawio-export')",
|
||||
"Bash('/mnt/c/Program Files/draw.io/draw.io.exe' -x -f png -s 2 -o 'C:\\\\Users\\\\Diego\\\\tmp-drawio-export\\\\test.png' 'C:\\\\Users\\\\Diego\\\\Documents\\\\oci-deal-accelerator-oracle\\\\oci-deal-accelerator\\\\examples\\\\dataguard-exa-dedicated-in-region\\\\out\\\\dataguard-exa-dedicated-in-region.drawio')",
|
||||
"Bash(DRAWIO_EXE=\"/mnt/c/Program Files/draw.io/draw.io.exe\" .venv/bin/python tools/drawio_to_png.py --drawio examples/asis-tobe-adb-modernization/out/asis-adb-s-local-dr.drawio --out tmp/drawio-renders/asis-v3.png)",
|
||||
"Bash(DRAWIO_EXE=\"/mnt/c/Program Files/draw.io/draw.io.exe\" .venv/bin/python tools/drawio_to_png.py --drawio examples/asis-tobe-adb-modernization/out/tobe-adb-d-active-dataguard.drawio --out tmp/drawio-renders/tobe-v3.png)",
|
||||
"Bash(DRAWIO_EXE=\"/mnt/c/Program Files/draw.io/draw.io.exe\" .venv/bin/python tools/drawio_to_png.py --drawio examples/asis-tobe-adb-modernization/out/asis-adb-s-local-dr.drawio --out tmp/drawio-renders/asis-v4.png)",
|
||||
"Bash(DRAWIO_EXE=\"/mnt/c/Program Files/draw.io/draw.io.exe\" .venv/bin/python tools/drawio_to_png.py --drawio examples/asis-tobe-adb-modernization/out/tobe-adb-d-active-dataguard.drawio --out tmp/drawio-renders/tobe-v4.png)",
|
||||
"Bash(DRAWIO_EXE=\"/mnt/c/Program Files/draw.io/draw.io.exe\" .venv/bin/python tools/drawio_to_png.py --drawio examples/asis-tobe-adb-modernization/out/asis-adb-s-local-dr.drawio --out tmp/drawio-renders/asis-v5.png)",
|
||||
"Bash(DRAWIO_EXE=\"/mnt/c/Program Files/draw.io/draw.io.exe\" .venv/bin/python tools/drawio_to_png.py --drawio examples/asis-tobe-adb-modernization/out/tobe-adb-d-active-dataguard.drawio --out tmp/drawio-renders/tobe-v5.png)",
|
||||
"Bash(DRAWIO_EXE=\"/mnt/c/Program Files/draw.io/draw.io.exe\" .venv/bin/python tools/drawio_to_png.py --drawio examples/asis-tobe-adb-modernization/out/asis-adb-s-local-dr.drawio --out tmp/drawio-renders/asis-v6.png)",
|
||||
"Bash(DRAWIO_EXE=\"/mnt/c/Program Files/draw.io/draw.io.exe\" .venv/bin/python tools/drawio_to_png.py --drawio examples/asis-tobe-adb-modernization/out/tobe-adb-d-active-dataguard.drawio --out tmp/drawio-renders/tobe-v6.png)",
|
||||
"Bash(DRAWIO_EXE=\"/mnt/c/Program Files/draw.io/draw.io.exe\" .venv/bin/python tools/drawio_to_png.py --drawio examples/asis-tobe-adb-modernization/out/asis-adb-s-local-dr.drawio --out tmp/drawio-renders/asis-v7.png)",
|
||||
"Bash(DRAWIO_EXE=\"/mnt/c/Program Files/draw.io/draw.io.exe\" .venv/bin/python tools/drawio_to_png.py --drawio examples/asis-tobe-adb-modernization/out/tobe-adb-d-active-dataguard.drawio --out tmp/drawio-renders/tobe-v7.png)",
|
||||
"Bash(DRAWIO_EXE=\"/mnt/c/Program Files/draw.io/draw.io.exe\" .venv/bin/python tools/drawio_to_png.py --drawio examples/asis-tobe-adb-modernization/out/tobe-adb-d-active-dataguard.drawio --out tmp/drawio-renders/tobe-v9.png)",
|
||||
"Bash(DRAWIO_EXE=\"/mnt/c/Program Files/draw.io/draw.io.exe\" .venv/bin/python tools/drawio_to_png.py --drawio examples/asis-tobe-adb-modernization/out/tobe-adb-d-active-dataguard.drawio --out tmp/drawio-renders/tobe-final.png)",
|
||||
"Bash(DRAWIO_EXE=\"/mnt/c/Program Files/draw.io/draw.io.exe\" .venv/bin/python tools/drawio_to_png.py --drawio examples/asis-tobe-adb-modernization/out/asis-adb-s-local-dr.drawio --out tmp/drawio-renders/asis-final2.png)",
|
||||
"Bash(DRAWIO_EXE=\"/mnt/c/Program Files/draw.io/draw.io.exe\" .venv/bin/python tools/drawio_to_png.py --drawio examples/asis-tobe-adb-modernization/out/tobe-adb-d-active-dataguard.drawio --out tmp/drawio-renders/tobe-final2.png)",
|
||||
"Bash(.githooks/pre-commit)",
|
||||
"Bash(unzip -l awr_Transactional.zip)",
|
||||
"Bash(mkdir -p /tmp/awr_meli)",
|
||||
"Bash(unzip -o \"/mnt/c/Users/Diego/Documents/Meli/ABD-M/April 2026 - Fraude ADB-S to ADB-D/awr_Transactional.zip\")",
|
||||
"Bash(cp \"/mnt/c/Users/Diego/Documents/Meli/ABD-M/April 2026 - Fraude ADB-S to ADB-D/meli-fraud-adbd-arch.pptx\" /tmp/meli-fraud-adbd-arch.pptx)",
|
||||
"Bash(unzip -o meli-fraud-adbd-arch.pptx -d meli-pptx-extracted/)",
|
||||
"Bash(cp -f \"/mnt/c/Users/Diego/Documents/Meli/ABD-M/April 2026 - Fraude ADB-S to ADB-D/meli-fraud-adbd-arch.pptx\" /tmp/meli-fraud-adbd-arch.pptx)",
|
||||
"Bash(rm -rf /tmp/meli-pptx-extracted)",
|
||||
"Bash(unzip -oq /tmp/meli-fraud-adbd-arch.pptx -d /tmp/meli-pptx-extracted/)",
|
||||
"Bash(cp -f \"/mnt/c/Users/Diego/Documents/Meli/ABD-M/April 2026 - Fraude ADB-S to ADB-D/meli-fraud-adbd-arch.pptx\" meli-fraud-adbd-arch.pptx)",
|
||||
"Bash(rm -rf meli-pptx-extracted)",
|
||||
"Bash(unzip -oq meli-fraud-adbd-arch.pptx -d meli-pptx-extracted/)",
|
||||
"Bash(yes)",
|
||||
"WebFetch(domain:blog.shadabmohammad.com)",
|
||||
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png --scale 1 -o \"$\\(pwd\\)/examples/output-aws-mysql-to-oci-heatwave-fsdr/aws-mysql-to-heatwave-fsdr.png\" \"$\\(pwd\\)/examples/output-aws-mysql-to-oci-heatwave-fsdr/aws-mysql-to-heatwave-fsdr.drawio\")"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
21
.codex/config.toml
Normal file
@@ -0,0 +1,21 @@
|
||||
# Codex project configuration for OCI Deal Accelerator
|
||||
# Applies to every user who opens this project with Codex CLI.
|
||||
|
||||
# Allow the agent to run commands without per-command approval prompts.
|
||||
approval_policy = "never"
|
||||
|
||||
# Workspace-write: agent can write inside the project root but not system-wide.
|
||||
sandbox_mode = "workspace-write"
|
||||
|
||||
[sandbox_workspace_write]
|
||||
# Allow network access so `pip install -r requirements.txt` and `make venv`
|
||||
# can actually download dependencies. Without this, Codex blocks PyPI.
|
||||
network_access = true
|
||||
writable_roots = []
|
||||
exclude_tmpdir_env_var = false
|
||||
exclude_slash_tmp = false
|
||||
|
||||
[shell_environment_policy]
|
||||
# Inherit the user's shell env so python3.12 / python3 resolution works
|
||||
# the same way as the Makefile expects.
|
||||
inherit = "all"
|
||||
50
.gitea/workflows/deploy.yaml
Normal file
@@ -0,0 +1,50 @@
|
||||
# Auto-deploy OCI Deal Accelerator skill to MCP server on every push to main.
|
||||
# Requires secrets: OCI_SSH_KEY (private key), OCI_HOST (DNS alias).
|
||||
name: Deploy Skill to OCI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 5
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup SSH
|
||||
run: |
|
||||
mkdir -p ~/.ssh
|
||||
echo "${{ secrets.OCI_SSH_KEY }}" > ~/.ssh/deploy_key
|
||||
chmod 600 ~/.ssh/deploy_key
|
||||
ssh-keyscan -H ${{ secrets.OCI_HOST }} >> ~/.ssh/known_hosts 2>/dev/null
|
||||
|
||||
- name: Sync skill to server
|
||||
run: |
|
||||
tar --exclude='.git' --exclude='.gitea' -czf /tmp/skill.tar.gz .
|
||||
scp -i ~/.ssh/deploy_key /tmp/skill.tar.gz ubuntu@${{ secrets.OCI_HOST }}:/tmp/skill.tar.gz
|
||||
ssh -i ~/.ssh/deploy_key ubuntu@${{ secrets.OCI_HOST }} '
|
||||
rm -rf /home/ubuntu/oci-deal-accelerator-oracle/oci-deal-accelerator/*
|
||||
tar -xzf /tmp/skill.tar.gz -C /home/ubuntu/oci-deal-accelerator-oracle/oci-deal-accelerator/
|
||||
rm /tmp/skill.tar.gz
|
||||
'
|
||||
|
||||
- name: Restart containers
|
||||
run: |
|
||||
ssh -i ~/.ssh/deploy_key ubuntu@${{ secrets.OCI_HOST }} '
|
||||
cd /home/ubuntu/skills-platform &&
|
||||
docker compose -f docker-compose.prod.yaml restart tools-service mcp-deal-accelerator
|
||||
'
|
||||
|
||||
- name: Wait for healthy
|
||||
run: |
|
||||
ssh -i ~/.ssh/deploy_key ubuntu@${{ secrets.OCI_HOST }} '
|
||||
timeout 60 bash -c "
|
||||
until docker inspect --format=\"{{.State.Health.Status}}\" mcp-deal-accelerator 2>/dev/null | grep -q healthy; do
|
||||
sleep 3
|
||||
done
|
||||
"
|
||||
'
|
||||
75
.gitea/workflows/diagram-validators.yaml
Normal file
@@ -0,0 +1,75 @@
|
||||
# Diagram-validator gate.
|
||||
#
|
||||
# Runs on every push and PR. Two checks:
|
||||
#
|
||||
# 1. diagram-spec-audit — every absolute_layout spec under examples/
|
||||
# passes tools/diagram_spec_validator.py (geometry rules:
|
||||
# CONTAINER_TOO_THIN, CONTAINER_PADDING_VIOLATION,
|
||||
# LABEL_OVERFLOW_PARENT). Hard fail surfaces the regressions
|
||||
# Diego flagged on the MySQL HeatWave HA example.
|
||||
#
|
||||
# 2. drawio-validators-smoke — re-renders the canonical example with
|
||||
# tools/oci_diagram_gen.py so the post-render
|
||||
# drawio_visual_validator runs (font sizes, dangling edges,
|
||||
# duplicate ids, off-canvas geometry).
|
||||
#
|
||||
# Failures block the merge so a busted geometry never ships.
|
||||
|
||||
name: Diagram validators
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
paths:
|
||||
- 'examples/**'
|
||||
- 'kb/diagram/**'
|
||||
- 'tools/diagram_spec_validator.py'
|
||||
- 'tools/drawio_visual_validator.py'
|
||||
- 'tools/oci_diagram_gen.py'
|
||||
- 'tools/oci_pptx_diagram_gen.py'
|
||||
pull_request:
|
||||
branches: [main]
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
diagram-validators:
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 5
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Python
|
||||
run: |
|
||||
apt-get update -qq
|
||||
apt-get install -y --no-install-recommends python3 python3-pip python3-yaml
|
||||
python3 --version
|
||||
|
||||
- name: Install minimal deps
|
||||
run: |
|
||||
python3 -m pip install --quiet --upgrade pip
|
||||
python3 -m pip install --quiet drawpyo lxml pyyaml
|
||||
|
||||
- name: Spec validator audit (every absolute_layout spec)
|
||||
run: |
|
||||
set -e
|
||||
total=0; failed=0
|
||||
for f in $(find examples -name 'diagram-spec.yaml' -o -name '*-diagram-spec.yaml'); do
|
||||
total=$((total+1))
|
||||
if ! python3 tools/diagram_spec_validator.py --spec "$f" --strict; then
|
||||
failed=$((failed+1))
|
||||
fi
|
||||
done
|
||||
echo "Validated $total spec(s); $failed hard-failed."
|
||||
test $failed -eq 0
|
||||
|
||||
- name: Re-render canonical example (drawio post-render validator)
|
||||
run: |
|
||||
if [ -f examples/aws-app-mysql-heatwave-ha/specs/diagram-spec.yaml ]; then
|
||||
python3 tools/oci_diagram_gen.py \
|
||||
--spec examples/aws-app-mysql-heatwave-ha/specs/diagram-spec.yaml \
|
||||
--output /tmp/aws-app-mysql-heatwave-ha.drawio --strict
|
||||
else
|
||||
echo "Canonical example missing — skipping drawio smoke test"
|
||||
fi
|
||||
75
.gitea/workflows/kb-health.yaml
Normal file
@@ -0,0 +1,75 @@
|
||||
# Weekly KB health check — validates catalog links and reports broken URLs.
|
||||
# Runs Monday 8am UTC. Does NOT block deployments or affect user experience.
|
||||
# If broken links found, creates a Gitea issue for manual review.
|
||||
name: KB Health Check
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 8 * * 1'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
check-links:
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 10
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Python
|
||||
run: |
|
||||
apt-get update -qq
|
||||
apt-get install -y --no-install-recommends python3 python3-requests python3-bs4 python3-yaml
|
||||
python3 --version
|
||||
|
||||
- name: Check Architecture Center links
|
||||
id: check
|
||||
continue-on-error: true
|
||||
run: |
|
||||
python3 tools/refresh_arch_catalog.py --check-links 2>&1 | tee /tmp/link-check.txt
|
||||
echo "exit_code=$?" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Check SKU catalog freshness
|
||||
id: sku
|
||||
continue-on-error: true
|
||||
run: |
|
||||
python3 tools/refresh_sku_catalog.py --validate 2>&1 | tee -a /tmp/link-check.txt
|
||||
|
||||
- name: Create issue if problems found
|
||||
if: steps.check.outcome == 'failure'
|
||||
run: |
|
||||
BROKEN=$(grep -c "❌" /tmp/link-check.txt || echo "0")
|
||||
REDIRECTED=$(grep -c "↪️" /tmp/link-check.txt || echo "0")
|
||||
BODY=$(cat <<'ISSUE_EOF'
|
||||
## KB Health Check — Broken Links Found
|
||||
|
||||
**Run date:** $(date -u +%Y-%m-%d)
|
||||
**Broken:** $BROKEN URLs
|
||||
**Redirected:** $REDIRECTED URLs
|
||||
|
||||
<details>
|
||||
<summary>Full report</summary>
|
||||
|
||||
```
|
||||
$(cat /tmp/link-check.txt)
|
||||
```
|
||||
</details>
|
||||
|
||||
### Action needed
|
||||
- For 404s: remove entry or find new URL via `python tools/refresh_arch_catalog.py --whats-new`
|
||||
- For redirects: update URL in `kb/architecture-center/catalog.yaml`
|
||||
ISSUE_EOF
|
||||
)
|
||||
# Note: Gitea issue creation requires gitea CLI or API call
|
||||
# For now, save report as artifact
|
||||
echo "$BODY" > /tmp/kb-health-report.md
|
||||
echo "::warning::$BROKEN broken links found in KB catalog"
|
||||
|
||||
- name: Upload report
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: kb-health-report
|
||||
path: /tmp/link-check.txt
|
||||
retention-days: 30
|
||||
67
.gitea/workflows/skill-sync.yaml
Normal file
@@ -0,0 +1,67 @@
|
||||
# SKILL.md sync gate.
|
||||
#
|
||||
# Why: the root SKILL.md (read by Claude Code) and
|
||||
# .agents/skills/oci-deal-accelerator/SKILL.md (read by Codex) MUST
|
||||
# stay byte-aligned modulo the auto-generated banner. If they drift,
|
||||
# the two agents give the user different instructions — exactly the
|
||||
# class of regression that produced the workload-driven-mode incident
|
||||
# Diego flagged on 2026-04-25.
|
||||
#
|
||||
# This workflow blocks the merge if a PR/push leaves them out of
|
||||
# sync. Locally, ``make install-hooks`` enables a pre-commit hook
|
||||
# that auto-syncs before the commit lands; this CI step is the
|
||||
# safety net for anyone who skipped the hook.
|
||||
|
||||
name: SKILL.md sync
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
paths:
|
||||
- 'SKILL.md'
|
||||
- '.agents/skills/oci-deal-accelerator/SKILL.md'
|
||||
- 'scripts/sync-skill.py'
|
||||
pull_request:
|
||||
branches: [main]
|
||||
paths:
|
||||
- 'SKILL.md'
|
||||
- '.agents/skills/oci-deal-accelerator/SKILL.md'
|
||||
- 'scripts/sync-skill.py'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
check-sync:
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 2
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Python
|
||||
run: |
|
||||
apt-get update -qq
|
||||
apt-get install -y --no-install-recommends python3
|
||||
python3 --version
|
||||
|
||||
- name: Verify SKILL.md is in sync with the Codex copy
|
||||
run: |
|
||||
python3 scripts/sync-skill.py --check
|
||||
|
||||
- name: Reject .agents/ edits without a matching root SKILL.md change
|
||||
if: github.event_name == 'pull_request'
|
||||
run: |
|
||||
# If only .agents/skills/.../SKILL.md is in the diff (no
|
||||
# change to root SKILL.md), someone edited the auto-generated
|
||||
# copy directly. That edit will be silently destroyed by the
|
||||
# next sync. Block the PR with a clear message.
|
||||
base="${{ github.event.pull_request.base.sha }}"
|
||||
head="${{ github.event.pull_request.head.sha }}"
|
||||
changed=$(git diff --name-only "$base" "$head" || true)
|
||||
if echo "$changed" | grep -qx ".agents/skills/oci-deal-accelerator/SKILL.md"; then
|
||||
if ! echo "$changed" | grep -qx "SKILL.md"; then
|
||||
echo "::error::PR edits .agents/skills/.../SKILL.md without touching root SKILL.md."
|
||||
echo "::error::That file is auto-generated. Move the edit to SKILL.md and run 'make sync-skill'."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
163
.gitea/workflows/sku-catalog-refresh.yaml
Normal file
@@ -0,0 +1,163 @@
|
||||
# Monthly SKU catalog refresh.
|
||||
#
|
||||
# Runs on the 1st of each month at 09:00 UTC and on manual dispatch.
|
||||
#
|
||||
# Does two things:
|
||||
# 1. `--refresh`: pulls latest PAYG prices from Oracle's public API,
|
||||
# updates kb/pricing/oci-sku-catalog.yaml, and opens a PR if anything
|
||||
# changed.
|
||||
# 2. `--discover`: reports SKUs present in the API but absent from the
|
||||
# catalog (filtered to serviceCategory values already curated).
|
||||
# If new SKUs are found, opens a Gitea issue listing them by category
|
||||
# for manual review.
|
||||
#
|
||||
# Token:
|
||||
# Uses the auto-provisioned secrets.GITHUB_TOKEN (Gitea Actions provides this
|
||||
# per-run, scoped to this repo, GitHub-Actions-compatible). No manual secret
|
||||
# configuration required. The explicit `permissions:` block below grants the
|
||||
# scopes needed to push a branch, open a PR, and open an issue.
|
||||
name: SKU Catalog Refresh
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 9 1 * *'
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
issues: write
|
||||
|
||||
jobs:
|
||||
refresh-and-discover:
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 15
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup Python
|
||||
run: |
|
||||
apt-get update -qq
|
||||
apt-get install -y --no-install-recommends python3 python3-requests python3-yaml jq
|
||||
python3 --version
|
||||
|
||||
- name: Refresh prices from Oracle API
|
||||
id: refresh
|
||||
run: |
|
||||
python3 tools/refresh_sku_catalog.py --refresh --diff 2>&1 \
|
||||
| tee /tmp/refresh.log
|
||||
if git diff --quiet kb/pricing/oci-sku-catalog.yaml; then
|
||||
echo "changed=false" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "changed=true" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
- name: Discover missing SKUs
|
||||
id: discover
|
||||
run: |
|
||||
python3 tools/refresh_sku_catalog.py --discover -v 2>&1 \
|
||||
| tee /tmp/discover.log
|
||||
NEW_COUNT=$(sed -n 's/^DISCOVER_MISSING_COUNT=\([0-9]\+\)$/\1/p' \
|
||||
/tmp/discover.log | tail -1)
|
||||
echo "Parsed new_count='${NEW_COUNT}'"
|
||||
echo "new_count=${NEW_COUNT:-0}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Upload logs as artifact
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: sku-refresh-logs
|
||||
path: |
|
||||
/tmp/refresh.log
|
||||
/tmp/discover.log
|
||||
retention-days: 90
|
||||
|
||||
- name: Open PR with price updates
|
||||
if: steps.refresh.outputs.changed == 'true'
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
GITEA_SERVER: ${{ github.server_url }}
|
||||
GITEA_REPO: ${{ github.repository }}
|
||||
run: |
|
||||
DATE=$(date -u +%Y-%m-%d)
|
||||
BRANCH="automation/sku-refresh-${DATE}-run${{ github.run_number }}"
|
||||
|
||||
git config user.name "sku-refresh-bot"
|
||||
git config user.email "sku-refresh@automation.local"
|
||||
git checkout -b "$BRANCH"
|
||||
git add kb/pricing/oci-sku-catalog.yaml
|
||||
git commit -m "chore(pricing): monthly SKU catalog refresh (${DATE})
|
||||
|
||||
Automated refresh from Oracle public pricing API.
|
||||
See workflow artifact 'sku-refresh-logs' for the diff."
|
||||
|
||||
# Push using token auth
|
||||
REMOTE=$(echo "$GITEA_SERVER/$GITEA_REPO.git" \
|
||||
| sed "s#https://#https://sku-refresh-bot:${GITEA_TOKEN}@#")
|
||||
git push "$REMOTE" "$BRANCH"
|
||||
|
||||
# Open PR via Gitea API (fail-fast + log response)
|
||||
OWNER=$(echo "$GITEA_REPO" | cut -d/ -f1)
|
||||
REPO=$(echo "$GITEA_REPO" | cut -d/ -f2)
|
||||
PAYLOAD=$(jq -n \
|
||||
--arg title "chore(pricing): monthly SKU refresh ${DATE}" \
|
||||
--arg head "$BRANCH" \
|
||||
--arg base "main" \
|
||||
--arg body "$(printf 'Automated refresh — see run artifact for full refresh/discover logs.\n\n```\n%s\n```' \
|
||||
"$(tail -40 /tmp/refresh.log)")" \
|
||||
'{title:$title, head:$head, base:$base, body:$body}')
|
||||
echo "Creating PR ${BRANCH} -> main ..."
|
||||
RESPONSE=$(curl -sS -w "\nHTTP_STATUS=%{http_code}\n" -X POST \
|
||||
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
"${GITEA_SERVER}/api/v1/repos/${OWNER}/${REPO}/pulls" \
|
||||
-d "$PAYLOAD")
|
||||
echo "$RESPONSE"
|
||||
STATUS=$(echo "$RESPONSE" | grep -oE 'HTTP_STATUS=[0-9]+' | cut -d= -f2)
|
||||
if [ "$STATUS" != "201" ]; then
|
||||
echo "::error::PR creation failed with HTTP $STATUS"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Open issue for new SKUs
|
||||
if: steps.discover.outputs.new_count != '0'
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
GITEA_SERVER: ${{ github.server_url }}
|
||||
GITEA_REPO: ${{ github.repository }}
|
||||
NEW_COUNT: ${{ steps.discover.outputs.new_count }}
|
||||
run: |
|
||||
DATE=$(date -u +%Y-%m-%d)
|
||||
OWNER=$(echo "$GITEA_REPO" | cut -d/ -f1)
|
||||
REPO=$(echo "$GITEA_REPO" | cut -d/ -f2)
|
||||
|
||||
BODY=$(printf '## %s new SKUs detected in Oracle API\n\n**Detected:** %s\n\nThese SKUs are present in the Oracle public pricing API but not yet in `kb/pricing/oci-sku-catalog.yaml`. Filter: serviceCategory values already represented in our catalog (so only relevant families show up).\n\n### Full listing\n\n```\n%s\n```\n\n### Next step\n\nReview and add relevant entries to `kb/pricing/oci-sku-catalog.yaml` under the appropriate category block. After merging, prices will be picked up automatically on the next monthly refresh.\n' \
|
||||
"$NEW_COUNT" "$DATE" "$(cat /tmp/discover.log)")
|
||||
|
||||
PAYLOAD=$(jq -n \
|
||||
--arg title "SKU catalog: ${NEW_COUNT} new SKUs to review (${DATE})" \
|
||||
--arg body "$BODY" \
|
||||
'{title:$title, body:$body}')
|
||||
echo "Creating issue: ${NEW_COUNT} new SKUs..."
|
||||
RESPONSE=$(curl -sS -w "\nHTTP_STATUS=%{http_code}\n" -X POST \
|
||||
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
"${GITEA_SERVER}/api/v1/repos/${OWNER}/${REPO}/issues" \
|
||||
-d "$PAYLOAD")
|
||||
echo "$RESPONSE"
|
||||
STATUS=$(echo "$RESPONSE" | grep -oE 'HTTP_STATUS=[0-9]+' | cut -d= -f2)
|
||||
if [ "$STATUS" != "201" ]; then
|
||||
echo "::error::Issue creation failed with HTTP $STATUS"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Summary
|
||||
if: always()
|
||||
run: |
|
||||
echo "## SKU Refresh Summary" >> $GITHUB_STEP_SUMMARY
|
||||
echo "- Catalog changed: ${{ steps.refresh.outputs.changed }}" >> $GITHUB_STEP_SUMMARY
|
||||
echo "- New SKUs discovered: ${{ steps.discover.outputs.new_count }}" >> $GITHUB_STEP_SUMMARY
|
||||
83
.githooks/pre-commit
Normal file
@@ -0,0 +1,83 @@
|
||||
#!/usr/bin/env bash
|
||||
# Pre-commit hook: keep .agents/skills/oci-deal-accelerator/SKILL.md
|
||||
# byte-aligned with the root SKILL.md (the source of truth that
|
||||
# CLAUDE.md / Claude Code reads). The Codex copy under .agents/
|
||||
# follows the same content with an auto-generated banner — they MUST
|
||||
# stay in lock-step or Claude Code and Codex will give the user
|
||||
# different instructions.
|
||||
#
|
||||
# Behavior:
|
||||
# 1. Only the .agents/ copy staged (no root SKILL.md change):
|
||||
# REJECT — the .agents/ file is auto-generated, edits MUST land
|
||||
# in root SKILL.md. Otherwise the next sync silently destroys
|
||||
# the change.
|
||||
# 2. Root SKILL.md staged: auto-run scripts/sync-skill.py and
|
||||
# stage the regenerated .agents/ copy in the same commit.
|
||||
# 3. Neither: nothing to do.
|
||||
# • If the script can't run (no python, etc.), abort with a clear
|
||||
# message rather than committing a desync silently.
|
||||
#
|
||||
# Install once per clone: make install-hooks (sets core.hooksPath)
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
ROOT="$(git rev-parse --show-toplevel)"
|
||||
SOURCE="SKILL.md"
|
||||
TARGET=".agents/skills/oci-deal-accelerator/SKILL.md"
|
||||
SCRIPT="scripts/sync-skill.py"
|
||||
|
||||
STAGED="$(git diff --cached --name-only)"
|
||||
SOURCE_STAGED=0
|
||||
TARGET_STAGED=0
|
||||
echo "$STAGED" | grep -qx "$SOURCE" && SOURCE_STAGED=1 || true
|
||||
echo "$STAGED" | grep -qx "$TARGET" && TARGET_STAGED=1 || true
|
||||
|
||||
# Case 1: only the auto-generated .agents/ copy is staged. Reject —
|
||||
# the source of truth is root SKILL.md and a future sync will
|
||||
# silently overwrite this change.
|
||||
if [ "$TARGET_STAGED" = "1" ] && [ "$SOURCE_STAGED" = "0" ]; then
|
||||
echo "" >&2
|
||||
echo "pre-commit: REJECTED — you staged $TARGET in isolation." >&2
|
||||
echo " This file is auto-generated from $SOURCE and the next" >&2
|
||||
echo " ``make sync-skill`` (or this pre-commit hook firing on a" >&2
|
||||
echo " later commit) will overwrite your changes silently." >&2
|
||||
echo "" >&2
|
||||
echo " Workflow:" >&2
|
||||
echo " 1. Move your edits into $SOURCE." >&2
|
||||
echo " 2. ``git restore --staged --worktree $TARGET``" >&2
|
||||
echo " 3. ``git add $SOURCE`` and re-commit — the hook will" >&2
|
||||
echo " regenerate the .agents/ copy automatically." >&2
|
||||
echo "" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Nothing else to do unless root SKILL.md changed.
|
||||
if [ "$SOURCE_STAGED" = "0" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ ! -f "$ROOT/$SCRIPT" ]; then
|
||||
echo "pre-commit: $SCRIPT missing — cannot verify SKILL.md sync. Aborting." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PYTHON="$(command -v python3 || command -v python || true)"
|
||||
if [ -z "$PYTHON" ]; then
|
||||
echo "pre-commit: no python found in PATH — cannot run $SCRIPT. Aborting." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Run the full sync, then stage the regenerated target so it travels
|
||||
# in the same commit. (Idempotent — if it was already in sync, the
|
||||
# file write is a no-op.)
|
||||
"$PYTHON" "$ROOT/$SCRIPT" >&2
|
||||
git add "$ROOT/$TARGET"
|
||||
|
||||
# Final check — if for any reason the result still drifts, fail loud.
|
||||
if ! "$PYTHON" "$ROOT/$SCRIPT" --check >/dev/null 2>&1; then
|
||||
echo "pre-commit: SKILL.md and $TARGET are still out of sync after auto-run." >&2
|
||||
echo " Investigate scripts/sync-skill.py before committing." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
30
.gitignore
vendored
@@ -1,9 +1,11 @@
|
||||
.venv/
|
||||
__pycache__/
|
||||
*.pyc
|
||||
*.pyo
|
||||
output/
|
||||
*.pptx
|
||||
!examples/sample-output/*.pptx
|
||||
!templates/Oracle_PPT-template_FY26.pptx
|
||||
!kb/diagram/assets/OCI_Icons.pptx
|
||||
|
||||
# OCI Toolkit binary (download from Oracle, don't commit)
|
||||
kb/diagram/OCI Library.xml
|
||||
@@ -11,24 +13,10 @@ kb/diagram/OCI Library.xml
|
||||
# Build prompt (internal)
|
||||
COMPLETE-BUILD-PROMPT.md
|
||||
|
||||
# Client-specific examples (never commit customer data)
|
||||
examples/farma-sa-*
|
||||
# Ignore all examples content
|
||||
examples/
|
||||
|
||||
# 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
|
||||
examples/*.xlsx
|
||||
# Workspace / sandbox artifacts (never committed)
|
||||
tmp/
|
||||
.claude/scheduled_tasks.lock
|
||||
.claude/worktrees/
|
||||
|
||||
71
AGENTS.md
@@ -85,32 +85,39 @@ DEFINE (Ideate → Validate → Plan) → DESIGN (Current → Future → Confi
|
||||
|
||||
Phase details in `docs/` — skill references them via progressive disclosure.
|
||||
|
||||
## Environment Setup (MANDATORY before running tools)
|
||||
|
||||
```bash
|
||||
make venv && source .venv/bin/activate
|
||||
```
|
||||
|
||||
The Makefile auto-detects the best available Python (3.12 > 3.11 > 3.10 > python3).
|
||||
**Always use `make <target>` to run tools.** For custom specs, activate the venv first.
|
||||
|
||||
### Codex sandbox note
|
||||
|
||||
This project ships `.codex/config.toml` which enables `network_access = true`
|
||||
for the workspace-write sandbox. This is required so `make venv` can reach
|
||||
PyPI. If you see `No matching distribution found for pyyaml`, the config file
|
||||
is missing or Codex is ignoring it — re-open the project from its root so
|
||||
Codex loads `.codex/config.toml`.
|
||||
|
||||
## Running Tools
|
||||
|
||||
```bash
|
||||
# Generate slide deck (default output)
|
||||
# Standard targets (recommended)
|
||||
make deck # slide deck with sample spec
|
||||
make diagram # architecture diagram
|
||||
make full # all outputs (pptx + drawio + docx + xlsx + pdf)
|
||||
make validate # WA validation
|
||||
make lint # check YAML syntax
|
||||
make venv # create/update virtual environment
|
||||
|
||||
# Custom specs (activate venv first)
|
||||
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
|
||||
@@ -150,6 +157,32 @@ If a task generates YAML without the corresponding readable output, the task is
|
||||
- **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.
|
||||
|
||||
## Git Remotes (Gitea = source of truth, GitHub = mirror)
|
||||
|
||||
`origin` is configured with **one fetch URL (Gitea) and two push URLs (Gitea + GitHub)**, so a single `git push origin main` updates both. Gitea is authoritative; GitHub is a public mirror.
|
||||
|
||||
```
|
||||
fetch → git.tech-lad.com.br/diegoecab/oci-deal-accelerator.git
|
||||
push → git.tech-lad.com.br/diegoecab/oci-deal-accelerator.git
|
||||
push → github.com/Diegoecab/oci-deal-accelerator.git
|
||||
```
|
||||
|
||||
**Recreating this on a new clone** (the dual-push lives in `.git/config`, not tracked):
|
||||
|
||||
```bash
|
||||
git remote set-url --add --push origin https://github.com/Diegoecab/oci-deal-accelerator.git
|
||||
git remote set-url --add --push origin https://git.tech-lad.com.br/diegoecab/oci-deal-accelerator.git
|
||||
git remote -v # confirm one fetch + two push URLs
|
||||
```
|
||||
|
||||
The first command substitutes the implicit Gitea push URL with GitHub's; the second re-adds Gitea so origin pushes to BOTH. Counter-intuitive but necessary.
|
||||
|
||||
**Agent guidance**:
|
||||
- After creating a commit on `main`, **always propose `git push origin main`** (not separate pushes per remote) — it covers both. Confirm with the user before pushing (pushing is shared-state).
|
||||
- If a push fails on GitHub but succeeds on Gitea (or vice versa), the dual-push is partial. Re-run after fixing the failing one — Gitea's second push will be a no-op fast-forward.
|
||||
- Never force-push Gitea unless explicitly asked; force-pushing GitHub is acceptable when needed because GitHub is downstream.
|
||||
- If history diverges between Gitea and GitHub (e.g. after a rebase), the recovery pattern is: temporarily strip the GitHub URL (`git remote set-url --delete --push origin <github-url>`), push Gitea fast-forward, add `github` as a standalone remote, force-push, then restore the dual-push.
|
||||
|
||||
## 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:
|
||||
|
||||
116
CLAUDE.md
@@ -110,47 +110,44 @@ doc only ← technical doc without slides
|
||||
deliver ← handover + go-live checklist + success criteria
|
||||
```
|
||||
|
||||
## Running Tools
|
||||
## Environment Setup
|
||||
|
||||
Before running ANY Python tool, ensure dependencies are installed:
|
||||
|
||||
```bash
|
||||
# Generate slide deck (default output)
|
||||
make venv && source .venv/bin/activate
|
||||
```
|
||||
|
||||
The Makefile auto-detects the best available Python (3.12 > 3.11 > 3.10 > python3).
|
||||
**Always use `make <target>` to run tools** — this guarantees the correct Python with all dependencies.
|
||||
|
||||
## Running Tools
|
||||
|
||||
Prefer `make` targets. For custom specs, activate the venv first (`source .venv/bin/activate`), then use `python`:
|
||||
|
||||
```bash
|
||||
# Standard targets (recommended)
|
||||
make deck # slide deck with sample spec
|
||||
make diagram # architecture diagram
|
||||
make full # all outputs (pptx + drawio + docx + xlsx + pdf)
|
||||
make validate # WA validation
|
||||
make lint # check YAML syntax
|
||||
make venv # create/update virtual environment
|
||||
make freshness # check KB freshness
|
||||
|
||||
# Custom specs (activate venv first)
|
||||
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 BOM (.xlsx Bill of Materials)
|
||||
python tools/oci_bom_gen.py --spec examples/bom-spec.yaml --output customer-bom.xlsx
|
||||
|
||||
# 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 SKU catalog from Oracle pricing API
|
||||
# KB maintenance (activate venv first)
|
||||
python tools/refresh_sku_catalog.py --refresh # update all prices
|
||||
python tools/refresh_sku_catalog.py --refresh --diff # update + show changes
|
||||
python tools/refresh_sku_catalog.py --validate # check for stale prices
|
||||
python tools/refresh_sku_catalog.py --sku B110627 # inspect single SKU
|
||||
|
||||
# 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 --whats-new # crawl What's New pages
|
||||
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
|
||||
@@ -162,13 +159,72 @@ make lint # check YAML syntax
|
||||
- **KB is the moat** — field experience, not documentation regurgitation
|
||||
- **ECAL-aligned** — Define → Design → Deliver with iterative checkpoints
|
||||
|
||||
## Git Remotes (Gitea = source of truth, GitHub = mirror)
|
||||
|
||||
`origin` is configured with **one fetch URL (Gitea) and two push URLs (Gitea + GitHub)**, so a single `git push origin main` updates both. Gitea is authoritative; GitHub is a public mirror.
|
||||
|
||||
```
|
||||
fetch → git.tech-lad.com.br/diegoecab/oci-deal-accelerator.git
|
||||
push → git.tech-lad.com.br/diegoecab/oci-deal-accelerator.git
|
||||
push → github.com/Diegoecab/oci-deal-accelerator.git
|
||||
```
|
||||
|
||||
**Recreating this on a new clone** (the dual-push lives in `.git/config`, not tracked):
|
||||
|
||||
```bash
|
||||
git remote set-url --add --push origin https://github.com/Diegoecab/oci-deal-accelerator.git
|
||||
git remote set-url --add --push origin https://git.tech-lad.com.br/diegoecab/oci-deal-accelerator.git
|
||||
git remote -v # confirm one fetch + two push URLs
|
||||
```
|
||||
|
||||
The first command substitutes the implicit Gitea push URL with GitHub's; the second re-adds Gitea so origin pushes to BOTH. Counter-intuitive but necessary.
|
||||
|
||||
**Agent guidance**:
|
||||
- After creating a commit on `main`, **always propose `git push origin main`** (not separate pushes per remote) — it covers both. Confirm with the user before pushing (pushing is shared-state).
|
||||
- If a push fails on GitHub but succeeds on Gitea (or vice versa), the dual-push is partial. Re-run after fixing the failing one — Gitea's second push will be a no-op fast-forward.
|
||||
- Never force-push Gitea unless explicitly asked; force-pushing GitHub is acceptable when needed because GitHub is downstream.
|
||||
- If history diverges between Gitea and GitHub (e.g. after a rebase), the recovery pattern is: temporarily strip the GitHub URL (`git remote set-url --delete --push origin <github-url>`), push Gitea fast-forward, add `github` as a standalone remote, force-push, then restore the dual-push.
|
||||
|
||||
## Coding Guidelines
|
||||
|
||||
### 1. Think Before Coding
|
||||
Don't assume. Don't hide confusion. Surface tradeoffs.
|
||||
- State your assumptions explicitly. If uncertain, ask.
|
||||
- If multiple interpretations exist, present them — don't pick silently.
|
||||
- If a simpler approach exists, say so. Push back when warranted.
|
||||
- If something is unclear, stop. Name what's confusing. Ask.
|
||||
|
||||
### 2. Simplicity First
|
||||
Minimum code that solves the problem. Nothing speculative.
|
||||
- No features beyond what was asked.
|
||||
- No abstractions for single-use code.
|
||||
- No "flexibility" or "configurability" that wasn't requested.
|
||||
- No error handling for impossible scenarios.
|
||||
- If you write 200 lines and it could be 50, rewrite it.
|
||||
|
||||
### 3. Surgical Changes
|
||||
Touch only what you must. Clean up only your own mess.
|
||||
- Don't "improve" adjacent code, comments, or formatting.
|
||||
- Don't refactor things that aren't broken.
|
||||
- Match existing style, even if you'd do it differently.
|
||||
- If you notice unrelated dead code, mention it — don't delete it.
|
||||
- Remove imports/variables/functions that YOUR changes made unused.
|
||||
- Every changed line should trace directly to the user's request.
|
||||
|
||||
### 4. Goal-Driven Execution
|
||||
Define success criteria. Loop until verified.
|
||||
- "Add validation" → write tests for invalid inputs, then make them pass.
|
||||
- "Fix the bug" → write a test that reproduces it, then make it pass.
|
||||
- "Refactor X" → ensure tests pass before and after.
|
||||
- For multi-step tasks, state a brief plan with verification steps.
|
||||
|
||||
## 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):
|
||||
|
||||
**MANDATORY:** Use the `Read` tool to open `SKILL.md` and read the entire `## Welcome Flow` section **before** showing anything to the user. Reproduce the welcome banner and the 14-option capability menu **verbatim** from that file. Do NOT paraphrase, reorder, summarize, translate, or reconstruct the menu from memory, folder structure, or prior conversations. If `SKILL.md` cannot be read for any reason, tell the user instead of improvising a menu.
|
||||
|
||||
**Pre-flight check (also defined in SKILL.md):** Before showing the welcome message, run `python tools/kb_freshness.py --check --json`. If `stale_count > 0`, follow the banner-and-prompt logic in SKILL.md § Welcome Flow → Pre-flight. If the tool errors, silently skip the banner — never block the user.
|
||||
**Pre-flight check (also defined in SKILL.md):** Before showing the welcome message, run `make kb-check 2>/dev/null`. If `stale_count > 0`, follow the banner-and-prompt logic in SKILL.md § Welcome Flow → Pre-flight. If the tool errors, silently skip the banner — never block the user.
|
||||
|
||||
Then:
|
||||
|
||||
|
||||
89
Makefile
@@ -1,8 +1,15 @@
|
||||
# OCI Deal Accelerator — Build Automation
|
||||
|
||||
.PHONY: help install test validate example diagram deck full clean lint codex-package update-icons freshness freshness-refresh sync-skill
|
||||
.PHONY: help install test validate example diagram deck full clean lint codex-package update-icons freshness freshness-refresh sync-skill sku-discover pptx-icons-refresh archcenter-benchmark-20 diagram-lookup diagram-validate-spec archcenter-descriptions-refresh diagram-spec-audit archcenter-smoke install-hooks archcenter-templates-refresh
|
||||
|
||||
PYTHON ?= python3.12
|
||||
# Use venv if present, otherwise find best available python3
|
||||
ifneq (,$(wildcard .venv/bin/python))
|
||||
PYTHON ?= .venv/bin/python
|
||||
else ifneq (,$(shell command -v python3.12 2>/dev/null))
|
||||
PYTHON ?= python3.12
|
||||
else
|
||||
PYTHON ?= python3
|
||||
endif
|
||||
SPEC_DIR = examples
|
||||
OUTPUT_DIR = examples/sample-output
|
||||
|
||||
@@ -10,7 +17,34 @@ 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
|
||||
VENV_PYTHON := $(shell command -v python3.12 2>/dev/null || command -v python3.11 2>/dev/null || command -v python3.10 2>/dev/null || echo python3)
|
||||
|
||||
venv: .venv/.deps-installed ## Create or update venv (idempotent — no-op if requirements.txt unchanged)
|
||||
|
||||
# Marker file pattern: the venv only rebuilds when requirements.txt is
|
||||
# newer than the marker. A fresh `make venv` after a successful install
|
||||
# is an instant no-op (was 1m53s on Codex sandboxes — every turn).
|
||||
# To force a rebuild: `rm .venv/.deps-installed` (or `rm -rf .venv`).
|
||||
.venv/.deps-installed: requirements.txt
|
||||
@if [ ! -x .venv/bin/python ]; then \
|
||||
echo "Using $(VENV_PYTHON) to create venv..."; \
|
||||
$(VENV_PYTHON) -m venv .venv; \
|
||||
fi
|
||||
.venv/bin/pip install --upgrade pip
|
||||
.venv/bin/pip install -r requirements.txt
|
||||
@touch .venv/.deps-installed
|
||||
@echo "Virtual environment ready. Run: source .venv/bin/activate"
|
||||
@echo "Tip: run 'make install-hooks' once to enable the pre-commit"
|
||||
@echo " hook that keeps SKILL.md in sync with the Codex copy."
|
||||
|
||||
install-hooks: ## Install repo-versioned git hooks (pre-commit auto-syncs SKILL.md)
|
||||
@if [ ! -d .git ]; then echo "install-hooks: not a git repo"; exit 1; fi
|
||||
git config core.hooksPath .githooks
|
||||
@echo "install-hooks: core.hooksPath set to .githooks"
|
||||
@echo " → pre-commit now auto-syncs .agents/skills/.../SKILL.md"
|
||||
@echo " whenever SKILL.md is part of the staged change set."
|
||||
|
||||
install: ## Install Python dependencies (system-wide)
|
||||
pip install -r requirements.txt
|
||||
|
||||
validate: ## Validate imports and configs
|
||||
@@ -56,6 +90,49 @@ 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"
|
||||
|
||||
pptx-icons-refresh: ## Refresh bundled OCI_Icons.pptx asset + manifest/index for native PPTX diagrams
|
||||
$(PYTHON) tools/refresh_pptx_icon_index.py
|
||||
@echo "Updated kb/diagram/oci-pptx-icons-manifest.yaml and oci-pptx-icons-index.json"
|
||||
|
||||
archcenter-benchmark-20: ## Run 20-case Oracle Architecture Center native benchmark
|
||||
$(PYTHON) tools/oci_archcenter_batch.py \
|
||||
--limit 20 \
|
||||
--threshold 0.82 \
|
||||
--fidelity-threshold 0.90 \
|
||||
--output-root examples/eval-2026-04-25-archcenter-native-20-v8
|
||||
|
||||
diagram-lookup: ## Find Architecture Center reference patterns. Usage: make diagram-lookup QUERY="mysql heatwave HA"
|
||||
@if [ -z "$(QUERY)" ]; then echo "Usage: make diagram-lookup QUERY=\"<topology>\""; exit 1; fi
|
||||
$(PYTHON) tools/archcenter_pattern_lookup.py "$(QUERY)" --top $${TOP:-5}
|
||||
|
||||
diagram-validate-spec: ## Validate a diagram spec's geometry. Usage: make diagram-validate-spec SPEC=path/to/spec.yaml
|
||||
@if [ -z "$(SPEC)" ]; then echo "Usage: make diagram-validate-spec SPEC=<path>"; exit 1; fi
|
||||
$(PYTHON) tools/diagram_spec_validator.py --spec "$(SPEC)" --strict
|
||||
|
||||
diagram-spec-audit: ## Run spec validator across every diagram-spec in examples/, print pass/fail summary
|
||||
@echo "Auditing diagram specs under examples/..."
|
||||
@total=0; failed=0; \
|
||||
for f in $$(find examples -name 'diagram-spec.yaml' -o -name '*-diagram-spec.yaml'); do \
|
||||
total=$$((total+1)); \
|
||||
$(PYTHON) tools/diagram_spec_validator.py --spec "$$f" --strict >/dev/null 2>&1 || { \
|
||||
failed=$$((failed+1)); echo " FAIL $$f"; \
|
||||
}; \
|
||||
done; \
|
||||
echo "Audited $$total spec(s); $$failed failed."
|
||||
|
||||
archcenter-descriptions-refresh: ## Re-fetch _description.md for every Architecture Center entry
|
||||
$(PYTHON) tools/archcenter_description_fetcher.py --limit 200 --sleep 0.5
|
||||
|
||||
archcenter-templates-refresh: ## Extract absolute_layout YAML scaffolds from every cached .drawio
|
||||
$(PYTHON) tools/archcenter_drawio_to_template.py
|
||||
|
||||
archcenter-smoke: ## 3-case Architecture Center reconstruction smoke test (CI-friendly)
|
||||
$(PYTHON) tools/oci_archcenter_batch.py \
|
||||
--limit 3 \
|
||||
--threshold 0.78 \
|
||||
--fidelity-threshold 0.85 \
|
||||
--output-root tmp/archcenter-smoke
|
||||
|
||||
clean: ## Remove generated output files
|
||||
rm -f examples/sample-output/*.drawio
|
||||
rm -f examples/sample-output/*.pptx
|
||||
@@ -76,5 +153,11 @@ sync-skill: ## Regenerate .agents/skills/oci-deal-accelerator/SKILL.md from root
|
||||
freshness: ## Report stale KB files (informational, never fails)
|
||||
-@$(PYTHON) tools/kb_freshness.py --check
|
||||
|
||||
kb-check: ## KB freshness JSON (used by skill welcome-flow pre-flight)
|
||||
@$(PYTHON) tools/kb_freshness.py --check --json
|
||||
|
||||
freshness-refresh: ## Run refresh tools for stale KB files that support automation
|
||||
@$(PYTHON) tools/kb_freshness.py --auto-refresh
|
||||
|
||||
sku-discover: ## Report SKUs present in Oracle API but missing from oci-sku-catalog.yaml
|
||||
@$(PYTHON) tools/refresh_sku_catalog.py --discover
|
||||
|
||||
186
README.md
@@ -11,9 +11,47 @@ What normally takes an SA days of work (structuring notes, designing architectur
|
||||
- **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
|
||||
- **Multi-cloud aware** — supports hybrid/multi-cloud diagrams (AWS, Azure, GCP, plus external brand icons such as Slack and Jira) and considers options like ADB Multicloud before recommending full migration
|
||||
- **MCP-tolerant inputs** — deck, diagram, BOM, and business-case generators accept flat MCP payloads and common field aliases instead of requiring one rigid schema
|
||||
- **End-to-end coverage** — from discovery notes to go-live checklist, not just the architecture slide
|
||||
|
||||
## New user? Start here
|
||||
|
||||
The skill runs as a hosted MCP server. Connect once from your LLM client, sign in with Oracle SSO, and the tools are ready.
|
||||
|
||||
Fastest path: open AI Factory Hub at `https://ai-lad.com/`, search for `OCI Deal Accelerator`, and install it from there. If you prefer manual setup, use the MCP client instructions below.
|
||||
|
||||
**1. Add the MCP server to your client (manual setup):**
|
||||
|
||||
| Client | How |
|
||||
|---|---|
|
||||
| **Claude Code** | `claude mcp add --transport http oci-deal-accelerator "https://mcp.tech-lad.com/deal-accelerator/mcp/"` |
|
||||
| **Codex** | `codex mcp add oci-deal-accelerator --url "https://mcp.tech-lad.com/deal-accelerator/mcp/"` |
|
||||
| **Cursor** | Settings (Ctrl+Shift+J) → MCP → Add new MCP server → Name: `oci-deal-accelerator`, Type: `streamable-http`, URL: `https://mcp.tech-lad.com/deal-accelerator/mcp/` |
|
||||
| **Claude Desktop** | Add to `claude_desktop_config.json`: `{ "mcpServers": { "oci-deal-accelerator": { "transport": "http", "url": "https://mcp.tech-lad.com/deal-accelerator/mcp/" } } }` |
|
||||
| **Windsurf** | Settings → Cascade → MCP → Manual config: `{ "oci-deal-accelerator": { "serverUrl": "https://mcp.tech-lad.com/deal-accelerator/sse/" } }` |
|
||||
|
||||
**2. Trigger the connection** — type `/mcp` in Claude Code or Codex, or open any tool in Cursor / Claude Desktop / Windsurf. Your browser opens automatically.
|
||||
|
||||
**3. Pick one of two options in the browser:**
|
||||
- **Sign in with Oracle SSO** — for existing users
|
||||
- **Create a new account** — for new users (see step 4)
|
||||
|
||||
**4. New users — create an account** by clicking "Create a new account". This opens an OCI self-registration form (oracle.com emails only). Tips:
|
||||
- Use your full Oracle email as User ID (e.g. `name@oracle.com`)
|
||||
- Password must be 12+ chars, with an uppercase letter, a number, and a special character
|
||||
- Password must NOT contain your name or username
|
||||
|
||||
**5. Verify your email**, then return to the browser and click **Sign in with Oracle SSO**.
|
||||
|
||||
**6. Done.** The MCP tools are now available in your client.
|
||||
|
||||
### Connection URLs
|
||||
|
||||
- **AI Factory Hub:** `https://ai-lad.com/`
|
||||
- **MCP (HTTP streamable):** `https://mcp.tech-lad.com/deal-accelerator/mcp/`
|
||||
- **SSE (Windsurf only):** `https://mcp.tech-lad.com/deal-accelerator/sse/`
|
||||
|
||||
## What It Produces
|
||||
|
||||
From unstructured input (meeting notes, emails, Slack threads), the skill generates:
|
||||
@@ -27,10 +65,12 @@ From unstructured input (meeting notes, emails, Slack threads), the skill genera
|
||||
| **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 |
|
||||
| **Architecture Diagram** — Oracle reference-architecture geometry, multi-cloud + external brand support | .drawio / .pptx | 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 |
|
||||
| **Bill of Materials (BOM)** — requested SKUs only, formula-driven totals, discount-aware workbook | .xlsx | Design | Future |
|
||||
| **AppCA-ready BOM** — AppCA import sheet plus full BOM workbook detail | .xlsx | 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 |
|
||||
@@ -66,9 +106,40 @@ 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)
|
||||
bom ← bill of materials (.xlsx)
|
||||
deliver ← handover + go-live checklist + success criteria
|
||||
```
|
||||
|
||||
Standalone architecture diagrams can be generated as editable `.drawio` files or as native Oracle-style `.pptx` diagrams/slides, depending on the workflow you trigger.
|
||||
|
||||
## Example Prompts
|
||||
|
||||
These copy/paste prompts are good demo asks for the newest user-visible features, especially when using Codex or another MCP client.
|
||||
|
||||
### Native PowerPoint diagram (.pptx)
|
||||
|
||||
```text
|
||||
Generame un diagrama nativo en .pptx, simple y prolijo, de esta arquitectura: usuarios externos -> load balancer público -> 2 VMs de aplicación en subnet privada -> Autonomous Database Serverless. Quiero que quede presentable para mostrar directo en PowerPoint. No me pidas YAML ni setup adicional.
|
||||
```
|
||||
|
||||
### Brand icons + OIC + dual output
|
||||
|
||||
```text
|
||||
Generate a simple high-level integration diagram for this flow: Slack -> Oracle Integration Cloud (OIC) -> Jira Service Management -> My Oracle Support. Add clear Client, Oracle, and External layers. Use brand icons for Slack and Jira Service Management, and deliver both .drawio and .pptx.
|
||||
```
|
||||
|
||||
### Real multicloud topology
|
||||
|
||||
```text
|
||||
Generate a high-level architecture diagram for this scenario: 1 PostgreSQL in OCI Ashburn, accessed from GCP Virginia through interconnect. PostgreSQL connects internally to 1 Autonomous Database Serverless, which also has 1 refreshable clone in the same region but in a different AD. Deliver both .drawio and .pptx. Keep it simple, executive-friendly, and technically correct.
|
||||
```
|
||||
|
||||
### Discount-aware BOM
|
||||
|
||||
```text
|
||||
Gere um BOM em USD para este cenário: PostgreSQL no OCI com 4 OCPU e 500 GB, ADB-S com 200 ECPU e 1 TB BYOL, 1 refreshable clone com o mesmo sizing e FastConnect de 1 Gbps. Aplique 11% de desconto, 12 meses, 24 horas por dia. Quero o arquivo .xlsx e um resumo claro do custo mensal e anual.
|
||||
```
|
||||
|
||||
## Knowledge Base
|
||||
|
||||
The KB is the moat — field experience, not documentation regurgitation.
|
||||
@@ -120,7 +191,13 @@ 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.
|
||||
**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. Each entry includes title, URL, tags, services, and a 1-line summary; **121 also have a cached `_description.md`** with the full "About this architecture" text fetched from docs.oracle.com.
|
||||
|
||||
Cached locally under `kb/diagram/assets/archcenter-refs/<slug>/`:
|
||||
- `_description.md` — Oracle's architecture rationale (used by both the lookup tool and SKILL.md option 10 "Reference architecture lookup")
|
||||
- `*.drawio` — official editable source for ~110 references (where Oracle ships a zip)
|
||||
- `_template.yaml` — extracted `absolute_layout` scaffold so new diagrams can start from Oracle geometry instead of from scratch
|
||||
- `*.svg` / `*.png` — raster fallback for the rest
|
||||
|
||||
During **Phase 2 (DESIGN)**, the skill automatically matches the proposed architecture against the catalog:
|
||||
|
||||
@@ -131,6 +208,47 @@ During **Phase 2 (DESIGN)**, the skill automatically matches the proposed archit
|
||||
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
|
||||
python tools/refresh_arch_catalog.py --check-links # check for broken URLs (404s, redirects)
|
||||
|
||||
# Topology lookup — base your diagram on the closest Oracle reference
|
||||
python tools/archcenter_pattern_lookup.py "mysql heatwave high availability load balancer"
|
||||
python tools/archcenter_pattern_lookup.py "fastconnect exacs cross region" --top 10
|
||||
|
||||
# Re-fetch description text after a catalog refresh
|
||||
python tools/archcenter_description_fetcher.py --limit 200
|
||||
|
||||
# Re-download cached drawio/svg/png assets after a catalog refresh
|
||||
python tools/archcenter_zip_downloader.py # idempotent; skips slugs whose folder already has a .drawio
|
||||
```
|
||||
|
||||
The cached assets under `kb/diagram/assets/archcenter-refs/` (~83MB) are committed so the skill works offline. Lookup uses a local index for near-instant matches, and can be rebuilt manually when needed. Refresh quarterly or when `refresh_arch_catalog.py --whats-new` adds entries — both downloader and description fetcher are idempotent and only fetch what's missing.
|
||||
|
||||
### KB Health & Freshness
|
||||
|
||||
The KB is automatically monitored for staleness and broken links:
|
||||
|
||||
| Check | How | When |
|
||||
|---|---|---|
|
||||
| **Broken links** | `python tools/refresh_arch_catalog.py --check-links` | Weekly (CI), or on demand |
|
||||
| **Stale prices** | `python tools/refresh_sku_catalog.py --validate` | Weekly (CI), or on demand |
|
||||
| **KB freshness** | `python tools/kb_freshness.py --check` | On skill startup (pre-flight) |
|
||||
| **Diagram spec geometry** | `python tools/diagram_spec_validator.py --spec <spec.yaml>` | Auto, before every drawio/PPTX render |
|
||||
| **Diagram XML output** | `python tools/drawio_visual_validator.py <file.drawio>` | Auto, after `oci_diagram_gen.py` saves |
|
||||
|
||||
**Automated CI/CD:**
|
||||
- **Deploy workflow** (`.gitea/workflows/deploy.yaml`) — auto-deploys to MCP server on every push to `main`
|
||||
- **KB health workflow** (`.gitea/workflows/kb-health.yaml`) — runs every Monday 8am UTC, checks all catalog URLs and SKU freshness, reports broken links as artifacts
|
||||
|
||||
To run KB health manually:
|
||||
```bash
|
||||
# Check all 123 Architecture Center URLs for 404s
|
||||
python tools/refresh_arch_catalog.py --check-links
|
||||
|
||||
# Fix broken links: re-crawl What's New for updated URLs
|
||||
python tools/refresh_arch_catalog.py --whats-new
|
||||
|
||||
# Refresh stale pricing from Oracle API
|
||||
python tools/refresh_sku_catalog.py --refresh --diff
|
||||
```
|
||||
|
||||
### Feature Compatibility Matrix
|
||||
@@ -221,8 +339,11 @@ Option 8 in the menu generates a business case deck for customer internal approv
|
||||
| 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") |
|
||||
| TCO Comparison | Blank + Table | Current/as-is run-rate vs target/to-be run-rate |
|
||||
| BOM + Operations Breakdown | Blank + Tables | Cloud services, storage/infra, GoldenGate, operations, one-time bridge |
|
||||
| Forecasted TCO | Blank + Table | 24M/36M annual run-rate snapshots, not cumulative totals |
|
||||
| TCO Crossover | Native shapes | ADB-S vs ADB-D annual TCO and first cheaper period |
|
||||
| Business Value Model | Blank + Table | Financial baseline, architecture benefit, risk-adjusted value, KPIs |
|
||||
| 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 |
|
||||
@@ -230,6 +351,12 @@ Option 8 in the menu generates a business case deck for customer internal approv
|
||||
|
||||
Uses the **Oracle FY26 official PowerPoint template** with Redwood design system.
|
||||
|
||||
For ADB-S to ADB-D cases, the generator keeps workload ECPU demand separate
|
||||
from ADB-D physical capacity. Dedicated footprint is modeled as fixed DB server
|
||||
and storage server infrastructure; projected BOMs are annual run-rate snapshots
|
||||
at the horizon. Risk-reduction value is converted to USD only when the customer
|
||||
provides business impact per degraded/outage hour.
|
||||
|
||||
```bash
|
||||
python tools/oci_bizcase_gen.py --spec business-case.yaml --output business-case.pptx
|
||||
```
|
||||
@@ -282,6 +409,8 @@ If you paste discovery notes directly, the skill skips the menu and goes straigh
|
||||
|
||||
## Tools
|
||||
|
||||
All major generators accept either the canonical nested YAML specs or the flatter MCP payload aliases used by hosted clients.
|
||||
|
||||
```bash
|
||||
# Slide deck generation (technical proposal)
|
||||
python tools/oci_deck_gen.py --spec examples/proposal-spec.yaml --output proposal.pptx
|
||||
@@ -293,15 +422,36 @@ python tools/oci_pdf_gen.py --spec examples/proposal-spec.yaml --output proposal
|
||||
# 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
|
||||
# Architecture diagram — see docs/skill/output-formats.md
|
||||
# § "Standard diagram-generation procedure (MANDATORY)" for the full
|
||||
# workflow: ref-arch lookup → pre-generation review → spec authoring
|
||||
# → automatic spec validator → render → visual verification.
|
||||
# Supports OCI fallback aliases for services whose official toolkit icons
|
||||
# are still missing (for example PostgreSQL/Redis) plus `brand_icon` for
|
||||
# third-party systems such as Slack and Jira in both drawio and PPTX.
|
||||
python tools/archcenter_pattern_lookup.py "<topology keywords>" # 1. find canonical Oracle reference
|
||||
python tools/oci_diagram_gen.py --spec examples/diagram-spec.yaml --output arch.drawio # 2. render (validators run automatically)
|
||||
python tools/oci_pptx_render.py --pptx arch.pptx --output arch.png --width 1600 # 3. rasterize PPTX for visual review
|
||||
|
||||
# Pre-render geometry validator (auto-invoked by both renderers; CLI for ad-hoc spec checks)
|
||||
python tools/diagram_spec_validator.py --spec examples/diagram-spec.yaml --strict
|
||||
|
||||
# Post-render XML validator (auto-invoked inside OCIDiagramGenerator.save())
|
||||
python tools/drawio_visual_validator.py arch.drawio
|
||||
|
||||
# Output orchestrator (multiple formats at once)
|
||||
python tools/oci_output.py --spec examples/proposal-spec.yaml --format full --output-dir output/
|
||||
python tools/oci_output.py --spec examples/exacs-bom-spec.yaml --format bom --output-dir output/
|
||||
|
||||
# BOM / AppCA workbook
|
||||
python tools/oci_bom_gen.py --spec examples/exacs-bom-spec.yaml --output customer-bom.xlsx
|
||||
python tools/oci_bom_gen.py --spec examples/exacs-bom-spec.yaml --output customer-appca.xlsx --appca
|
||||
|
||||
# Architecture Center catalog
|
||||
python tools/refresh_arch_catalog.py --validate
|
||||
python tools/refresh_arch_catalog.py --whats-new
|
||||
python tools/refresh_arch_catalog.py --check-links
|
||||
python tools/archcenter_pattern_lookup.py "adb gcp fastconnect" --rebuild-index
|
||||
|
||||
# Feature compatibility
|
||||
python tools/feature_matrix_cli.py check "Auto Scaling" adb_s 23ai
|
||||
@@ -360,6 +510,28 @@ For temporary overrides (e.g., focusing on a specific customer), create `AGENTS.
|
||||
|
||||
Full setup details: [`codex/README.md`](codex/README.md)
|
||||
|
||||
#### Keeping the Claude and Codex skills in sync
|
||||
|
||||
The root `SKILL.md` (read by Claude Code) and `.agents/skills/oci-deal-accelerator/SKILL.md` (read by Codex) MUST stay byte-aligned modulo an auto-generated banner. If they drift, the two agents give the user different instructions.
|
||||
|
||||
Three layers of defense, run from least to most enforcement:
|
||||
|
||||
1. **Local pre-commit hook (recommended once per clone):**
|
||||
```bash
|
||||
make install-hooks
|
||||
```
|
||||
Sets `core.hooksPath = .githooks`. From then on, any commit that touches `SKILL.md` auto-runs `scripts/sync-skill.py` and stages the regenerated `.agents/` copy in the same commit. No manual step required.
|
||||
|
||||
2. **Manual sync (anytime):**
|
||||
```bash
|
||||
make sync-skill # write the .agents/ copy from SKILL.md
|
||||
make lint # check (also runs sync --check)
|
||||
```
|
||||
|
||||
3. **CI gate (`.gitea/workflows/skill-sync.yaml`):** every push/PR runs `python scripts/sync-skill.py --check` and fails the build if the two files have drifted. Catches anyone who skipped the hook.
|
||||
|
||||
**Direction is always root → `.agents/`.** The `.agents/` copy is auto-generated; do NOT edit it directly — the next sync will silently overwrite your changes. Both the local pre-commit hook and the CI gate REJECT a commit/PR that stages `.agents/skills/oci-deal-accelerator/SKILL.md` without a matching root `SKILL.md` change. If you find yourself wanting to tweak the Codex side specifically, that signal belongs in `AGENTS.md` (Codex-only project instructions) — `SKILL.md` content stays unified across both agents.
|
||||
|
||||
## Roadmap
|
||||
|
||||
### ECAL Completeness (see `docs/ecal-gaps-backlog.md` for full list)
|
||||
|
||||
268
SKILL.md
@@ -15,32 +15,54 @@ You follow the **Oracle ECAL framework** (Define → Design → Deliver) to prod
|
||||
|
||||
When the user starts a conversation without providing discovery notes or a specific request, present the welcome message and capability menu.
|
||||
|
||||
### Pre-flight: KB freshness check
|
||||
### Pre-flight checks
|
||||
|
||||
**Before showing the welcome message**, run `python tools/kb_freshness.py --check --json` and parse the JSON output. Behavior based on the result:
|
||||
Run these checks silently **before** showing the welcome message. **CRITICAL:** Never show command execution, tool output, or errors to the user. If any check fails, silently skip it and proceed to the welcome message. These checks are informational — they NEVER block the user.
|
||||
|
||||
- **`stale_count == 0`** → proceed directly to the welcome message. No banner.
|
||||
- **`stale_count > 0` and at least one file has `refreshable: true`** → prepend this banner above the menu and ask the user inline:
|
||||
#### Check 1: KB changelog banner
|
||||
|
||||
Read the file `kb/CHANGELOG.md` and extract the **most recent date and first bullet point**. If the file exists and has entries, prepend a one-line banner above the welcome message:
|
||||
|
||||
```
|
||||
📢 KB updated (<date>): <first bullet summary>
|
||||
```
|
||||
|
||||
Example: `📢 KB updated (Apr 14): Diagram generator calibrated from 37 Oracle ref architectures`
|
||||
|
||||
If the file is missing or empty, skip — no banner.
|
||||
|
||||
#### Check 2: Local repo updates (git users only)
|
||||
|
||||
Run `git fetch --dry-run origin main 2>/dev/null`. If the output contains any text (meaning there are remote commits not yet pulled), prepend this banner:
|
||||
|
||||
```
|
||||
📢 KB updates available — run `git pull` to get latest prices and fixes.
|
||||
```
|
||||
|
||||
If the command fails (not a git repo, no network, MCP deployment), silently skip. This check is only relevant for users running the skill from a local git clone.
|
||||
|
||||
#### Check 3: KB freshness
|
||||
|
||||
Run `make kb-check 2>/dev/null` and parse the JSON output. Behavior:
|
||||
|
||||
- **`stale_count == 0`** → no banner.
|
||||
- **`stale_count > 0` and at least one file has `refreshable: true`** → prepend banner and ask inline:
|
||||
|
||||
```
|
||||
⚠️ KB freshness: <N> file(s) outdated (oldest: <file> — <age_days>d).
|
||||
<M> can be auto-refreshed (SKU catalog, Architecture Center).
|
||||
Refresh now before showing the menu? [y/N]
|
||||
<M> can be auto-refreshed. Refresh now? [y/N]
|
||||
```
|
||||
|
||||
- If the user replies `y` / `yes` / `sí` → run `python tools/kb_freshness.py --auto-refresh`, wait for completion, then show the menu.
|
||||
- If the user replies `n` / anything else → show the menu immediately, with a one-line compact reminder above it: `⚠️ <N> KB file(s) stale — run /freshness or python tools/kb_freshness.py --auto-refresh later.`
|
||||
- `y` / `yes` / `sí` → run `make freshness-refresh`, then show menu.
|
||||
- Anything else → show menu with one-line reminder: `⚠️ <N> KB file(s) stale — run make freshness-refresh later.`
|
||||
|
||||
- **`stale_count > 0` but no file has `refreshable: true`** (only manual files stale) → prepend a non-blocking informational banner above the menu, do NOT ask:
|
||||
- **`stale_count > 0` but no `refreshable: true`** → non-blocking info banner, then show menu directly:
|
||||
|
||||
```
|
||||
⚠️ KB freshness: <N> file(s) need manual review (oldest: <file> — <age_days>d).
|
||||
No automated refresh available — see kb/README.md for review process.
|
||||
```
|
||||
|
||||
Then show the menu directly.
|
||||
|
||||
**Important**: this check is informational, not gating. If `kb_freshness.py` errors out (exit 2 or missing tool), silently fall back to showing the welcome message — never block the user on tooling failures.
|
||||
If `make kb-check` errors out (exit ≠ 0, missing make, missing Python, missing tool), **silently skip** — no error output, no banner, no mention of failure.
|
||||
|
||||
### Welcome Message
|
||||
|
||||
@@ -61,10 +83,10 @@ Present these options as a compact numbered list. Each option has a bold title f
|
||||
```
|
||||
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*
|
||||
1. 📋 Full proposal — *notes → architecture + deck + native PPTX diagram + costs*
|
||||
2. 📐 Architecture diagram — *description/sketch → .excalidraw → .drawio or native PPTX*
|
||||
3. 📊 Slide deck — *architecture → .pptx with native OCI diagram*
|
||||
4. 💰 Cost estimate — *quick PAYG/BYOL comparison while you scope (terminal + optional deck)*
|
||||
|
||||
VALIDATE & CHECK
|
||||
─────────────────
|
||||
@@ -88,19 +110,78 @@ Present these options as a compact numbered list. Each option has a bold title f
|
||||
|
||||
SA TOOLS
|
||||
─────────────────
|
||||
13. 📦 BOM generator — *services + quantities → .xlsx Bill of Materials*
|
||||
13. 📦 BOM generator — *formal .xlsx artefact you send to the customer*
|
||||
14. 📤 BOM for AppCA — *BOM → .xlsx ready to import into AppCA*
|
||||
|
||||
━━━━━━━━━━━━━━━━━━━━━━━
|
||||
Pick a number, or just describe what you need.
|
||||
```
|
||||
|
||||
### Example Direct Requests
|
||||
|
||||
If the user asks for examples, or skips the menu and writes a natural-language request, prompts like these map directly to the capabilities above:
|
||||
|
||||
- `Generame un diagrama nativo en .pptx, simple y prolijo, de esta arquitectura: usuarios externos -> load balancer público -> 2 VMs de aplicación en subnet privada -> Autonomous Database Serverless. Quiero que quede presentable para mostrar directo en PowerPoint. No me pidas YAML ni setup adicional.`
|
||||
- `Sketch this architecture first for Excalidraw: external users -> public load balancer -> private app VMs -> Autonomous Database. Give me a native .excalidraw file so I can review and collaborate before making the formal diagram.`
|
||||
- `Generate a simple high-level integration diagram for this flow: Slack -> Oracle Integration Cloud (OIC) -> Jira Service Management -> My Oracle Support. Add clear Client, Oracle, and External layers. Use brand icons for Slack and Jira Service Management, and deliver both .drawio and .pptx.`
|
||||
- `Generate a high-level architecture diagram for this scenario: 1 PostgreSQL in OCI Ashburn, accessed from GCP Virginia through interconnect. PostgreSQL connects internally to 1 Autonomous Database Serverless, which also has 1 refreshable clone in the same region but in a different AD. Deliver both .drawio and .pptx. Keep it simple, executive-friendly, and technically correct.`
|
||||
- `Gere um BOM em USD para este cenário: PostgreSQL no OCI com 4 OCPU e 500 GB, ADB-S com 200 ECPU e 1 TB BYOL, 1 refreshable clone com o mesmo sizing e FastConnect de 1 Gbps. Aplique 11% de desconto, 12 meses, 24 horas por dia. Quero o arquivo .xlsx e um resumo claro do custo mensal e anual.`
|
||||
|
||||
### 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 **2**, ask **two explicit questions** in one message and wait for both answers before doing anything else:
|
||||
|
||||
```
|
||||
1. Describe the architecture you want to diagram (or paste a YAML spec if you have one).
|
||||
2. Which output format(s) do you want? Pick one or more:
|
||||
(a) sketch — native .excalidraw whiteboard draft for brainstorming
|
||||
(b) .drawio — editable technical diagram
|
||||
(c) .pptx — native Oracle-style PowerPoint diagram/slide
|
||||
(d) sketch + .drawio
|
||||
(e) sketch + .pptx
|
||||
(f) all
|
||||
```
|
||||
|
||||
If the user chooses **sketch only**, create a concise sketch spec and run `python tools/oci_excalidraw_gen.py --spec <sketch-spec.yaml> --output <output-dir>/architecture-sketch.excalidraw`. Save the generated `.excalidraw` file and companion `.md` instructions in the engagement output folder. Present the file list and the simple import/share workflow from the companion `.md` as the primary deliverable. Optionally save `architecture-sketch.mmd` as a secondary source when Mermaid is useful, but the native `.excalidraw` file is the draft artifact. Do not run the formal `absolute_layout` renderer unless the user asks to promote the sketch to `.drawio` or `.pptx`.
|
||||
|
||||
If the user chooses **sketch plus formal output**, produce the `.excalidraw` draft first and ask the user to confirm or adjust the intent before formal rendering. If the user explicitly says to generate all outputs without another checkpoint, generate the sketch and continue. If the user later uploads or references an edited `.excalidraw` from Excalidraw.com, treat it as visual discovery/reference input for the formal `.drawio` / `.pptx` flow; do not blindly convert its rough geometry into the final source of truth.
|
||||
|
||||
If the user provides an existing `.excalidraw` file and asks to convert it to `.drawio`, default to **Formal OCI diagram** unless they explicitly ask for a literal/whiteboard copy:
|
||||
- **Hard rule:** do **not** hand-roll draw.io XML with inline Python for this path. Use the repo tools below. If `python` is not available, use `.venv/bin/python` or `python3`; do not fall back to a custom converter.
|
||||
- **Formal OCI diagram (default)** — run `.venv/bin/python tools/excalidraw_to_oci_diagram.py --input <file.excalidraw> --output <output-dir>/<name>-oci.drawio --spec-output <output-dir>/<name>-oci.yaml`. This extracts the approved sketch intent, writes `*-analysis.yaml` and `*-review.md`, generates an `absolute_layout` YAML, then renders a new Oracle-style `.drawio` through `oci_diagram_gen.py` with OCI containers, icons, connector styles, and validators. For complex sketches (multicloud, hub-spoke, migration/cutover, cross-region DR, multiple regions/VCNs), run the same command with `--mode review` first, inspect/refine the generated analysis/spec, then render.
|
||||
- **Literal sketch conversion (secondary)** — run `.venv/bin/python tools/excalidraw_to_drawio.py --input <file.excalidraw> --output <output-dir>/<name>-literal.drawio` only when the user asks to preserve the exact whiteboard look. This is an editable bridge artifact and does **not** infer OCI icons/services.
|
||||
- **Both** — produce the formal OCI `.drawio` first, then the literal bridge if useful for comparison.
|
||||
|
||||
For any `.drawio` or `.pptx` output, **follow these steps in order — do NOT skip step 1**:
|
||||
1. **Reference-architecture lookup.** Run `python tools/archcenter_pattern_lookup.py "<topology keywords>"` against `kb/architecture-center/catalog.yaml` (123 Oracle-curated entries with cached `.drawio` / `_description.md` / `_template.yaml` under `kb/diagram/assets/archcenter-refs/`). Pick the highest-scoring entry whose topology matches.
|
||||
- **The cached `_template.yaml` is your YAML SCAFFOLD** — auto-extracted from the canonical `.drawio` by `tools/archcenter_drawio_to_template.py`. It carries Oracle's container geometry (region/vcn/ad/subnet bboxes), service positions, and edge waypoints in the `absolute_layout:` shape your spec uses. Copy it as the starting point, rename ids, fill in `type:` for services (the extractor leaves `type: TODO_identify` because the canonical icon TYPE is encoded in stencil bytes — pick the right alias from the renderer's TYPE_TO_ICON), and adapt to the customer's components. Lookup result surfaces it as `cached: yaml=<path>`.
|
||||
- **The cached `.drawio` is the visual source of truth** if the template extractor missed something — open it (drawio.exe, the SVG companion, or the XML) for the canonical look.
|
||||
- **Migration/cutover + multicloud templates.** Also check `kb/diagram/templates/catalog.yaml`. Use `renderable_templates` when the user asks for an operational cutover/runbook view (for example ADB-S → ADB-D with OGG forward/reverse replication) instead of a canonical steady-state Architecture Center topology.
|
||||
- **Do NOT use `examples/` as a geometry source.** `examples/` is previous user output, not authoritative. The `_template.yaml` covers everything `examples/` was being abused for.
|
||||
- **Lookup budget: max 2 queries — never loop.** If query 1 returns nothing convincing, run ONE refinement (broader phrasing or different keyword angle), then STOP. Re-querying the catalog 3+ times to find a "better" match is the dominant time-sink in this phase — the catalog has 123 entries indexed once; if two passes can't surface a topology match, none exists. Output of the lookup tool also surfaces a **`⚠ KNOWN GAP`** banner at the top whenever the query touches a documented gap (e.g. OCI-native services accessed FROM GCP via Cross-Cloud Interconnect, or OCI Cache/Redis/PostgreSQL as primary subject). When that banner appears, follow its **Recommended composition** verbatim instead of running more queries — it lists the primitives to combine. When NO gap banner appears AND no top-3 entry matches the topology, present the closest 3 to the user with: *"No exact ref-arch matches. Closest hits are X / Y / Z. I can either base the diagram on the closest of these (geometry transfers, service names don't), or compose from `<list specific slugs / patterns>`. Which?"* — let the user pick the chassis instead of guessing.
|
||||
2. **Pre-generation review.** Confirm the component list with the user (REQUESTED + TECHNICAL DEPENDENCIES per the whitelist).
|
||||
3. **Author the spec in `absolute_layout` shape** — this is REQUIRED. Do NOT use the legacy workload-driven shape (`tenancy → regions → compartments → services`); it does not resolve OCI icon stencils, does not run through the spec validator, and produces wireframe-looking output (rectangles with text instead of real OCI icons). Every container, service, label, and connection needs explicit `(x, y, w, h)`.
|
||||
|
||||
**Where to look up valid `type:` values for services:** the authoritative sources are (1) `TYPE_TO_ICON` in `tools/oci_pptx_diagram_gen.py` (PPTX path) and `ICON_TYPE_ALIASES` in `tools/oci_diagram_gen.py` (drawio path), and (2) the slug keys in `kb/diagram/oci-icons.json` (drawio) and `kb/diagram/oci-pptx-icons-index.json` (PPTX). Do NOT grep `examples/` for `type:` patterns to discover valid slugs — `examples/` are previous user outputs that may use stale or non-canonical slugs. Both renderer files and both index files are exhaustive and current.
|
||||
|
||||
**Newer OCI services without a toolkit icon** (OCI Cache with Redis / Valkey, OCI PostgreSQL, etc. — services GA after the v24.2 toolkit shipped): use the generic icon as the canonical fallback (Oracle's own ref archs do the same — they embed custom inline SVG over the generic icon). The renderer's alias tables already route `type: redis` / `cache` / `valkey` / `postgresql` to the generic `database` stencil. Pair with an explicit `label:` carrying the real service name (e.g. `label: "OCI Cache (Redis)"`). When Oracle ships a v25+ toolkit with these icons, update `kb/diagram/oci-icons.json` + the alias tables and the next render uses the real icon automatically.
|
||||
4. **Spec validator runs automatically** before either renderer (`tools/diagram_spec_validator.py`). It runs ONLY on `absolute_layout` specs — that's another reason workload-driven is forbidden. Fix any errors before re-rendering.
|
||||
5. **Render.** `oci_diagram_gen.py` for drawio, `oci_deck_gen.py` for PPTX.
|
||||
6. **Visually verify.** `tools/oci_pptx_render.py` to rasterize, then read the PNG.
|
||||
|
||||
Full reference: `docs/skill/output-formats.md` § "Standard diagram-generation procedure (MANDATORY)".
|
||||
- If the user picks **3**, ask: "Describe the architecture or paste the spec. I'll generate the deck with a native OCI PowerPoint diagram when the architecture is structured enough."
|
||||
- If the user picks **4**, ask: "What services and sizing? (e.g., 'ADB-S 8 OCPU + 2 VMs + FastConnect'). License model — PAYG, BYOL, or both?"
|
||||
Then follow the cost-estimate flow:
|
||||
1. **Catalog first, web never.** `grep` [`kb/pricing/oci-sku-catalog.yaml`](kb/pricing/oci-sku-catalog.yaml) (auto-refreshed, authoritative) for the requested SKUs and consult [`docs/bom-cookbook.md`](docs/bom-cookbook.md) for copy-paste recipes (ExaCS X11M BYOL, ADB-Dedicated, ADB-S + Block, FastConnect, etc.). Use `kb/pricing/compute.yaml` for shape-level lookups. Do NOT reach for WebSearch / WebFetch / `oracle.com` for list prices — the catalog IS the source.
|
||||
2. **Staleness gate.** Read `last_verified` at the top of the catalog. If >60 days stale, warn the user and offer `python tools/refresh_sku_catalog.py --refresh` before quoting. If <=60 days, proceed without web lookups.
|
||||
3. **Catalog miss policy.** If a SKU is genuinely absent after `grep` (not "I didn't find it on first try"), state it explicitly, then run `python tools/refresh_sku_catalog.py --refresh` and re-grep. Only if a fresh catalog still doesn't surface it is `oracle.com/cloud/price-list/` an acceptable fallback — and cite the source URL next to the part number.
|
||||
4. **Source extraction.** When the request references a customer artefact (`.pptx`, BOM, quote), extract the topology / sizing from the artefact first, list each scenario's components, then map to SKUs. Show the mapping (component → SKU) so the SA can audit it.
|
||||
5. **Quote shape.** Per scenario list: SKU + product name + metric + list price USD + quantity + monthly subtotal. End with total $/month and total $/year. Cite the catalog's `last_verified` date in the output.
|
||||
6. When both PAYG and BYOL are requested, present them side-by-side (same SKU rows, two price columns). Save the cost estimate to `examples/<customer>-cost-estimate.yaml` and present the formatted table in the terminal.
|
||||
7. **Disclaimer (mandatory).** Read the `disclaimer:` field from `kb/pricing/oci-sku-catalog.yaml` and append it verbatim — as a footer line under the terminal table, and (if a deck is generated) as a final "Commercial Disclaimer" slide. Do NOT paraphrase or rewrite; the field already carries Oracle's sample-quote boilerplate plus the "reference only / no client-specific discounts" clauses. `tools/oci_bom_gen.py` already reads this field for BOM xlsx output.
|
||||
8. **Deck verification (if a deck is generated).** Open the produced `.pptx` with `python-pptx` and assert: (a) slide count matches spec, (b) each slide's expected title is present, (c) chart types match what the spec asked for (e.g. `COLUMN_CLUSTERED`, `COLUMN_STACKED`), (d) the disclaimer slide is the last one. Print a one-line `deck OK: <N> slides, titles=[...]` summary so the SA can audit at a glance. Rasterizing to PNG via PowerPoint is not always available on Linux/WSL — structural validation is the floor, not optional.
|
||||
- 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
|
||||
@@ -119,13 +200,22 @@ Pick a number, or just describe what you need.
|
||||
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/oci-sku-catalog.yaml` (live SKU prices), `kb/pricing/compute.yaml` (shape-level), `kb/field-knowledge/pricing-knowledge.yaml` (billing models, BYOL rules, free tiers), 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)
|
||||
4. For ADB-S to ADB-D cases, use the reusable `adbs_to_adbd` model:
|
||||
- keep workload/billable ECPU demand separate from dedicated physical capacity (`DB nodes × ECPU per DB node`)
|
||||
- do not assume ADB-D uses 100% physical capacity; show utilization explicitly
|
||||
- keep workload demand comparable between ADB-S and ADB-D unless customer data says otherwise
|
||||
- model ADB-D fixed DB server + storage server infrastructure separately from workload ECPU
|
||||
- keep ADB-S as-is components explicit: primaries, local ADG, cross-region standby, refreshable/read clones, read clones, GoldenGate
|
||||
5. Separate financial views: current/as-is run-rate, target/to-be run-rate, forecasted TCO by horizon, and scenario comparison when applicable. Avoid ambiguous labels such as `OCI Annual`; use scenario labels like `ADB-S As-Is`, `ADB-D Dedicated`, `Incremental Investment`, and `TCO Crossover`.
|
||||
6. Generate companion BOMs for current as-is, to-be steady state, and 24M/36M projected as-is/to-be annual run-rate snapshots. Projected BOMs are not cumulative multi-year totals.
|
||||
7. Model read architecture explicitly: ADB-S may require refreshable/read clones because standby is not the application read path; ADB-D may use Local ADG read-only standby and retire steady-state clones. Reflect this in BOM notes, value drivers, and risk/value slides.
|
||||
8. Add storage economics: ADB-S per-GB storage, ADB-D fixed footprint, customer-provided base break-even when available, recalculated break-even for the proposed footprint, and visible storage offset.
|
||||
9. Treat GoldenGate as `steady_state`, `migration_bridge_only`, or `migration_plus_fallback_months`. Bridge-only GoldenGate is Year-1 / one-time and is excluded from future steady-state BOMs.
|
||||
10. Add a TCO crossover chart when multi-year forecast exists, defaulting to native PowerPoint grouped bars with executive labels (`Near-term`, `Year 1`, `Year 2`, `Year 3`) and delta bullets.
|
||||
11. For risk-reduction cases, generate a Business Value Model instead of generic ROI percentages. Do not invent revenue impact; convert stability to USD only when the customer provides revenue-at-risk, transaction margin, fraud loss impact, or cost per degraded/outage hour.
|
||||
12. Assess migration and inaction risks against the selected scenario only. Remove obsolete risks such as `if 4x3 is selected` after the customer has chosen `5x3`.
|
||||
13. Produce an executive deck using Oracle FY26 template (`config/oracle-pptx-layouts.yaml` → `business_case` type), plus business-case YAML and generated BOM artefacts where applicable.
|
||||
14. **Disclaimer + deck verification.** Append the `disclaimer:` field from `kb/pricing/oci-sku-catalog.yaml` as a final "Commercial Disclaimer" slide (verbatim — see option 4 step 7). Then run structural PPTX validation that reads text boxes, table cells, and grouped shapes; check slide count/titles, disclaimer-last, required assumptions, and forbidden obsolete phrases before reporting completion.
|
||||
- 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:
|
||||
@@ -171,7 +261,7 @@ Pick a number, or just describe what you need.
|
||||
|
||||
**BOM Output Rules:**
|
||||
- NEVER include "Confidential: Internal ONLY" or any confidentiality marking
|
||||
- ALWAYS include the Oracle Cost Estimator disclaimer at the bottom
|
||||
- ALWAYS include the disclaimer from `kb/pricing/oci-sku-catalog.yaml` `disclaimer:` field at the bottom — `tools/oci_bom_gen.py` reads it automatically (do not duplicate, paraphrase, or maintain a second copy elsewhere)
|
||||
- Only include SKUs the customer actually requested — never dump the full catalog
|
||||
- Show cost proportions so the customer can see where their spend concentrates
|
||||
- Use Excel formulas (not static values) so the customer can adjust quantities
|
||||
@@ -194,7 +284,7 @@ After delivering an output, show elapsed time and offer the natural next step.
|
||||
```
|
||||
✅ Done — [task description] completed in [Xm Ys]
|
||||
|
||||
→ [A] Generate additional outputs (drawio / doc / xlsx)
|
||||
→ [A] Generate additional outputs (sketch / 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
|
||||
@@ -252,6 +342,32 @@ Full tier definitions and artifact matrix: [docs/engagement-tiers.md](docs/engag
|
||||
|
||||
**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 1b — Extraction Receipt (MANDATORY).** After parsing discovery notes, present an extraction receipt to the user BEFORE proceeding. This ensures the architecture is built on confirmed facts, not assumptions:
|
||||
```
|
||||
📋 Extraction Receipt
|
||||
━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
From your input I extracted:
|
||||
|
||||
CONFIRMED (explicitly stated):
|
||||
• [field]: [value] — source: "[exact quote or reference from notes]"
|
||||
• [field]: [value] — source: "[exact quote or reference from notes]"
|
||||
|
||||
INFERRED (not stated, derived from context):
|
||||
• [field]: [value] — reason: "[why I inferred this]"
|
||||
|
||||
MISSING (needed but not provided):
|
||||
• [field] — needed for: [which artifact or decision needs it]
|
||||
|
||||
━━━━━━━━━━━━━━━━━━━━
|
||||
Confirm, correct, or fill gaps before I proceed.
|
||||
```
|
||||
Rules:
|
||||
- Every field in the workload profile that you populate must appear in either CONFIRMED or INFERRED.
|
||||
- Do NOT proceed to Step 2 until the user confirms the receipt.
|
||||
- If the user provides additional data, update the receipt and re-confirm.
|
||||
- When generating the workload-profile.yaml, tag each field with `source: customer` (confirmed), `source: inferred`, or `source: default` so the SA knows what to validate with the customer.
|
||||
|
||||
**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.
|
||||
@@ -285,7 +401,7 @@ Capture enough about current state to architect the future. Frame the problem
|
||||
|
||||
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.
|
||||
3. **Compose topology** from `kb/patterns/` blocks. Check conflicts and apply compliance overlays. Use `kb/patterns/application-patterns.yaml` for workload-type guidance. **Do NOT silently add components** — only add technical dependencies from the closed whitelist in the Guardrails section below. Everything else must be proposed as optional in the pre-generation review.
|
||||
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
|
||||
@@ -308,6 +424,28 @@ Capture enough about current state to architect the future. Frame the problem
|
||||
|
||||
#### Confirm (Solution Proposal)
|
||||
|
||||
**Completeness gate (MANDATORY before generating artifacts).** Before calling any generation tool (deck, diagram, BOM, PDF), verify that critical fields are populated based on engagement tier:
|
||||
|
||||
| Field | Small | Standard | Complex |
|
||||
|---|---|---|---|
|
||||
| customer_name | required | required | required |
|
||||
| workload_type | required | required | required |
|
||||
| databases (type + count) | required | required | required |
|
||||
| primary_region | required | required | required |
|
||||
| compliance_frameworks | — | required | required |
|
||||
| RTO / RPO | — | required | required |
|
||||
| team_size | — | required | required |
|
||||
| current_infrastructure | — | required | required |
|
||||
| migration_driver | — | required | required |
|
||||
| environment_strategy | — | — | required |
|
||||
| operational_model | — | — | required |
|
||||
| multi_region_topology | — | — | required |
|
||||
| data_residency | — | — | required |
|
||||
|
||||
- If **required** fields are missing: ask the user before generating.
|
||||
- If **optional** fields are missing: list them as assumptions in the output (e.g., "Assumed: PAYG pricing, single environment, no compliance requirements").
|
||||
- Fields tagged `source: inferred` in the workload profile count as populated but should be flagged as assumptions.
|
||||
|
||||
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)
|
||||
@@ -349,7 +487,7 @@ Full DELIVER guide: [docs/deliver-phase.md](docs/deliver-phase.md)
|
||||
|
||||
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.
|
||||
- **Options 1-4, 8:** Primary output is `.pptx` (slide deck), `.drawio` (diagram), and/or native `.excalidraw` sketch when the user requests draft mode. YAML/Mermaid specs are saved alongside when useful but never presented as the final 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`.
|
||||
@@ -362,6 +500,14 @@ See [docs/skill/output-formats.md](docs/skill/output-formats.md) for the per-cus
|
||||
|
||||
---
|
||||
|
||||
## Cookbook: Building Tool Payloads
|
||||
|
||||
Any pricing or SKU work — cost estimate (option 4), BOM (option 13), BOM-AppCA (option 14), business-case TCO (option 8), scenario comparison from a customer artefact (`.pptx`, BOM, quote) — starts in the local catalog, not on the web. Check [docs/bom-cookbook.md](docs/bom-cookbook.md) for copy-paste recipes (ExaCS X11M BYOL, ADB-Dedicated, ADB-S + Block + FastConnect) and the gotchas that otherwise burn exploration turns (e.g. ADB-Dedicated shares infrastructure SKUs with ExaCS — there are no separate `adb_dedicated` SKUs in the catalog).
|
||||
|
||||
If a requirement does not match a recipe, `grep` [`kb/pricing/oci-sku-catalog.yaml`](kb/pricing/oci-sku-catalog.yaml) and consult `kb/services/` before inventing SKUs. See "What You Do NOT Do" for the web-lookup rule and `kb/pricing/oci-sku-catalog.yaml`'s `last_verified` for staleness handling.
|
||||
|
||||
---
|
||||
|
||||
## Knowledge Base
|
||||
|
||||
KB lives under `kb/`. See [kb/README.md](kb/README.md) for the directory map, frontmatter requirements, refresh tooling, and contributor guide.
|
||||
@@ -416,23 +562,49 @@ KB lives under `kb/`. See [kb/README.md](kb/README.md) for the directory map, fr
|
||||
|
||||
## 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.
|
||||
- **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. The ONLY exception is the closed whitelist of technical dependencies below.
|
||||
|
||||
- **Technical dependency whitelist (closed — nothing else is auto-added):**
|
||||
|
||||
| If the user requests… | Auto-include | Reason |
|
||||
|---|---|---|
|
||||
| FastConnect | DRG | FastConnect terminates on DRG — cannot work without it |
|
||||
| VPN Connect | DRG | IPSec tunnels terminate on DRG |
|
||||
| ADB-S / ExaCS with backup to Object Storage | Service Gateway | Backup traffic requires SGW for Oracle Services Network |
|
||||
| Any service in a public subnet | Internet Gateway | Public subnet routing requires IGW |
|
||||
| Any private subnet service needing internet egress | NAT Gateway | Private-to-internet routing requires NAT |
|
||||
| Cross-region DR (Data Guard, FSDR) | Remote Peering Connection (RPC) | Cross-region VCN connectivity requires RPC on both DRGs |
|
||||
|
||||
Everything NOT in this table — including Monitoring, Logging, Events, Vault, Data Safe, WAF, Cloud Guard, Bastion, management subnets, compartment boundaries — requires explicit user approval via the pre-generation review.
|
||||
|
||||
- **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?
|
||||
- **MANDATORY pre-generation review.** Before generating ANY diagram, deck, or architecture artifact, you MUST confirm the component list with the user. Never skip this step. Present three clearly separated sections:
|
||||
```
|
||||
This takes 5 seconds to confirm and prevents rework.
|
||||
I'll generate with:
|
||||
|
||||
REQUESTED (from your input):
|
||||
✅ [only components explicitly mentioned by the user]
|
||||
|
||||
TECHNICAL DEPENDENCIES (auto-added per whitelist):
|
||||
⚙️ [only items from the whitelist table above, with reason]
|
||||
|
||||
OPTIONAL — want me to add any of these?
|
||||
○ Observability (Monitoring, Logging, Events)
|
||||
○ Security services (Vault, Data Safe, WAF, Cloud Guard)
|
||||
○ Management subnet
|
||||
○ Compartment boundaries
|
||||
○ Bastion / jump host
|
||||
○ [other relevant options based on context]
|
||||
|
||||
Generate with the above, or adjust?
|
||||
```
|
||||
Wait for the user's response before generating. If the user says "just generate" or equivalent, proceed with only REQUESTED + TECHNICAL DEPENDENCIES (no optionals).
|
||||
|
||||
- **Source attribution.** When the user provides documents, URLs, meeting notes, or external data:
|
||||
- Cite the source when extracting data: "From [document/source]: [extracted fact]"
|
||||
- Clearly separate facts from the source vs. your own inferences
|
||||
- If the source contradicts the internal KB, flag the conflict explicitly and let the architect decide
|
||||
|
||||
## What You Do NOT Do
|
||||
|
||||
@@ -440,6 +612,10 @@ KB lives under `kb/`. See [kb/README.md](kb/README.md) for the directory map, fr
|
||||
- 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 use WebSearch / WebFetch / `oracle.com` for OCI list prices or SKU lookups. `kb/pricing/oci-sku-catalog.yaml` is auto-refreshed via `tools/refresh_sku_catalog.py` (Oracle apexapps pricing API) and is the source of truth — including for ECPU/OCPU rates, BYOL deltas, Exadata X11M part numbers, and ADB-D ECPU SKUs. Web fallback is allowed ONLY when (a) the SKU is genuinely absent after `grep` AND a fresh `--refresh` still does not surface it, or (b) the catalog's `last_verified` is >60 days stale and a refresh is not currently possible. In either case, cite the source URL alongside the part number. Reflexively reaching for WebSearch when the catalog already has the answer is the most common cost-estimate failure mode — don't.
|
||||
- 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.
|
||||
- **The skill ships as an MCP server.** This repo is packaged and served via the hosted MCP at `https://mcp.tech-lad.com/deal-accelerator/mcp/`. Anything you change in the skill's runtime — `tools/`, `scripts/`, `kb/`, `SKILL.md`, `AGENTS.md`, `.agents/` — must keep working in that deployed environment, not just on the SA's laptop. Concrete implications: (1) NO machine-specific paths (use `pathlib.Path(__file__).resolve().parent.parent` or env vars, never hardcoded `/mnt/c/...` or `/home/diego/...`); (2) NO required network calls during normal operation (the MCP container won't have access to drawio.exe, paid APIs, or Diego's local files — opt-in via env vars like `DRAWIO_EXE` / `ANTHROPIC_API_KEY`, never required); (3) NO writes outside the repo tree (the MCP filesystem is the cloned repo, write only under `examples/`, `tmp/`, or the artifacts the skill is meant to produce); (4) NO new dependencies that aren't in `requirements.txt` (CI installs from there, the MCP container too); (5) any new tool must work in a fresh clone with `make venv` — no manual setup steps. Before adding a feature that depends on a binary, an external service, or a privileged operation, ask whether it'll work when the SA is hitting the MCP endpoint with no laptop attached.
|
||||
|
||||
- **You do NOT edit skill source code or tooling when the user is in "menu mode".** When the user invoked the skill via the welcome menu (options 1–14) or asked for one of the menu outputs (proposal, diagram, deck, BOM, WA review, etc.), your job is to USE the existing tools, not modify them. Do NOT touch `tools/`, `scripts/`, `kb/diagram/*.json`, or any other code/index file as part of fulfilling a menu request — even if you discover a bug or a missing alias mid-task. If you hit a tool gap (missing icon alias, broken renderer, type that doesn't resolve), surface it as a follow-up at the end of your reply (e.g. "I noticed `refreshable_clone` doesn't have a PPTX icon alias — flag this for the maintainer to add to `tools/oci_pptx_diagram_gen.py::TYPE_TO_ICON`") rather than silently patching it. Code edits happen in a separate "developer mode" engagement, not while the SA is generating customer artifacts. The two exceptions: (1) `kb/field-findings/tracker.yaml` via menu option 11 (the menu's purpose IS to write that file), and (2) writing the customer's spec/output YAML files under `examples/<customer>/` — those are the deliverable, not the skill itself.
|
||||
|
||||
@@ -8,7 +8,10 @@
|
||||
# Navigate to the project root
|
||||
cd oci-deal-accelerator
|
||||
|
||||
# Run Codex — it auto-discovers AGENTS.md and .agents/skills/
|
||||
# One-time: create virtual environment with all dependencies
|
||||
make venv
|
||||
|
||||
# Run Codex — it auto-discovers AGENTS.md, .agents/skills/, and .codex/config.toml
|
||||
codex
|
||||
|
||||
# Or explicitly load the skill
|
||||
@@ -18,6 +21,18 @@ 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)
|
||||
- `.codex/config.toml` (project sandbox + approval config — **enables network for pip**)
|
||||
|
||||
### Why `.codex/config.toml` matters
|
||||
|
||||
By default Codex CLI blocks network access and prompts before every command.
|
||||
The committed `.codex/config.toml` pre-configures this project with:
|
||||
|
||||
- `approval_policy = "never"` — no per-command prompts
|
||||
- `sandbox_mode = "workspace-write"` — agent can write in the repo
|
||||
- `network_access = true` — `pip install` and `make venv` actually work
|
||||
|
||||
Without this file, `make venv` fails with `No matching distribution found for pyyaml` because PyPI is unreachable from the sandbox.
|
||||
|
||||
### Option 2: Using Codex App
|
||||
|
||||
|
||||
45
config/brand-icons.yaml
Normal file
@@ -0,0 +1,45 @@
|
||||
version: 1
|
||||
|
||||
# Resolution policy:
|
||||
# 1. Prefer officially downloaded vendor assets committed under
|
||||
# kb/diagram/brand-icons/official/
|
||||
# 2. Fall back to vetted local assets under
|
||||
# kb/diagram/brand-icons/fallback/
|
||||
#
|
||||
# The renderers resolve by alias first, then walk `resolution_order`
|
||||
# until they find an existing file.
|
||||
resolution_order:
|
||||
- official_svg
|
||||
- official_png
|
||||
- fallback_svg
|
||||
- fallback_png
|
||||
|
||||
icons:
|
||||
slack:
|
||||
label: Slack
|
||||
aliases:
|
||||
- slack_app
|
||||
- slack_bot
|
||||
official_png: kb/diagram/brand-icons/official/slack/slack_hash_256.png
|
||||
|
||||
jira:
|
||||
label: Jira
|
||||
aliases:
|
||||
- atlassian_jira
|
||||
official_svg: kb/diagram/brand-icons/official/jira/Jira_icon.svg
|
||||
|
||||
jira_service_management:
|
||||
label: Jira Service Management
|
||||
aliases:
|
||||
- jsm
|
||||
- jira-service-management
|
||||
- jira service management
|
||||
official_svg: kb/diagram/brand-icons/official/jira-service-management/Jira-Service-Management_icon.svg
|
||||
|
||||
jirasoftware:
|
||||
label: Jira Software
|
||||
aliases:
|
||||
- jira_software
|
||||
- jira-software
|
||||
- jira software
|
||||
fallback_svg: kb/diagram/brand-icons/fallback/jirasoftware.svg
|
||||
@@ -4,7 +4,7 @@
|
||||
output_selection:
|
||||
description: |
|
||||
The architect can specify output format when requesting deliverables:
|
||||
deck ← default, just the slide deck
|
||||
deck ← default, slide deck with native OCI PowerPoint diagram when applicable
|
||||
deck + drawio ← deck + editable diagram
|
||||
deck + doc ← deck + detailed technical document
|
||||
deck + xlsx ← deck + detailed cost spreadsheet
|
||||
@@ -22,12 +22,12 @@ output_selection:
|
||||
deck:
|
||||
extension: ".pptx"
|
||||
generator: "tools/oci_deck_gen.py"
|
||||
description: "10-12 slide architecture proposal"
|
||||
description: "10-12 slide architecture proposal with native OCI PowerPoint diagram when applicable"
|
||||
|
||||
drawio:
|
||||
extension: ".drawio"
|
||||
generator: "tools/oci_diagram_gen.py"
|
||||
description: "Editable architecture diagram (draw.io)"
|
||||
description: "Editable architecture diagram (draw.io) for technical editing workflows"
|
||||
|
||||
doc:
|
||||
extension: ".docx"
|
||||
@@ -133,7 +133,7 @@ deck_structure:
|
||||
|
||||
- number: 3
|
||||
type: architecture_diagram
|
||||
content: "Full architecture diagram (85% of slide)"
|
||||
content: "Full architecture diagram (85% of slide), preferring native OCI PowerPoint shapes over pasted images"
|
||||
style: "White background, diagram fills slide"
|
||||
|
||||
- number: 4
|
||||
|
||||
117
config/pptx-icon-library.yaml
Normal file
@@ -0,0 +1,117 @@
|
||||
asset:
|
||||
bundled_path: kb/diagram/assets/OCI_Icons.pptx
|
||||
manifest_path: kb/diagram/oci-pptx-icons-manifest.yaml
|
||||
index_path: kb/diagram/oci-pptx-icons-index.json
|
||||
env_var: OCI_ICONS_PPTX_PATH
|
||||
search_globs:
|
||||
- /mnt/c/Users/*/Downloads/OCI_Icons*.pptx
|
||||
- ~/Downloads/OCI_Icons*.pptx
|
||||
- kb/diagram/assets/OCI_Icons*.pptx
|
||||
|
||||
refresh:
|
||||
sync_discovered_asset_into_bundle: true
|
||||
choose_newest_discovered_match: true
|
||||
|
||||
instruction_index:
|
||||
noise_contains:
|
||||
- "copyright"
|
||||
- "oracle and/or its affiliates"
|
||||
noise_exact:
|
||||
- "tip"
|
||||
|
||||
semantic_markers:
|
||||
connectors_logical:
|
||||
title_contains: "Connectors"
|
||||
all_text:
|
||||
- "Open Arrowhead style"
|
||||
- "Bark color"
|
||||
- "relationships between icons and grouping boxes"
|
||||
connector_labels:
|
||||
all_text:
|
||||
- "connector labels"
|
||||
- "Place connector labels on the horizontal portions"
|
||||
grouping:
|
||||
title_contains: "Grouping"
|
||||
all_text:
|
||||
- "OCI Region"
|
||||
- "Availability Domain"
|
||||
- "Compartment"
|
||||
landscape_blank_template:
|
||||
all_text:
|
||||
- "Landscape Blank Template"
|
||||
- "Location Canvas"
|
||||
- "OCI Region"
|
||||
portrait_blank_template:
|
||||
all_text:
|
||||
- "Portrait Blank Template"
|
||||
- "OCI Region"
|
||||
landscape_sample_db_dr:
|
||||
all_text:
|
||||
- "Landscape Sample"
|
||||
- "Primary"
|
||||
- "Standby"
|
||||
- "Database"
|
||||
- "VCN"
|
||||
database_icons:
|
||||
title_contains: "Database"
|
||||
any_text:
|
||||
- "ADB-D"
|
||||
- "ATP-D"
|
||||
- "ADW-D"
|
||||
- "Data Guard"
|
||||
migration_icons:
|
||||
title_contains: "Migration"
|
||||
any_text:
|
||||
- "Database Migration"
|
||||
- "Oracle Cloud Migration Advisor"
|
||||
|
||||
extracted_shapes:
|
||||
grouping_labels:
|
||||
- "OCI Region"
|
||||
- "Availability Domain"
|
||||
- "Fault Domain"
|
||||
- "Tier"
|
||||
- "Tenancy"
|
||||
- "Compartment"
|
||||
- "VCN"
|
||||
- "Subnet"
|
||||
database_icon_labels:
|
||||
- "Database"
|
||||
- "Oracle Autonomous Database"
|
||||
- "ADW-D"
|
||||
- "ATP-D"
|
||||
- "ADB-D"
|
||||
- "Oracle Exadata Database Service"
|
||||
- "Data Safe"
|
||||
- "NoSQL Database"
|
||||
- "Database Management"
|
||||
- "Data Guard"
|
||||
- "Data Guard Recovery"
|
||||
|
||||
design_tokens:
|
||||
palette:
|
||||
bark: "312D2A"
|
||||
bark_soft: "66615C"
|
||||
gray_divider: "9E9892"
|
||||
gray_tick: "C8C5C1"
|
||||
bg_warm: "FBF6F0"
|
||||
white: "FFFFFF"
|
||||
oracle_red: "C74634"
|
||||
oracle_red_soft: "AE562C"
|
||||
oracle_blue: "3F7CC4"
|
||||
oracle_green: "00875A"
|
||||
oracle_amber: "E8A92F"
|
||||
tl_green: "EAF2DE"
|
||||
tl_yellow: "FBF1C7"
|
||||
tl_amber: "F8D9A8"
|
||||
tl_red: "F6CAC4"
|
||||
typography:
|
||||
primary_font: "Oracle Sans"
|
||||
connector_style:
|
||||
line_width_emu: 12700
|
||||
line_width_soft_emu: 9525
|
||||
color: "312D2A"
|
||||
arrowhead:
|
||||
type: "triangle"
|
||||
width: "sm"
|
||||
length: "sm"
|
||||
190
docs/bom-cookbook.md
Normal file
@@ -0,0 +1,190 @@
|
||||
# BOM Cookbook — Building `generate_bom` Payloads
|
||||
|
||||
Copy-paste recipes that map common customer requirements to the exact OCI SKUs the
|
||||
`generate_bom`, `generate_bom_appca`, and `generate_cost_estimate` MCP tools expect.
|
||||
The goal is to skip the "grep the catalog and guess SKUs" exploration loop that
|
||||
burns tool calls on well-known patterns.
|
||||
|
||||
> **If the requirement does not match any recipe below, consult
|
||||
> [`kb/services/`](../kb/services/) and
|
||||
> [`kb/pricing/oci-sku-catalog.yaml`](../kb/pricing/oci-sku-catalog.yaml)
|
||||
> before inventing SKUs.** All SKUs below are verified against the catalog as of
|
||||
> 2026-04-20; re-`grep` the catalog if a recipe ever fails.
|
||||
|
||||
## Payload Shape
|
||||
|
||||
All three tools accept the same envelope:
|
||||
|
||||
```json
|
||||
{
|
||||
"customer_id": "acme-prod",
|
||||
"discount_pct": 0.35,
|
||||
"currency": "USD",
|
||||
"services": [
|
||||
{ "sku": "B90777", "quantity": 1 }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
- `customer_id`: free-form identifier, used for output file naming.
|
||||
- `discount_pct`: decimal (0.35 = 35%). Applied to every line unless overridden.
|
||||
- `services[].quantity`: integer or float depending on the SKU metric (ECPUs, GB, hours).
|
||||
|
||||
---
|
||||
|
||||
## Recipe 1 — Exadata Cloud Service (ExaCS) X11M, BYOL
|
||||
|
||||
**When it matches:** "ExaCS X11M BYOL, N ECPUs, M TB storage, no DR" — customer-managed
|
||||
Oracle Database on dedicated Exadata hardware, BYOL licensing.
|
||||
|
||||
**SKUs:**
|
||||
|
||||
| SKU | Component | Typical qty |
|
||||
|-----|-----------|-------------|
|
||||
| `B90777` | Exadata Infrastructure — Base System | `1` per rack |
|
||||
| `B110627` | Exadata Database Server — X11M | `2` (Base/Quarter) — adjust per rack config |
|
||||
| `B110629` | Exadata Storage Server — X11M | `3` (Base/Quarter) — adjust per rack config |
|
||||
| `B110632` | Exadata Database ECPU — Dedicated Infra BYOL (X11M) | One per ECPU |
|
||||
|
||||
Swap `B110632` → `B110631` for PAYG (license-included) pricing.
|
||||
|
||||
**Payload (120 ECPUs, 120 TB, BYOL, standard Base System):**
|
||||
|
||||
```json
|
||||
{
|
||||
"customer_id": "acme-exacs",
|
||||
"discount_pct": 0.35,
|
||||
"currency": "USD",
|
||||
"services": [
|
||||
{ "sku": "B90777", "quantity": 1 },
|
||||
{ "sku": "B110627", "quantity": 2 },
|
||||
{ "sku": "B110629", "quantity": 3 },
|
||||
{ "sku": "B110632", "quantity": 120 }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Recipe 2 — Autonomous Database Dedicated (ADB-D), BYOL
|
||||
|
||||
**When it matches:** "ADB Dedicated, N ECPUs, M TB, BYOL" — Autonomous Database running
|
||||
on dedicated Exadata infrastructure.
|
||||
|
||||
**⚠️ Gotcha that burns tool calls:** ADB-Dedicated has **no separate infrastructure
|
||||
SKUs** in the catalog. It reuses the same Exadata dedicated infra SKUs as ExaCS
|
||||
(`B90777`, `B110627`, `B110629`) plus the same Exadata ECPU SKU (`B110631`/`B110632`).
|
||||
The Autonomous-vs-customer-managed distinction is a tenancy-level configuration,
|
||||
not a billing line item. Do not search for `autonomous_dedicated` SKUs — they do
|
||||
not exist.
|
||||
|
||||
**SKUs:** identical to Recipe 1.
|
||||
|
||||
**Payload (64 ECPUs, BYOL):**
|
||||
|
||||
```json
|
||||
{
|
||||
"customer_id": "acme-adbd",
|
||||
"discount_pct": 0.35,
|
||||
"currency": "USD",
|
||||
"services": [
|
||||
{ "sku": "B90777", "quantity": 1 },
|
||||
{ "sku": "B110627", "quantity": 2 },
|
||||
{ "sku": "B110629", "quantity": 3 },
|
||||
{ "sku": "B110632", "quantity": 64 }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Recipe 3 — Autonomous Database Serverless (ADB-S) + Block Volume + FastConnect
|
||||
|
||||
**When it matches:** "ADB-S ATP, N ECPUs, M TB data + block storage for app tier +
|
||||
FastConnect to on-prem" — the typical "app on OCI Compute, DB on ADB-S" pattern.
|
||||
|
||||
**SKUs:**
|
||||
|
||||
| SKU | Component | Metric |
|
||||
|-----|-----------|--------|
|
||||
| `B95701` | ADB ECPU (ATP or ADW) — license-included | ECPU/hour |
|
||||
| `B95703` | ADB ECPU BYOL — use instead of B95701 if BYOL | ECPU/hour |
|
||||
| `B95706` | ADB ATP data storage | GB/month |
|
||||
| `B95754` | ADB ADW data storage — use instead of B95706 for warehouse | GB/month |
|
||||
| `B95754a` | ADB backup storage | GB/month |
|
||||
| `B91961` | Block Volume storage (app tier) | GB/month |
|
||||
| `B91962` | Block Volume performance (VPU) — optional, for higher IOPS tiers | VPU/GB/month |
|
||||
| `B88326` | FastConnect 10 Gbps port | port-hour |
|
||||
|
||||
Swap `B88326` → `B88325` (1 Gbps) or `B93126` (100 Gbps) as needed.
|
||||
|
||||
**Payload (16 ECPUs ATP license-included, 2 TB data + 1 TB backup, 500 GB block, 10 G FastConnect):**
|
||||
|
||||
```json
|
||||
{
|
||||
"customer_id": "acme-adbs",
|
||||
"discount_pct": 0.35,
|
||||
"currency": "USD",
|
||||
"services": [
|
||||
{ "sku": "B95701", "quantity": 16 },
|
||||
{ "sku": "B95706", "quantity": 2048 },
|
||||
{ "sku": "B95754a", "quantity": 1024 },
|
||||
{ "sku": "B91961", "quantity": 500 },
|
||||
{ "sku": "B88326", "quantity": 1 }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Recipe 4 — Big Data Service + Data Science + Data Flow (analytics stack)
|
||||
|
||||
**When it matches:** "HDFS-managed cluster for ETL", "notebooks + model deployment",
|
||||
"managed Spark pipelines" — typical OCI analytics/AI workload mix.
|
||||
|
||||
**SKUs:**
|
||||
|
||||
| SKU | Component | Metric |
|
||||
|-----|-----------|--------|
|
||||
| `B91128` | Big Data Service — Compute Standard (real) | OCPU/hour |
|
||||
| `B91129` | Big Data Service — Compute Dense I/O (real) | OCPU/hour |
|
||||
| `B91130` | Big Data Service — Compute HPC (real) | OCPU/hour |
|
||||
| `B93555` | Big Data Service — Core (real) | OCPU/hour |
|
||||
| `EST-DS-NOTEBOOK` | **[Estimate]** Data Science notebook session — priced as underlying VM.Standard OCPU | OCPU/hour |
|
||||
| `EST-DS-MODEL` | **[Estimate]** Data Science model-deployment endpoint — priced as underlying VM.Standard OCPU | OCPU/hour |
|
||||
| `EST-DF-SPARK` | **[Estimate]** Data Flow managed Spark runtime — priced as underlying VM.Standard OCPU | OCPU/hour |
|
||||
|
||||
OCI Data Science and OCI Data Flow have no dedicated SKUs in the Oracle public
|
||||
pricing API — both are billed via the underlying Compute shape + Block/Object
|
||||
Storage consumed. The `EST-*` entries are placeholder estimates (VM.Standard3.Flex
|
||||
OCPU rate) so BOMs can include them as line items with an explicit "estimate"
|
||||
flag; confirm the actual shape and hours with the customer before quoting.
|
||||
|
||||
**Payload (16 BDS Standard + 8 BDS Dense I/O + 4 notebook + 2 model + 8 Spark):**
|
||||
|
||||
```json
|
||||
{
|
||||
"customer_id": "acme-analytics",
|
||||
"discount_pct": 0.30,
|
||||
"currency": "USD",
|
||||
"services": [
|
||||
{ "sku": "B91128", "quantity": 16 },
|
||||
{ "sku": "B91129", "quantity": 8 },
|
||||
{ "sku": "EST-DS-NOTEBOOK", "quantity": 4 },
|
||||
{ "sku": "EST-DS-MODEL", "quantity": 2 },
|
||||
{ "sku": "EST-DF-SPARK", "quantity": 8 }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Add `B91961` (Block Volume) and `B91628` (Object Storage Standard) when the
|
||||
customer needs dedicated storage beyond the compute default.
|
||||
|
||||
---
|
||||
|
||||
## When a recipe doesn't fit
|
||||
|
||||
1. Grep the catalog: `grep -n "<product keyword>" kb/pricing/oci-sku-catalog.yaml`
|
||||
2. Check service docs under `kb/services/` for deployment-specific guidance.
|
||||
3. Check `kb/field-knowledge/` for known sizing/pricing gotchas.
|
||||
4. If a SKU still cannot be located, surface the gap to the user rather than guessing — fabricated SKUs break the BOM silently.
|
||||
63
docs/business-case-flow.md
Normal file
@@ -0,0 +1,63 @@
|
||||
# Business Case Flow
|
||||
|
||||
Option 8 produces an executive business-case deck plus reusable YAML backing
|
||||
data. For ADB-S to ADB-D cases, use `business_case.adbs_to_adbd`.
|
||||
|
||||
## ADB-S to ADB-D Rules
|
||||
|
||||
- Keep workload/billable ECPU demand comparable between ADB-S and ADB-D unless
|
||||
the customer provides a different target demand.
|
||||
- Dedicated physical capacity is a separate fixed footprint:
|
||||
`DB nodes x ECPU per DB node`.
|
||||
- Never model ADB-D at 100% utilization by default. Show utilization explicitly.
|
||||
- ADB-D fixed infrastructure includes DB servers and storage servers; workload
|
||||
ECPU demand remains a separate line.
|
||||
- Projected BOMs are annual run-rate snapshots at the horizon, not cumulative
|
||||
multi-year totals.
|
||||
- GoldenGate can be `steady_state`, `migration_bridge_only`, or
|
||||
`migration_plus_fallback_months`. Bridge-only GoldenGate is excluded from
|
||||
future steady-state BOMs.
|
||||
|
||||
## Read Architecture
|
||||
|
||||
ADB-S and ADB-D can carry the same workload demand while using different read
|
||||
architectures. ADB-S may require refreshable/read clones when standby is not the
|
||||
application read path. ADB-D may use Local ADG read-only standby and retire
|
||||
steady-state clones. The deck should call this out in BOM notes, value drivers,
|
||||
and risk/value slides.
|
||||
|
||||
## Storage Economics
|
||||
|
||||
Storage economics are shown separately from aggregate TCO:
|
||||
|
||||
```text
|
||||
break-even TB = fixed dedicated infra monthly cost / ADB-S storage USD per GB-month / 1024
|
||||
```
|
||||
|
||||
Apply discounts uniformly when comparing scenarios. If customer material
|
||||
provides a baseline break-even, show it beside the recalculated break-even for
|
||||
the proposed footprint.
|
||||
|
||||
## Business Value
|
||||
|
||||
Risk-reduction cases use a Business Value Model instead of generic ROI
|
||||
percentages. Do not invent revenue impact. Convert stability to USD only when
|
||||
the customer provides revenue-at-risk, transaction margin, fraud loss impact, or
|
||||
cost per degraded/outage hour.
|
||||
|
||||
Use:
|
||||
|
||||
```text
|
||||
avoided degraded/outage hours x business impact per hour
|
||||
```
|
||||
|
||||
Track success metrics such as CPU utilization, read latency, clone lag retired,
|
||||
ADG read lag, GoldenGate/apply lag during migration, incidents avoided, and
|
||||
degraded hours avoided.
|
||||
|
||||
## Validation
|
||||
|
||||
Business-case deck validation reads text boxes, table cells, and grouped shapes.
|
||||
It checks expected titles, disclaimer-last, required assumptions, and forbidden
|
||||
obsolete phrases such as `OCI Annual`, stale scenario risks, and unclear
|
||||
language like `FTE-year`.
|
||||
@@ -25,7 +25,7 @@ Default output is a **slide deck (.pptx)**. The architect can specify:
|
||||
|
||||
| Format | Output |
|
||||
|--------|--------|
|
||||
| `deck` (default) | 10-12 slide presentation |
|
||||
| `deck` (default) | 10-12 slide presentation, with native OCI PowerPoint diagram when applicable |
|
||||
| `deck + drawio` | + editable architecture diagram |
|
||||
| `deck + doc` | + technical document (15-25 pages) |
|
||||
| `deck + xlsx` | + cost spreadsheet with formulas |
|
||||
@@ -43,7 +43,7 @@ Slide count adapts to engagement tier (6-8 small, 10-12 standard, 12-16 complex)
|
||||
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
|
||||
5. **Architecture Diagram** — fills 85% of slide; prefer native OCI PowerPoint shapes inside the deck when the architecture is structured enough
|
||||
6. **Architecture Decisions** — 4-6 key decisions with rationale
|
||||
7. **HA/DR** — topology + RTO/RPO per tier
|
||||
8. **Security & Compliance** — controls grid, compliance badges
|
||||
@@ -56,11 +56,86 @@ Slide count adapts to engagement tier (6-8 small, 10-12 standard, 12-16 complex)
|
||||
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`.
|
||||
Use `tools/oci_deck_gen.py` for generation. Decks should prefer native OCI PowerPoint diagrams over pasted images when the architecture can be rendered from structured input. 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.
|
||||
Use `tools/oci_diagram_gen.py` with OCI official styles from `kb/diagram/oci-toolkit-styles.yaml` when the user wants an editable technical diagram (`.drawio`). For customer-facing or presentation-ready output, prefer the native PowerPoint path via `tools/oci_deck_gen.py` and the PPTX icon library/index under `kb/diagram/`.
|
||||
|
||||
### Standard diagram-generation procedure (MANDATORY)
|
||||
|
||||
Follow these steps for every diagram, in order. Skipping a step is the single most common source of layout regressions.
|
||||
|
||||
1. **Reference architecture lookup.** Run `python tools/archcenter_pattern_lookup.py "<topology keywords>"` against `kb/architecture-center/catalog.yaml` (123 entries). Pick the highest-scoring entry whose topology matches what the user asked for. The lookup surfaces cached `.drawio` / `.svg` under `kb/diagram/assets/archcenter-refs/<slug>/` — open it to copy proven container nesting, padding, and AD/subnet placement instead of inventing geometry.
|
||||
2. **Pre-generation review (per SKILL.md § What You Do NOT Do).** Confirm the component list with the user. Never add services the user did not mention except via the explicit auto-include whitelist.
|
||||
3. **Author the spec.** Use `absolute_layout` for ref-arch reproductions or any topology where geometry matters. Honor the geometry rules below (the spec validator enforces them).
|
||||
4. **Spec validation runs automatically.** Both `tools/oci_diagram_gen.py` (drawio) and `tools/oci_pptx_diagram_gen.py` (PPTX, called via `oci_deck_gen.py`) call `tools/diagram_spec_validator.py` before emitting any output. A `fail` status raises and aborts generation — fix the geometry, re-run.
|
||||
5. **Render.** Generate the `.drawio` and/or `.pptx`. The drawio path additionally runs `drawio_visual_validator.py` post-render to catch anything the spec validator missed (font sizes, off-canvas, duplicate ids).
|
||||
6. **Visually verify.** Rasterize the PPTX with `python tools/oci_pptx_render.py --pptx X.pptx --output X.png --width 1600` and inspect the PNG before reporting success.
|
||||
|
||||
### Geometry rules for `absolute_layout`
|
||||
|
||||
These rules are enforced by `tools/diagram_spec_validator.py` and exist because each one corresponds to a regression that previously shipped to the user:
|
||||
|
||||
- **Container padding ≥ 12px.** Every nested container must keep ≥12px between its bottom edge and its parent's bottom edge. Otherwise the borders visually merge (`CONTAINER_PADDING_VIOLATION`).
|
||||
- **Subnet height ≥ label band + 12px.** A container labeled at 11pt needs h ≥ ~30px to avoid the label collapsing onto the bottom edge. Public-subnet bands holding an icon need to clear icon height + label band + breathing room (`CONTAINER_TOO_THIN`).
|
||||
- **Labels stay inside their parent, ≥ 6px from the bottom edge.** Free-floating labels under a service icon must not cross or sit within 6px of the enclosing subnet's bottom edge (`LABEL_OVERFLOW_PARENT`).
|
||||
- **AD columns nest INSIDE the VCN, never beside it.** Otherwise AD borders align with VCN borders and visually merge.
|
||||
- **Subnets may span AD columns** (regional public subnet, cross-AD DB subnet) — that is the canonical Oracle pattern for HA topologies; do not split a regional subnet per AD.
|
||||
|
||||
### Diagram modes
|
||||
|
||||
The diagram generator accepts two spec shapes — but only ONE is acceptable for any output an SA shows a customer:
|
||||
|
||||
1. **`absolute_layout` (REQUIRED for any new diagram).** Explicit `(x, y, w, h)` for every container, service, label, and connection. Resolves real OCI stencils from `kb/diagram/oci-icons.json`, runs through `tools/diagram_spec_validator.py` (geometry rules), and produces output visually consistent with Oracle Architecture Center references. **This is the only mode the standard procedure supports.** Pair it with the ref-arch lookup (`tools/archcenter_pattern_lookup.py`) so geometry derives from a canonical Oracle reference, not invented from scratch.
|
||||
2. **Workload-driven (DEPRECATED).** `tenancy → region(s) → vcn(s) → subnet(s) → service(s)`. The generator auto-lays out blocks but **does NOT resolve OCI icon stencils** — services render as colored rectangles with text labels, connector text gets baked into edge values (which the connector-label rule forbids), and the spec validator does NOT run. Output looks like a wireframe placeholder, not an architecture diagram. Kept only for back-compat with very old specs; do not author new specs in this shape.
|
||||
|
||||
```yaml
|
||||
absolute_layout:
|
||||
canvas: {width: 720, height: 420}
|
||||
containers:
|
||||
- {id: region, type: region, label: "OCI Region", x: 0, y: 0, w: 720, h: 420}
|
||||
- {id: vcn, type: vcn, label: "VCN 10.10.0.0/16", x: 28, y: 52, w: 670, h: 348}
|
||||
services:
|
||||
- {id: drg, label: "", type: drg, x: 8, y: 200, w: 55, h: 66}
|
||||
- {id: adb, label: "", type: adb_d, x: 230, y: 240, w: 60, h: 80}
|
||||
labels:
|
||||
- {id: lbl_drg, text: "DRG", x: 8, y: 268, w: 55, h: 14, fontSize: 700}
|
||||
connections:
|
||||
- {id: c1, from: drg, to: adb, type: standard, points: [[63, 233], [260, 240]]}
|
||||
```
|
||||
|
||||
`fontSize` is shared with the PPTX `absolute_layout` schema — it's hundredths of a point (720 → 7.2pt). The drawio renderer auto-converts.
|
||||
|
||||
The Architecture Center reconstruction pipeline lives at `tools/archcenter_case_runner.py` (single case) and `tools/archcenter_batch_driver.py` (batch). Reference: `kb/diagram/reference-layouts/archcenter-batch-runner.yaml`.
|
||||
|
||||
### Pre-delivery validation (automatic)
|
||||
|
||||
Both generators run sanity checks before the file ships, so a broken artifact never reaches the user:
|
||||
|
||||
- **`tools/diagram_spec_validator.py`** — runs automatically *before* either renderer (drawio or PPTX). Validates the parsed `absolute_layout` for `CONTAINER_TOO_THIN`, `CONTAINER_PADDING_VIOLATION`, and `LABEL_OVERFLOW_PARENT`. A fail aborts generation. Set `OCI_DIAGRAM_VALIDATOR_SOFT=1` to demote errors to warnings.
|
||||
- **`tools/drawio_visual_validator.py`** — runs automatically inside `OCIDiagramGenerator.save()`. Hard-fails on `fontSize ≥ 50pt` (catches the PPTX-cents-of-pt → drawio-pt unit confusion that produced 700pt labels), duplicate cell ids, off-canvas geometry, and dangling edge endpoints. Reports OK/warnings/errors to stderr. Pass `--strict` on the CLI to make errors fail the build.
|
||||
- **`OCIDeckGenerator.save()` post-check** — verifies `[Content_Types].xml` declares a `<Default>` for every embedded media extension (PowerPoint refuses to open a deck and prompts to "repair" it when this is missing — the SVG-backed icons in `OCI_Icons.pptx` are the canonical case), and that no slide rels point to absent media or duplicate cNvPr ids.
|
||||
- **`tools/drawio_fidelity_eval.py`** — pixel-diff the rebuilt drawio against a canonical Architecture Center PNG. Runs automatically when the spec carries `source.diagram_asset` (or via `--reference-png` on the CLI). Default rendering path is the SVG companion via `cairosvg` (works in any environment); the rebuilt-drawio path through the actual `draw.io` binary is opt-in via the `DRAWIO_EXE` env var (the binary is not bundled with the skill — install on demand).
|
||||
|
||||
CLI usage:
|
||||
|
||||
```bash
|
||||
# Standard run (validators on by default)
|
||||
python tools/oci_diagram_gen.py --spec my-spec.yaml --output out.drawio
|
||||
|
||||
# Fail the build if validator finds errors
|
||||
python tools/oci_diagram_gen.py --spec my-spec.yaml --output out.drawio --strict
|
||||
|
||||
# Fidelity comparison vs canonical PNG
|
||||
python tools/oci_diagram_gen.py --spec my-spec.yaml --output out.drawio \
|
||||
--reference-png kb/diagram/reference-layouts/.../canonical.png
|
||||
|
||||
# Strict draw.io binary path (opt-in)
|
||||
DRAWIO_EXE=/usr/bin/drawio python tools/oci_diagram_gen.py --spec ... --reference-png ...
|
||||
```
|
||||
|
||||
Skip validators only when intentionally generating a fixture or test: `--no-validate`.
|
||||
|
||||
## Service categorization
|
||||
|
||||
|
||||
89
examples/adbs-to-adbd-business-case-synthetic.yaml
Normal file
@@ -0,0 +1,89 @@
|
||||
business_case:
|
||||
customer_name: "Synthetic Commerce Co."
|
||||
cover_subtitle: "ADB-S to ADB-D Migration Business Case"
|
||||
prepared_by: "Diego Cabrera"
|
||||
prepared_by_role: "Solutions Architect"
|
||||
date: "2026-05-08"
|
||||
executive_summary: >
|
||||
Synthetic Commerce Co. is evaluating a move from ADB-S to ADB-D for a
|
||||
fraud analytics workload where predictable performance, read-path cleanup,
|
||||
and storage economics are more important than a pure near-term cost takeout.
|
||||
drivers:
|
||||
primary: "Stabilize fraud analytics performance while keeping the business case auditable."
|
||||
urgency: "Validate capacity, TCO crossover, and migration bridge assumptions before procurement."
|
||||
adbs_to_adbd:
|
||||
license_model: BYOL
|
||||
discount_pct: 0.11
|
||||
ecpu_per_db_node: 760
|
||||
current:
|
||||
label: "ADB-S As-Is"
|
||||
workload_ecpu: 2400
|
||||
storage_tb: 96
|
||||
read_architecture: "Refreshable/read clones serve application reads; standby is not the application read path."
|
||||
target:
|
||||
label: "ADB-D Dedicated"
|
||||
workload_ecpu: 2400
|
||||
storage_tb: 96
|
||||
db_nodes: 5
|
||||
storage_servers: 3
|
||||
read_architecture: "Local ADG read-only standby serves application reads; steady-state clones retired."
|
||||
forecasts:
|
||||
- period: "24M"
|
||||
display_label: "Year 2"
|
||||
as_is:
|
||||
workload_ecpu: 3150
|
||||
storage_tb: 128
|
||||
to_be:
|
||||
workload_ecpu: 3150
|
||||
storage_tb: 128
|
||||
db_nodes: 6
|
||||
storage_servers: 3
|
||||
- period: "36M"
|
||||
display_label: "Year 3"
|
||||
as_is:
|
||||
workload_ecpu: 3900
|
||||
storage_tb: 166
|
||||
to_be:
|
||||
workload_ecpu: 3900
|
||||
storage_tb: 166
|
||||
db_nodes: 8
|
||||
storage_servers: 3
|
||||
goldengate:
|
||||
mode: migration_bridge_only
|
||||
ocpus: 4
|
||||
bridge_months: 3
|
||||
bridge_one_time_cost: 0
|
||||
storage_economics:
|
||||
base_break_even_tb: 91
|
||||
business_impact:
|
||||
business_impact_per_hour: 0
|
||||
crossover_chart:
|
||||
y_axis_min: 1.5
|
||||
y_axis_max: 3.5
|
||||
y_axis_major_unit: 0.5
|
||||
roadmap:
|
||||
total_duration: "12 weeks"
|
||||
phases:
|
||||
- name: "Define"
|
||||
duration: "2 weeks"
|
||||
deliverables: ["Baseline current BOM", "Confirm success metrics"]
|
||||
- name: "Design"
|
||||
duration: "4 weeks"
|
||||
deliverables: ["Dedicated capacity plan", "Read-path validation"]
|
||||
- name: "Deliver"
|
||||
duration: "6 weeks"
|
||||
deliverables: ["Migration bridge", "Cutover rehearsal"]
|
||||
recommendation:
|
||||
summary: "Proceed with detailed design for the ADB-D Dedicated target, validating the utilization, storage break-even, and GoldenGate bridge assumptions before final commercial approval."
|
||||
next_steps:
|
||||
- action: "Confirm workload ECPU demand and storage forecast"
|
||||
owner: "Customer"
|
||||
deadline: "Before design sign-off"
|
||||
- action: "Validate ADB-D DB node and storage server reservation"
|
||||
owner: "Oracle"
|
||||
deadline: "Before procurement"
|
||||
deck_validation:
|
||||
forbidden_phrases:
|
||||
- "OCI Annual"
|
||||
- "FTE-year"
|
||||
- "if 4x3 is selected"
|
||||
@@ -1,71 +0,0 @@
|
||||
# Prompt 13: BOM generator
|
||||
# ExaCS X11M Half Rack + ADB-S + networking + security
|
||||
|
||||
metadata:
|
||||
customer: "PharmaCorp Mexico"
|
||||
prepared_by: "Carlos Mendoza — Solutions Architect"
|
||||
date: "2026-04-12"
|
||||
currency: "USD"
|
||||
contract_months: 12
|
||||
discount_pct: 0.45
|
||||
notes: "ExaCS BYOL — customer has existing Oracle DB EE licenses"
|
||||
|
||||
line_items:
|
||||
# ExaCS Production — Queretaro
|
||||
- category: "Exadata Cloud Service"
|
||||
product: "ExaCS X11M Half Rack — DB Server"
|
||||
sku: "B92459"
|
||||
qty: 4
|
||||
unit: "OCPU per hour"
|
||||
hours_units: 744
|
||||
months: 12
|
||||
notes: "4 DB servers, 128 ECPUs each, BYOL"
|
||||
|
||||
- category: "Exadata Cloud Service"
|
||||
product: "ExaCS X11M Half Rack — Storage Server"
|
||||
sku: "B92460"
|
||||
qty: 6
|
||||
unit: "per hour"
|
||||
hours_units: 744
|
||||
months: 12
|
||||
notes: "6 storage servers"
|
||||
|
||||
# ADB-S
|
||||
- category: "Autonomous Database"
|
||||
product: "ADB-S Serverless ECPU"
|
||||
sku: "B97472"
|
||||
qty: 32
|
||||
unit: "ECPU per hour"
|
||||
hours_units: 744
|
||||
months: 12
|
||||
notes: "32 ECPU for DW migration (Phase 2)"
|
||||
|
||||
# Storage
|
||||
- category: "Block Storage"
|
||||
product: "Block Volume Performance Units"
|
||||
sku: "B91628"
|
||||
qty: 50000
|
||||
unit: "GB per month"
|
||||
hours_units: 1
|
||||
months: 12
|
||||
notes: "50TB block storage"
|
||||
|
||||
# Networking
|
||||
- category: "Networking"
|
||||
product: "FastConnect 10Gbps"
|
||||
sku: "B91960"
|
||||
qty: 2
|
||||
unit: "port per hour"
|
||||
hours_units: 744
|
||||
months: 12
|
||||
notes: "Dual 10Gbps circuits"
|
||||
|
||||
# Security
|
||||
- category: "Security"
|
||||
product: "OCI Vault — Key Management"
|
||||
sku: "B92098"
|
||||
qty: 10
|
||||
unit: "key version per month"
|
||||
hours_units: 1
|
||||
months: 12
|
||||
notes: "TDE keys for 3 databases + DR + backups"
|
||||
@@ -1,54 +0,0 @@
|
||||
# Prompt 2: Architecture diagram
|
||||
# ExaCS dual-region with Data Guard, Hub-Spoke, dual FastConnect
|
||||
|
||||
title: "PharmaCorp Mexico — ExaCS Migration Architecture"
|
||||
|
||||
regions:
|
||||
- name: "Queretaro (Primary)"
|
||||
availability_domains:
|
||||
- name: "AD-1"
|
||||
subnets:
|
||||
- name: "DB Subnet (Private)"
|
||||
services:
|
||||
- name: "ExaCS X11M"
|
||||
type: "database"
|
||||
notes: "3 DBs: EBS R12, SAP, DW"
|
||||
- name: "App Subnet (Private)"
|
||||
services:
|
||||
- name: "EBS App Tier"
|
||||
type: "compute"
|
||||
- name: "Bastion"
|
||||
type: "security"
|
||||
- name: "Public Subnet"
|
||||
services:
|
||||
- name: "WAF"
|
||||
type: "security"
|
||||
notes: "Protects EBS web tier"
|
||||
hub_services:
|
||||
- name: "DRG"
|
||||
type: "networking"
|
||||
- name: "OCI Vault"
|
||||
type: "security"
|
||||
- name: "OCI Audit + Logging"
|
||||
type: "observability"
|
||||
|
||||
- name: "Sao Paulo (DR)"
|
||||
availability_domains:
|
||||
- name: "AD-1"
|
||||
subnets:
|
||||
- name: "DB Subnet (Private)"
|
||||
services:
|
||||
- name: "ExaCS Standby"
|
||||
type: "database"
|
||||
notes: "Data Guard: EBS + SAP"
|
||||
|
||||
connections:
|
||||
- from: "Mexico City DC"
|
||||
to: "DRG (Queretaro)"
|
||||
type: "FastConnect 10Gbps Dual"
|
||||
- from: "ExaCS X11M"
|
||||
to: "ExaCS Standby"
|
||||
type: "Data Guard (async redo)"
|
||||
- from: "DRG"
|
||||
to: "Sao Paulo VCN"
|
||||
type: "Remote peering"
|
||||
@@ -142,7 +142,7 @@ endobj
|
||||
endobj
|
||||
19 0 obj
|
||||
<<
|
||||
/Author (Carlos Mendoza) /CreationDate (D:20260412231513-03'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260412231513-03'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Author (Carlos Mendoza) /CreationDate (D:20260413001815-03'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260413001815-03'00') /Producer (ReportLab PDF Library - \(opensource\))
|
||||
/Subject (OCI Architecture Proposal) /Title (PharmaCorp Mexico \204 Oracle Database Migration to OCI) /Trapped /False
|
||||
>>
|
||||
endobj
|
||||
@@ -181,10 +181,10 @@ Gau0D?!#c?&:N_CbgW/j?!L$g^Wu7?8q>@-7nU((+*^X&-#p2l<48Luq]/7J#`q"tlTI8H[URM:RCOPJ
|
||||
endobj
|
||||
25 0 obj
|
||||
<<
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2236
|
||||
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2349
|
||||
>>
|
||||
stream
|
||||
Gau`U=``=W%"?O+^dC2I[Y[=KeDYgsS2Atqe"j7Xh9P)8O_I=f%Tc/`m]TuZP'k3VI"\gfRFX2CiqabtKIIK1U\b!5"umX=aa4AZ_-dD1>9!j>i-]M5lbN(=@WrYkbi92P&+tpuc,B^9a+FL7%\D]I%$'B6<<W8QR[pXlFY("6AoZR6*=`j_e8lY7O:ub!aN!KFX]<dXoq<34YO=mqMdDiHi)2am62Cci5@Et]Z(!sF*QrNecLoUr'Fn\PKHcjH@Wb5^-`B=dd#O%8pj/X8Z(/fR>;<,DdE@jp`&b><1ChX<r5pEBQJejLKMef1cTU'SA75V"0R)s#(BgTqi=bX9dOBte>dRDF6A;q)(/k&QmPC+6BK)Kp[un#&M.r.`c]a,<99U25#<bq?-lnXp61-PNDJ(G%K`d$i/HM(!F"p.PNM"@qMu:rrm^sheF*Iq\au]aZnVRhqUA4Kd*!GgLe^#M"hBK<ZnU(MBj8,p<TDD[g3.Loe`]F*!?;YV(keLi[Yb0VT0!Fo85;Dc)h=tuM_7U`=3mW"%jLb`h5q'(I>cI*nA1tB(#ksn2A\OHh6f.fK]WZY5J$ne=I>dL3pHtNAU'T6/)/l712;lmuE#k5C<oC8WY<BM1;7gDY7V*D!]=jW?V0!:i3=H!ea<@'<M'51h@5>tn?=[VDPZc0k$MGAOQg(o7b8[jG.lJjjg&Gk4?";kL]f'kUUGd,27ZF,C$i=&Md(DfRNZaZ%OeL_FUbT$02/2(qrqirh"k1":f'1J`Z>>_K'krdsArfo\9BY)bk0@YQU%'"[2)Nn2I%h`[jD$P`8o8=n_Wp6)MrAlpg8^LG/Y=I3oN&BlB/Saq<?efM,1#J57lOM9"WVfOFsts-qARF]RMTp#.De(BB3"q6'^F'$MDGUu:&%O_2.TnW/bM4c]7IU+ame^WA7^pV.'WWaL0MY[kQXKN+@2iE\0sd(`+&JA$o=;=/;i@L9ZE1OMb.\UGAM.phs3rW:U5'J-.Whk472_"lXbMJ8Qr&/*PZ@>o5ZYpK2=EHUGRU#R0:[;,(`/D"Y/B/1A-U;=?`5`:b'PsG"=e#;)uSH=0!:)H'-*%X/no,1f;7ro:^PF<L'eRTue>49FIb.o,M%jLpuBf\Snit@uP9V\hWL<e@SR`O7@LbD>-0GXZ(?GH^lZNhJV`[SL5XmkE`'%2'boM)G^bnMs\L\1/3Z'kVq9<??a.kgqHqKd;dLt]Muo8pT%(A12P]H<Fm6iT@78Kc/$*FUoqJeHV0i/bs7Qkrhf<#^0mrn0ULRNi29='NGaMY8t!dfA?#,[-IETY<3T9H7&0=1qF;#=S+&9\bWfPgZ>,oSaC88%Yi!SEA;2DO`_)\3l7tOLWM"$B2!l<)oF%nlM\N<_)(FpuDDi`cfmegj).D8CDa[Y#m%Wa62PWrhN4%1aGL'$Fqj9"o*3[*a`,?bB`&\L19:OqBqh\1LmK/kDVSn/Ffb**C@l(FS<Z%=r\8'-.c_u71LLYb76GF<c<+ps6<aC\#Es\oo%X\p=k<3/EH>/P`TKk:dmO$QhQO?1&<BqK8rQ7;JmRE^.939sg'I,XmGQNg)a!N1=.d\hUG"p&il@"2dQo-hq5=U=>g*0OCleH8DK0T7"a*1WHn6YZarl//KK&s(Vmc^)W86t'M:_DNe$g?uO6O'H]<%016e!L^V2Ir--rQA]]gAOK_\@LsTY)U`cS]We>QPT$/R?`3d^.318dd^FFl/)Mbbon:YG"o-oIPW#!B"p"F$Cce+Pl9mQI=Bn*7sP>.Lb7+<&EPSs+KF5f9Z-8$>p^7*>Re:1>E&D10ED?$NlYfhN/1s:2Po2^.+OqU/fnO5gjf9s=f<5se:U?XDOcI,Ss^[UcC\)6/#lcIWG$NN`RU2fZ\F@<.?u`;eZ,=GRb@*nH_h4k!7M#h]p`*>3)p!Qa/IO/[V+?r);3TaAoGYIQ-n-7/4O5]TWNYa`?S@k37Z?UC*':ak<(D-h9Y24[#M>hn*_]d/]cD)594u88]K,@:SF@B_Gqq7W#D_:?c_1'*25-KM&Q=UL;c<3C@7OWP=_4NP[:)eZ0&EqY*"o!%$[&M[3;=P"D*muM5=s@+uDSMdIOo@;TgBKe=)k'MZRfT;$=H@^X\[TksW++RekF,/D@6j8jDa4e*h@8=+fHcP)gfN23Q+5@F@ho%olmIP=\bUPY3MQe`;%/U@u=K^I$?DX+U7W-p_ErH]a<8HYRrb.,:g6Fdpts%fQWdQ&``~>endstream
|
||||
Gau0F=``=U&:XAWfS="WD%q^)n%QoPijKN@Nhn)iN*ftMZC18[GW9SjI<P^TU25[L*-=<"@$'%>p:sui!u$0Or'*jU:1j"`4Ti]4[K'nY2U"A#A9RV4aRFT+$9/mXZQ4cBoG`SOo-4b&O"tZjn/N6BE#`5f&ss^tjF![;(iD^bYUtV82Ae>^T'LoXPaLJsECU79"%a,iLJg+G\eddb:@hp$(XZ_4k!-]K/'NGhEr@f<0g)phmPN6*nN=so=<tR)7UQG7M$O0H"YNF-b6:II33>.U&Q/,?jc9be"3[pY%GWmi-'Yot^tBn<B1ChR?61bX3!!o;[s-aD)Q#[VRc'Te.87ig9L1?DOR8`p$pRG[#p^1[Rbk`eO>=qrV+AXjlle"P/4IOoWMi4Jhpp*mh^=rMT]8`6^u4qfLWSVf'YV`-:K$L>4k.1*=Y!'+maqOieIG7uB.H"k#gm))"U?XT(@`1Q/:L(C\u+YSD&q5P/c:jrReL)l]l*B&F`_g);/.7;"OcmekP(O/^e@ZMl5s/CdV:YmUX3*'<qQX!iUI^]T>poNg"f]G4RgbW?:=Uu1/C:QkLinq[RJU&-+$J>Z@^\(#b1BYCBc\)#1l)`_jR8bXO0/E.e7j*p*Di83W;uJ79#*f^\MT![If!:4GqT:r5mRpI&]V470QqSn8GhqgdBoBn`JYb1+IV^-R[@T9ZL3Z3;YI]Z8'$6QtOf/%Rh,W!<Ek4%SrTH$;jh-C9fJ##70EASp_FmCD.J*\>QLYG7NrSn@(jECRA-HS)=2I2oekE,o_fqFgBa^oRId#%R0(r:b)+L*CQ+*oJhZO2)pCNkTA$u^uDAMhEHuB>N<:!Nb9a'$D/u9m>D61UTR6-rF(g):dns'7j^4b!cBpi'MC1A^2DU9PgNACkQ@C?_`Yo/C,#=g8OQ'VE&QDJGPq2XO)e#2&uhrABLP?]>Gfc=\[H#AhGI(@T+"nD_.jL=&%.1NFq;ilp2H`!!gEP:BWBU?.M"M,OWHC'eMA-p7>4.3g*`Ma(Mf&sW8d+,^?+]6]%/E@\+uTJdM2[1_-\gq30!qY/g?*#Et56RObqmT!&IWI,2(g,cN=U3:%3e0c:SW_<lM8m`>R]aI>Hei!u.888=ed@qGtX*<'i(7n=FMrGqYJ9Q*-*J8L%Q!,tj1C:h(o/k+7naaRT[;#*@3THEi:DR-J\&mu'5jYt$'$Y<G8GR8t%m&+=,O'r#$$&3Yb>4ib&TiJ)JXjXFdm.92t5Lf#Xac_H7]W33b[2/UY3F>hQ+-`F>X(TTG<@9dS<_gH[CNeSY.dBI78c&VP'A3[#&3p_"gm.Fe$T>&$h5K7'[H_ehI)bN]c=pBHgm>F*-mLq&fYJu'_&(P!pB*:HAj5dDe%g+pF$cA5-+s%itC/n7Tgn(eN^GY:KN36M4SRW3Od"aA,e'`l]@fFG'c!C%n`69=n!FCbVp$gt.J?Y+c*hi^7OG0)Z05*i*D3<9V<S.8#kL8**gG4lX(u"uUHFN"D1`-$m?4XC@/?acZq!>YqRs&#heC$jGcVE=l0jMNTo]crBiYN.4g,]mHV6.=4W[AQ>2&X#cXJM,*`CKVC2V,d(m:Bcj)Q/a'er3M)Bm`GL)PGrf*0`>?eMQXX?Bc&k!C-'rKUheh6_<FC(53K\H%*BD,.LsKeSd4M(=o[jOm2;@F'q0`7iS4:_8,"Acj(Q6I$[`G+&KGIKAYeTDt"X>k-"PN$aWo]KM$0PHF4mjFaETO(/kJ3-%AGb@$d3g3ZFS[\6s+"oBfWMk\65GDiPiZFohfC?LA53=qL%V/<0LsD<f`)iVI$]Yn=R#2\]uU0*Bqk3r".A^INGho"-tul/)JAbqWC2W(h0PIQ\G#DS99/oWCo;C:5K;;tqEi65<u:o`dfIO"3bc>+Qkl^[9GME-=5\D_Ei6>G/kJ[PK[_>=/cKDXEY1Fg.V:$qg%$Q!jJR2YH.ee<B>Up#I'iT)FkS)gemIglll5:Y)"_Z>T<V]%Nu":Gf]GMSJ%dqPucgh/cYEG.VCjp36hLh.$pNe/22f<YBA@O[I1rX'2Zt=V`@md^*Q-\'J1(Xr@UKb[$3ZpA1fj`34R(;1E^Ro/NbAbHalS4]hV<1r`u7Ij%%j`_TA/UuMd@N33s[`cCVUQ\>\Y2--P,UgPs/,S$T.7Xs=Ul5kVI]9`,1R25t)QX%DZLK:gFb9@E&,se"fSj?Hp"\gPI'M;1)q8Tala#Ybhl\!`W:l>ZBRj8#;LYp0"XIDa>8u$<%l>!9j+ahM`L[S`5XhfCV7,LEF23oKk``YC^V=,9f/=.iiO@g6YRTp@*%:8>t)fYL4#Pt/D6S.30..0oW1d,dI%cQs&p6*;?Ii9b0>l~>endstream
|
||||
endobj
|
||||
26 0 obj
|
||||
<<
|
||||
@@ -249,15 +249,15 @@ xref
|
||||
0000005993 00000 n
|
||||
0000008355 00000 n
|
||||
0000010383 00000 n
|
||||
0000012711 00000 n
|
||||
0000014950 00000 n
|
||||
0000017314 00000 n
|
||||
0000018630 00000 n
|
||||
0000019167 00000 n
|
||||
0000012824 00000 n
|
||||
0000015063 00000 n
|
||||
0000017427 00000 n
|
||||
0000018743 00000 n
|
||||
0000019280 00000 n
|
||||
trailer
|
||||
<<
|
||||
/ID
|
||||
[<058687b5e54d5950ae70b0c7d0f56515><058687b5e54d5950ae70b0c7d0f56515>]
|
||||
[<8c841a256005e9c14418567efe6f7d83><8c841a256005e9c14418567efe6f7d83>]
|
||||
% ReportLab generated PDF document -- digest (opensource)
|
||||
|
||||
/Info 19 0 R
|
||||
@@ -265,5 +265,5 @@ trailer
|
||||
/Size 31
|
||||
>>
|
||||
startxref
|
||||
20023
|
||||
20136
|
||||
%%EOF
|
||||
|
||||
@@ -1,111 +0,0 @@
|
||||
{
|
||||
"cost": {
|
||||
"line_items": [
|
||||
{
|
||||
"component": "ExaCS X11M Quarter Rack \u2014 Queretaro (Prod)",
|
||||
"monthly_payg": "$18,500",
|
||||
"monthly_byol": "$8,200",
|
||||
"notes": "2 DB servers, 3 storage servers, BYOL"
|
||||
},
|
||||
{
|
||||
"component": "ExaCS X11M Quarter Rack \u2014 Sao Paulo (DR)",
|
||||
"monthly_payg": "$18,500",
|
||||
"monthly_byol": "$8,200",
|
||||
"notes": "ADG standby, BYOL"
|
||||
},
|
||||
{
|
||||
"component": "ADB-S 16 ECPU (DW alternative \u2014 future)",
|
||||
"monthly_payg": "$2,400",
|
||||
"monthly_byol": "$1,200",
|
||||
"notes": "Optional \u2014 migrate DW to ADB-S in Phase 2"
|
||||
},
|
||||
{
|
||||
"component": "FastConnect 10Gbps Dual",
|
||||
"monthly_payg": "$3,060",
|
||||
"notes": "2 x $1,530/month"
|
||||
},
|
||||
{
|
||||
"component": "OCI Vault",
|
||||
"monthly_payg": "$500",
|
||||
"notes": "HSM-backed key management"
|
||||
},
|
||||
{
|
||||
"component": "Object Storage (50TB backup)",
|
||||
"monthly_payg": "$1,200",
|
||||
"notes": "RMAN backups + DW backup"
|
||||
},
|
||||
{
|
||||
"component": "WAF + Logging + Monitoring",
|
||||
"monthly_payg": "$800",
|
||||
"notes": "WAF for EBS web tier + audit logging"
|
||||
},
|
||||
{
|
||||
"component": "TOTAL",
|
||||
"monthly_payg": "$45,000",
|
||||
"monthly_byol": "$23,200",
|
||||
"notes": "BYOL saves 48%"
|
||||
}
|
||||
],
|
||||
"assumptions": [
|
||||
"BYOL assumes existing Oracle Database EE licenses with active support",
|
||||
"ExaCS pricing based on current OCI list prices",
|
||||
"DR standby at full rate (ADG requires active compute)",
|
||||
"No middleware licensing included (EBS app tier on compute VMs)",
|
||||
"FastConnect partner charges not included"
|
||||
],
|
||||
"show_byol": true
|
||||
},
|
||||
"cost_comparison": {
|
||||
"title": "Cost Comparison: On-Prem HW Refresh vs OCI Migration",
|
||||
"col_headers": [
|
||||
"Component",
|
||||
"On-Prem Refresh (5yr)",
|
||||
"OCI ExaCS BYOL",
|
||||
"Delta"
|
||||
],
|
||||
"rows": [
|
||||
{
|
||||
"item": "Infrastructure (hardware/cloud)",
|
||||
"current": "$1,800,000 upfront",
|
||||
"oci": "$278,400/yr",
|
||||
"savings": "Break-even at 3.2 years"
|
||||
},
|
||||
{
|
||||
"item": "Annual Support & Maintenance",
|
||||
"current": "$220,000/yr",
|
||||
"oci": "Included in OCI",
|
||||
"savings": "-100%"
|
||||
},
|
||||
{
|
||||
"item": "DR Infrastructure",
|
||||
"current": "$0 (no DR today)",
|
||||
"oci": "$98,400/yr",
|
||||
"savings": "New capability \u2014 no DR today"
|
||||
},
|
||||
{
|
||||
"item": "Data Center (power/cooling/space)",
|
||||
"current": "$80,000/yr",
|
||||
"oci": "$0",
|
||||
"savings": "-100%"
|
||||
},
|
||||
{
|
||||
"item": "DBA Operations (patching)",
|
||||
"current": "$60,000/yr (part-time DBA)",
|
||||
"oci": "$0 (automated)",
|
||||
"savings": "-100%"
|
||||
},
|
||||
{
|
||||
"item": "TOTAL ANNUAL (year 1)",
|
||||
"current": "$2,160,000",
|
||||
"oci": "$376,800",
|
||||
"savings": "-83%"
|
||||
},
|
||||
{
|
||||
"item": "TOTAL 3-YEAR TCO",
|
||||
"current": "$2,880,000",
|
||||
"oci": "$1,130,400",
|
||||
"savings": "-$1.75M (61%)"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,348 +0,0 @@
|
||||
well_architected_scorecard:
|
||||
overall_status: GAPS_IDENTIFIED
|
||||
generated_date: '2026-04-12T23:15:18.437115'
|
||||
architecture_name: /tmp/demo-flawed-arch.yaml
|
||||
customer: Demo Flawed Arch
|
||||
summary:
|
||||
total_checks: 23
|
||||
total_passed: 1
|
||||
total_gaps: 22
|
||||
high_severity_gaps: 10
|
||||
medium_severity_gaps: 10
|
||||
low_severity_gaps: 2
|
||||
pillars:
|
||||
security_compliance:
|
||||
status: GAPS_IDENTIFIED
|
||||
checks_passed: 0
|
||||
checks_total: 15
|
||||
categories:
|
||||
identity_access:
|
||||
passed: 0
|
||||
total: 4
|
||||
gaps:
|
||||
- check_id: SEC-IAM-001
|
||||
area: Identity & Access
|
||||
finding: no IAM policy strategy defined or broad permissions used
|
||||
severity: HIGH
|
||||
recommendation: architecture specifies granular IAM policies per compartment/service
|
||||
wa_reference: https://docs.oracle.com/en/solutions/oci-best-practices/effective-strategies-security-and-compliance1.html
|
||||
- check_id: SEC-IAM-002
|
||||
area: Identity & Access
|
||||
finding: no MFA mentioned in identity setup
|
||||
severity: HIGH
|
||||
recommendation: MFA is specified in identity configuration
|
||||
wa_reference: https://docs.oracle.com/en/solutions/oci-best-practices/effective-strategies-security-and-compliance1.html
|
||||
- check_id: SEC-IAM-003
|
||||
area: Identity & Access
|
||||
finding: no mention of admin account restrictions
|
||||
severity: HIGH
|
||||
recommendation: separate admin groups defined for operations
|
||||
wa_reference: https://docs.oracle.com/en/solutions/oci-best-practices/effective-strategies-security-and-compliance1.html
|
||||
- check_id: SEC-IAM-004
|
||||
area: Identity & Access
|
||||
finding: stored credentials or API keys used for service accounts
|
||||
severity: HIGH
|
||||
recommendation: instance principals or resource principals specified for
|
||||
service-to-service auth
|
||||
wa_reference: https://docs.oracle.com/en/solutions/oci-best-practices/effective-strategies-security-and-compliance1.html
|
||||
resource_isolation:
|
||||
passed: 0
|
||||
total: 3
|
||||
gaps:
|
||||
- check_id: SEC-ISO-001
|
||||
area: Resource Isolation
|
||||
finding: flat compartment structure or no compartment strategy
|
||||
severity: HIGH
|
||||
recommendation: hierarchical compartment structure defined
|
||||
wa_reference: https://docs.oracle.com/en/solutions/oci-best-practices/effective-strategies-security-and-compliance1.html
|
||||
- check_id: SEC-ISO-002
|
||||
area: Resource Isolation
|
||||
finding: no tagging strategy defined
|
||||
severity: MEDIUM
|
||||
recommendation: defined tag namespaces with cost, environment, and owner
|
||||
tags
|
||||
wa_reference: https://docs.oracle.com/en/solutions/oci-best-practices/effective-strategies-security-and-compliance1.html
|
||||
- check_id: SEC-ISO-004
|
||||
area: Resource Isolation
|
||||
finding: user credentials used for cross-resource access
|
||||
severity: HIGH
|
||||
recommendation: resource principals used for cross-service access
|
||||
wa_reference: https://docs.oracle.com/en/solutions/oci-best-practices/effective-strategies-security-and-compliance1.html
|
||||
database_security:
|
||||
passed: 0
|
||||
total: 0
|
||||
gaps: []
|
||||
data_protection:
|
||||
passed: 0
|
||||
total: 2
|
||||
gaps:
|
||||
- check_id: SEC-DAT-001
|
||||
area: Data Protection
|
||||
finding: any storage service without encryption at rest
|
||||
severity: HIGH
|
||||
recommendation: encryption at rest specified for all storage services
|
||||
wa_reference: https://docs.oracle.com/en/solutions/oci-best-practices/effective-strategies-security-and-compliance1.html
|
||||
- check_id: SEC-DAT-002
|
||||
area: Data Protection
|
||||
finding: using Oracle-managed keys or no key management strategy
|
||||
severity: MEDIUM
|
||||
recommendation: OCI Vault specified for key management
|
||||
wa_reference: https://docs.oracle.com/en/solutions/oci-best-practices/effective-strategies-security-and-compliance1.html
|
||||
network_security:
|
||||
passed: 0
|
||||
total: 3
|
||||
gaps:
|
||||
- check_id: SEC-NET-001
|
||||
area: Network Security
|
||||
finding: only Security Lists used without NSGs
|
||||
severity: MEDIUM
|
||||
recommendation: NSGs used as primary network security mechanism
|
||||
wa_reference: https://docs.oracle.com/en/solutions/oci-best-practices/effective-strategies-security-and-compliance1.html
|
||||
- check_id: SEC-NET-002
|
||||
area: Network Security
|
||||
finding: SSH open to 0.0.0.0/0
|
||||
severity: HIGH
|
||||
recommendation: SSH access restricted to specific CIDR ranges or bastion
|
||||
wa_reference: https://docs.oracle.com/en/solutions/oci-best-practices/effective-strategies-security-and-compliance1.html
|
||||
- check_id: SEC-NET-004
|
||||
area: Network Security
|
||||
finding: OCI services accessed via internet gateway
|
||||
severity: MEDIUM
|
||||
recommendation: Service Gateway configured in VCN
|
||||
wa_reference: https://docs.oracle.com/en/solutions/oci-best-practices/effective-strategies-security-and-compliance1.html
|
||||
monitoring_audit:
|
||||
passed: 0
|
||||
total: 3
|
||||
gaps:
|
||||
- check_id: SEC-MON-001
|
||||
area: Monitoring & Audit
|
||||
finding: Cloud Guard not included in architecture
|
||||
severity: HIGH
|
||||
recommendation: Cloud Guard configured with appropriate recipes
|
||||
wa_reference: https://docs.oracle.com/en/solutions/oci-best-practices/effective-strategies-security-and-compliance1.html
|
||||
- check_id: SEC-MON-002
|
||||
area: Monitoring & Audit
|
||||
finding: audit service not mentioned or retention not configured
|
||||
severity: MEDIUM
|
||||
recommendation: Audit service enabled (enabled by default, verify retention)
|
||||
wa_reference: https://docs.oracle.com/en/solutions/oci-best-practices/effective-strategies-security-and-compliance1.html
|
||||
- check_id: SEC-MON-003
|
||||
area: Monitoring & Audit
|
||||
finding: no VCN Flow Logs configured
|
||||
severity: MEDIUM
|
||||
recommendation: VCN Flow Logs enabled for critical subnets
|
||||
wa_reference: https://docs.oracle.com/en/solutions/oci-best-practices/effective-strategies-security-and-compliance1.html
|
||||
reliability_resilience:
|
||||
status: PASS_WITH_RECOMMENDATIONS
|
||||
checks_passed: 0
|
||||
checks_total: 1
|
||||
categories:
|
||||
scalability:
|
||||
passed: 0
|
||||
total: 1
|
||||
gaps:
|
||||
- check_id: REL-SCL-002
|
||||
area: Scalability
|
||||
finding: no service limit review planned
|
||||
severity: LOW
|
||||
recommendation: service limit review mentioned in deployment plan
|
||||
wa_reference: https://docs.oracle.com/en/solutions/oci-best-practices/reliable-and-resilient-cloud-topology-practices1.html
|
||||
fault_tolerant_networking:
|
||||
passed: 0
|
||||
total: 0
|
||||
gaps: []
|
||||
data_backup:
|
||||
passed: 0
|
||||
total: 0
|
||||
gaps: []
|
||||
data_replication:
|
||||
passed: 0
|
||||
total: 0
|
||||
gaps: []
|
||||
disaster_recovery:
|
||||
passed: 0
|
||||
total: 0
|
||||
gaps: []
|
||||
performance_cost:
|
||||
status: PASS_WITH_RECOMMENDATIONS
|
||||
checks_passed: 0
|
||||
checks_total: 2
|
||||
categories:
|
||||
compute_sizing:
|
||||
passed: 0
|
||||
total: 0
|
||||
gaps: []
|
||||
storage_strategy:
|
||||
passed: 0
|
||||
total: 0
|
||||
gaps: []
|
||||
network_tuning:
|
||||
passed: 0
|
||||
total: 0
|
||||
gaps: []
|
||||
cost_management:
|
||||
passed: 0
|
||||
total: 2
|
||||
gaps:
|
||||
- check_id: PERF-CST-003
|
||||
area: Cost Management
|
||||
finding: no budget alerts configured
|
||||
severity: MEDIUM
|
||||
recommendation: OCI Budgets configured with alert thresholds
|
||||
wa_reference: https://docs.oracle.com/en/solutions/oci-best-practices/index.html
|
||||
- check_id: PERF-CST-004
|
||||
area: Cost Management
|
||||
finding: no cost attribution tagging strategy
|
||||
severity: MEDIUM
|
||||
recommendation: cost-tracking tags defined and enforced
|
||||
wa_reference: https://docs.oracle.com/en/solutions/oci-best-practices/index.html
|
||||
operational_efficiency:
|
||||
status: GAPS_IDENTIFIED
|
||||
checks_passed: 1
|
||||
checks_total: 5
|
||||
categories:
|
||||
deployment_strategy:
|
||||
passed: 0
|
||||
total: 1
|
||||
gaps:
|
||||
- check_id: OPS-DEP-001
|
||||
area: Deployment Strategy
|
||||
finding: no IaC strategy specified
|
||||
severity: HIGH
|
||||
recommendation: Terraform or Resource Manager specified for infrastructure
|
||||
provisioning
|
||||
wa_reference: https://docs.oracle.com/en/solutions/oci-best-practices/best-practices-operating-cloud-deployments-efficiency.html
|
||||
workload_monitoring:
|
||||
passed: 1
|
||||
total: 2
|
||||
gaps:
|
||||
- check_id: OPS-MON-003
|
||||
area: Workload Monitoring
|
||||
finding: no centralized log analysis solution
|
||||
severity: MEDIUM
|
||||
recommendation: OCI Logging Analytics configured
|
||||
wa_reference: https://docs.oracle.com/en/solutions/oci-best-practices/best-practices-operating-cloud-deployments-efficiency.html
|
||||
os_management:
|
||||
passed: 0
|
||||
total: 0
|
||||
gaps: []
|
||||
operations_support:
|
||||
passed: 0
|
||||
total: 2
|
||||
gaps:
|
||||
- check_id: OPS-SUP-001
|
||||
area: Operations Support
|
||||
finding: no support plan consideration
|
||||
severity: LOW
|
||||
recommendation: Oracle support plan level specified and matches criticality
|
||||
wa_reference: https://docs.oracle.com/en/solutions/oci-best-practices/best-practices-operating-cloud-deployments-efficiency.html
|
||||
- check_id: OPS-SUP-002
|
||||
area: Operations Support
|
||||
finding: no notification configuration
|
||||
severity: MEDIUM
|
||||
recommendation: OCI Notifications configured for operational events
|
||||
wa_reference: https://docs.oracle.com/en/solutions/oci-best-practices/best-practices-operating-cloud-deployments-efficiency.html
|
||||
distributed_cloud:
|
||||
status: NOT_APPLICABLE
|
||||
checks_passed: 0
|
||||
checks_total: 0
|
||||
categories: {}
|
||||
action_items:
|
||||
high_priority:
|
||||
- check_id: SEC-IAM-001
|
||||
pillar: Identity & Access
|
||||
finding: no IAM policy strategy defined or broad permissions used
|
||||
recommendation: architecture specifies granular IAM policies per compartment/service
|
||||
- check_id: SEC-IAM-002
|
||||
pillar: Identity & Access
|
||||
finding: no MFA mentioned in identity setup
|
||||
recommendation: MFA is specified in identity configuration
|
||||
- check_id: SEC-IAM-003
|
||||
pillar: Identity & Access
|
||||
finding: no mention of admin account restrictions
|
||||
recommendation: separate admin groups defined for operations
|
||||
- check_id: SEC-IAM-004
|
||||
pillar: Identity & Access
|
||||
finding: stored credentials or API keys used for service accounts
|
||||
recommendation: instance principals or resource principals specified for service-to-service
|
||||
auth
|
||||
- check_id: SEC-ISO-001
|
||||
pillar: Resource Isolation
|
||||
finding: flat compartment structure or no compartment strategy
|
||||
recommendation: hierarchical compartment structure defined
|
||||
- check_id: SEC-ISO-004
|
||||
pillar: Resource Isolation
|
||||
finding: user credentials used for cross-resource access
|
||||
recommendation: resource principals used for cross-service access
|
||||
- check_id: SEC-DAT-001
|
||||
pillar: Data Protection
|
||||
finding: any storage service without encryption at rest
|
||||
recommendation: encryption at rest specified for all storage services
|
||||
- check_id: SEC-NET-002
|
||||
pillar: Network Security
|
||||
finding: SSH open to 0.0.0.0/0
|
||||
recommendation: SSH access restricted to specific CIDR ranges or bastion
|
||||
- check_id: SEC-MON-001
|
||||
pillar: Monitoring & Audit
|
||||
finding: Cloud Guard not included in architecture
|
||||
recommendation: Cloud Guard configured with appropriate recipes
|
||||
- check_id: OPS-DEP-001
|
||||
pillar: Deployment Strategy
|
||||
finding: no IaC strategy specified
|
||||
recommendation: Terraform or Resource Manager specified for infrastructure provisioning
|
||||
medium_priority:
|
||||
- check_id: SEC-ISO-002
|
||||
pillar: Resource Isolation
|
||||
finding: no tagging strategy defined
|
||||
recommendation: defined tag namespaces with cost, environment, and owner tags
|
||||
- check_id: SEC-DAT-002
|
||||
pillar: Data Protection
|
||||
finding: using Oracle-managed keys or no key management strategy
|
||||
recommendation: OCI Vault specified for key management
|
||||
- check_id: SEC-NET-001
|
||||
pillar: Network Security
|
||||
finding: only Security Lists used without NSGs
|
||||
recommendation: NSGs used as primary network security mechanism
|
||||
- check_id: SEC-NET-004
|
||||
pillar: Network Security
|
||||
finding: OCI services accessed via internet gateway
|
||||
recommendation: Service Gateway configured in VCN
|
||||
- check_id: SEC-MON-002
|
||||
pillar: Monitoring & Audit
|
||||
finding: audit service not mentioned or retention not configured
|
||||
recommendation: Audit service enabled (enabled by default, verify retention)
|
||||
- check_id: SEC-MON-003
|
||||
pillar: Monitoring & Audit
|
||||
finding: no VCN Flow Logs configured
|
||||
recommendation: VCN Flow Logs enabled for critical subnets
|
||||
- check_id: PERF-CST-003
|
||||
pillar: Cost Management
|
||||
finding: no budget alerts configured
|
||||
recommendation: OCI Budgets configured with alert thresholds
|
||||
- check_id: PERF-CST-004
|
||||
pillar: Cost Management
|
||||
finding: no cost attribution tagging strategy
|
||||
recommendation: cost-tracking tags defined and enforced
|
||||
- check_id: OPS-MON-003
|
||||
pillar: Workload Monitoring
|
||||
finding: no centralized log analysis solution
|
||||
recommendation: OCI Logging Analytics configured
|
||||
- check_id: OPS-SUP-002
|
||||
pillar: Operations Support
|
||||
finding: no notification configuration
|
||||
recommendation: OCI Notifications configured for operational events
|
||||
low_priority:
|
||||
- check_id: REL-SCL-002
|
||||
pillar: Scalability
|
||||
finding: no service limit review planned
|
||||
recommendation: service limit review mentioned in deployment plan
|
||||
- check_id: OPS-SUP-001
|
||||
pillar: Operations Support
|
||||
finding: no support plan consideration
|
||||
recommendation: Oracle support plan level specified and matches criticality
|
||||
references:
|
||||
framework: https://docs.oracle.com/en/solutions/oci-best-practices/index.html
|
||||
security: https://docs.oracle.com/en/solutions/oci-best-practices/effective-strategies-security-and-compliance1.html
|
||||
reliability: https://docs.oracle.com/en/solutions/oci-best-practices/reliable-and-resilient-cloud-topology-practices1.html
|
||||
operations: https://docs.oracle.com/en/solutions/oci-best-practices/best-practices-operating-cloud-deployments-efficiency.html
|
||||
distributed: https://docs.oracle.com/en/solutions/oci-best-practices/effective-strategies-distributed-cloud-implementation1.html
|
||||
@@ -1,92 +0,0 @@
|
||||
[
|
||||
{
|
||||
"feature": "Auto Indexing",
|
||||
"category": "auto_management",
|
||||
"compatibility": [
|
||||
{
|
||||
"deployment": "ADB-S Serverless",
|
||||
"version": "23ai",
|
||||
"status": "GA_CAVEAT",
|
||||
"notes": "Creates indexes HIDDEN by default. Instantly reversible. DML costing prevents over-indexing. Deduplication with manually created indexes."
|
||||
},
|
||||
{
|
||||
"deployment": "ADB-S Serverless",
|
||||
"version": "26ai",
|
||||
"status": "GA",
|
||||
"notes": "Improved in 26ai \u2014 better cost model, fewer false positives."
|
||||
},
|
||||
{
|
||||
"deployment": "ADB-S Elastic Pool",
|
||||
"version": "23ai",
|
||||
"status": "GA_CAVEAT",
|
||||
"notes": "Same as ADB-S Serverless."
|
||||
},
|
||||
{
|
||||
"deployment": "ADB Dedicated Elastic Pool (DEP)",
|
||||
"version": "23ai",
|
||||
"status": "GA_CAVEAT",
|
||||
"notes": "Available but less tested in DEP."
|
||||
},
|
||||
{
|
||||
"deployment": "ADB on Dedicated Exadata",
|
||||
"version": "23ai",
|
||||
"status": "GA",
|
||||
"notes": "Fully supported."
|
||||
},
|
||||
{
|
||||
"deployment": "Exadata Cloud Service",
|
||||
"version": "23ai",
|
||||
"status": "NOT_AVAIL",
|
||||
"notes": "Not an ADB feature. Use manual indexing."
|
||||
},
|
||||
{
|
||||
"deployment": "Base DB Service (EE)",
|
||||
"version": "23ai",
|
||||
"status": "NOT_AVAIL",
|
||||
"notes": ""
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"feature": "AI Vector Search (HNSW)",
|
||||
"category": "developer",
|
||||
"compatibility": [
|
||||
{
|
||||
"deployment": "ADB-S Serverless",
|
||||
"version": "23ai",
|
||||
"status": "GA_CAVEAT",
|
||||
"notes": "HNSW indexes are node-local on multi-node RAC. Works well up to\n~50M vectors on single node (\u226424 ECPUs). At 100M+ on multi-node\n(\u226564 ECPUs), requires hash-partitioned vector table with LOCAL\nHNSW index for <50ms P95. See FF-202603-008.\n"
|
||||
},
|
||||
{
|
||||
"deployment": "ADB-S Serverless",
|
||||
"version": "26ai",
|
||||
"status": "UNTESTED",
|
||||
"notes": "Check if distributed HNSW is added in 26ai. Expected to remain node-local."
|
||||
},
|
||||
{
|
||||
"deployment": "ADB-S Elastic Pool",
|
||||
"version": "23ai",
|
||||
"status": "GA_CAVEAT",
|
||||
"notes": "Same node-local limitation as ADB-S Serverless."
|
||||
},
|
||||
{
|
||||
"deployment": "ADB on Dedicated Exadata",
|
||||
"version": "23ai",
|
||||
"status": "GA_CAVEAT",
|
||||
"notes": "Same limitation. Dedicated infra doesn't change HNSW locality."
|
||||
},
|
||||
{
|
||||
"deployment": "Exadata Cloud Service",
|
||||
"version": "23ai",
|
||||
"status": "GA_CAVEAT",
|
||||
"notes": "RAC with HNSW has same node-local constraint. Partitioning workaround applies."
|
||||
},
|
||||
{
|
||||
"deployment": "Base DB Service (EE)",
|
||||
"version": "23ai",
|
||||
"status": "NOT_AVAIL",
|
||||
"notes": "AI Vector Search requires 23ai. Available in EE but HNSW performance limited without Exadata storage."
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -1,25 +0,0 @@
|
||||
{
|
||||
"query": "ADB-S vs AWS Aurora PostgreSQL",
|
||||
"aws_database_mappings": [],
|
||||
"relevant_objections": [
|
||||
{
|
||||
"id": "OBJ-001",
|
||||
"category": "market",
|
||||
"objection": "OCI is a niche cloud \u2014 AWS/Azure are the leaders",
|
||||
"response": "OCI is the #4 cloud globally and growing fastest in database PaaS.\nFor Oracle database workloads specifically, OCI is the leader:\n- Only cloud with Exadata hardware\n- Only cloud with Autonomous Database\n- Best Oracle license portability\nThe question isn't \"best cloud overall\" but \"best cloud for this workload.\"\n",
|
||||
"evidence": "Gartner, IDC reports on cloud database market"
|
||||
},
|
||||
{
|
||||
"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\nworkloads, OCI feature parity is strong. Key services are GA:\n- Compute, networking, storage, Kubernetes, serverless\n- Monitoring, logging, IAM, security\n- Queue, Streaming, API Gateway\nWhat matters is whether OCI has what *you* need, not a raw count.\n"
|
||||
},
|
||||
{
|
||||
"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.\nFor Oracle specifically:\n- No Oracle license surcharge on OCI\n- BYOL discount is deeper on OCI\n- Data egress is 10x cheaper\nRequest a detailed cost comparison with matched configurations.\n"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,121 +0,0 @@
|
||||
[
|
||||
{
|
||||
"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\nto a Dedicated Elastic Pool, the operation fails. ADG must be explicitly\ndisabled before the instance can join the DEP. This is a known issue\nacknowledged by Oracle but not prominently documented.\n\nImpact: requires a brief HA gap during DEP onboarding. Must coordinate\nwith the customer's change window.\n",
|
||||
"workaround": "Disable ADG \u2192 join DEP \u2192 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 \u2014 change only via SR",
|
||||
"detail": "The maintenance window for a Dedicated Elastic Pool cannot be changed\nafter creation via Console, CLI, or API. The only way to change it is\nby filing a Service Request with Oracle Support.\n\nDefault window is Saturday/Sunday. Other days require specifying at\ncreation time (which itself has the CLI bug \u2014 see FF-202603-001) or\nrequesting via SR.\n",
|
||||
"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.\nIt requires physical Exadata infrastructure allocation. Lead time varies\nfrom 3 days (if capacity available in region) to 2-3 weeks (if capacity\nneeds to be provisioned).\n\nBilling starts only at AVAILABLE state, not at request time.\nCo-location of existing ADB-S instances happens at the next maintenance\nwindow after joining, not immediately.\n",
|
||||
"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 \u2014 detection delay",
|
||||
"detail": "When a Refreshable Clone's auto-refresh fails, the clone remains in\nAVAILABLE state (not DISCONNECTED). The Elastic Pool leader monitors\nlifecycle state changes, not refresh success/failure.\n\nThis means a failed refresh is NOT immediately detected by the\ninfrastructure. The stale data window equals the ADG RTO for\nunplanned scenarios.\n",
|
||||
"workaround": "Planned switchovers: DBMS_PROXY_SQL.DISABLE_READ_ONLY_OFFLOAD proactively.\nUnplanned: OCI Events + OCI Function that monitors refresh state and\ndisables read offload automatically. Reduces stale window to ~ADG RTO.\n",
|
||||
"oracle_sr": "",
|
||||
"status": "monitoring",
|
||||
"resolved_date": null,
|
||||
"resolution": null,
|
||||
"affects_matrix": "Refreshable Clone",
|
||||
"tags": [
|
||||
"refreshable-clone",
|
||||
"stale-reads",
|
||||
"elastic-pool",
|
||||
"detection-delay",
|
||||
"proxysql"
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -1,300 +0,0 @@
|
||||
[
|
||||
{
|
||||
"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",
|
||||
"autonomous"
|
||||
],
|
||||
"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.\n",
|
||||
"terraform": null
|
||||
},
|
||||
{
|
||||
"title": "Implement disaster recovery with local and regional standbys on Oracle Database@Azure",
|
||||
"url": "https://docs.oracle.com/en/solutions/local-regional-standby-dr-db-at-azure/index.html",
|
||||
"type": "reference-architecture",
|
||||
"date": "2025-05",
|
||||
"services": [
|
||||
"exacs",
|
||||
"adg",
|
||||
"azure",
|
||||
"fsdr"
|
||||
],
|
||||
"tags": [
|
||||
"database",
|
||||
"multicloud",
|
||||
"azure",
|
||||
"ha-dr"
|
||||
],
|
||||
"summary": "Local standby for HA within same region, regional standby for DR across Azure regions. Uses Active Data Guard with Fast-Start Failover. Recommends Full Stack DR service for automated failover orchestration.\n",
|
||||
"terraform": null
|
||||
},
|
||||
{
|
||||
"title": "Implement disaster recovery with multi-region standby on Oracle Database@Azure",
|
||||
"url": "https://docs.oracle.com/en/solutions/multi-region-standby-dr-db-at-azure/index.html",
|
||||
"type": "reference-architecture",
|
||||
"date": "2025-04",
|
||||
"services": [
|
||||
"exacs",
|
||||
"adg",
|
||||
"azure"
|
||||
],
|
||||
"tags": [
|
||||
"database",
|
||||
"multicloud",
|
||||
"azure",
|
||||
"ha-dr"
|
||||
],
|
||||
"summary": "Multi-region DR for ExaCS on Database@Azure using Data Guard. Cross-region standby with switchover/failover capabilities. Includes network topology for Azure-to-Azure cross-region connectivity.\n",
|
||||
"terraform": null
|
||||
},
|
||||
{
|
||||
"title": "Implement cross-region disaster recovery for Exadata Database on Oracle Database@Azure",
|
||||
"url": "https://docs.oracle.com/en/solutions/exadb-dr-on-db-azure/index.html",
|
||||
"type": "reference-architecture",
|
||||
"date": "2025-01",
|
||||
"services": [
|
||||
"exacs",
|
||||
"adg",
|
||||
"azure",
|
||||
"fsdr"
|
||||
],
|
||||
"tags": [
|
||||
"database",
|
||||
"multicloud",
|
||||
"azure",
|
||||
"ha-dr"
|
||||
],
|
||||
"summary": "Cross-region DR for ExaCS on Database@Azure. OCI-managed networks for peering (better performance, first 10 TB/month free). Data Guard for cross-region replication, FSDR for automated failover orchestration.\n",
|
||||
"terraform": "https://github.com/oracle-quickstart/oci-multicloud-azure"
|
||||
},
|
||||
{
|
||||
"title": "Deploy Active Data Guard Far Sync to protect data across Oracle Database@Azure regions",
|
||||
"url": "https://docs.oracle.com/en/solutions/active-data-guard-far-sync-oracle-db-at-azure/index.html",
|
||||
"type": "reference-architecture",
|
||||
"date": "2025-02",
|
||||
"services": [
|
||||
"exacs",
|
||||
"adg",
|
||||
"azure"
|
||||
],
|
||||
"tags": [
|
||||
"database",
|
||||
"multicloud",
|
||||
"azure",
|
||||
"ha-dr"
|
||||
],
|
||||
"summary": "Far Sync instance for zero data loss protection across Azure regions. Synchronous redo transport to Far Sync, async to remote standby. Eliminates performance impact of synchronous shipping over long distances.\n",
|
||||
"terraform": null
|
||||
},
|
||||
{
|
||||
"title": "Implement Oracle Database Autonomous Recovery Service with Oracle Database@Azure",
|
||||
"url": "https://docs.oracle.com/en/solutions/implement-recovery-service-db-at-azure/index.html",
|
||||
"type": "reference-architecture",
|
||||
"date": "2025-01",
|
||||
"services": [
|
||||
"exacs",
|
||||
"azure"
|
||||
],
|
||||
"tags": [
|
||||
"database",
|
||||
"multicloud",
|
||||
"azure",
|
||||
"ha-dr"
|
||||
],
|
||||
"summary": "Autonomous Recovery Service for ExaCS backups on Database@Azure. Automated backup management with real-time protection and point-in-time recovery capabilities.\n",
|
||||
"terraform": null
|
||||
},
|
||||
{
|
||||
"title": "Deploy Active Data Guard Far Sync to protect data across Oracle Database@AWS regions",
|
||||
"url": "https://docs.oracle.com/en/solutions/dr-active-dg-farsync-db-at-aws/index.html",
|
||||
"type": "reference-architecture",
|
||||
"date": "2025-09",
|
||||
"services": [
|
||||
"exacs",
|
||||
"adg",
|
||||
"aws"
|
||||
],
|
||||
"tags": [
|
||||
"database",
|
||||
"multicloud",
|
||||
"aws",
|
||||
"ha-dr"
|
||||
],
|
||||
"summary": "Far Sync instance for zero data loss protection across AWS regions. Synchronous redo to local Far Sync, asynchronous to remote standby. Requires cross-region AWS networking for redo transport.\n",
|
||||
"terraform": null
|
||||
},
|
||||
{
|
||||
"title": "Implement disaster recovery with local and regional standbys on Oracle Database@AWS",
|
||||
"url": "https://docs.oracle.com/en/solutions/dr-local-regional-standby-db-at-aws/index.html",
|
||||
"type": "reference-architecture",
|
||||
"date": "2025-09",
|
||||
"services": [
|
||||
"exacs",
|
||||
"adg",
|
||||
"aws",
|
||||
"fsdr"
|
||||
],
|
||||
"tags": [
|
||||
"database",
|
||||
"multicloud",
|
||||
"aws",
|
||||
"ha-dr"
|
||||
],
|
||||
"summary": "Local standby for HA within same AWS region, regional standby for DR. Active Data Guard with Fast-Start Failover for automated failover. Full Stack DR service for cross-service failover orchestration.\n",
|
||||
"terraform": null
|
||||
},
|
||||
{
|
||||
"title": "Implement disaster recovery with cross-zonal Data Guard on Oracle Database@AWS",
|
||||
"url": "https://docs.oracle.com/en/solutions/cross-zone-dr-db-at-aws/index.html",
|
||||
"type": "reference-architecture",
|
||||
"date": "2025-08",
|
||||
"services": [
|
||||
"exacs",
|
||||
"adg",
|
||||
"aws"
|
||||
],
|
||||
"tags": [
|
||||
"database",
|
||||
"multicloud",
|
||||
"aws",
|
||||
"ha-dr"
|
||||
],
|
||||
"summary": "Cross-AZ Data Guard on Database@AWS for HA. Synchronous redo transport between AZs for zero data loss. Fast-Start Failover for automatic database switchover on failure.\n",
|
||||
"terraform": null
|
||||
},
|
||||
{
|
||||
"title": "Implement disaster recovery with cross-regional Data Guard on Oracle Database@AWS",
|
||||
"url": "https://docs.oracle.com/en/solutions/implement-dr-cross-region-dg-odb-aws/index.html",
|
||||
"type": "reference-architecture",
|
||||
"date": "2025-08",
|
||||
"services": [
|
||||
"exacs",
|
||||
"adg",
|
||||
"aws"
|
||||
],
|
||||
"tags": [
|
||||
"database",
|
||||
"multicloud",
|
||||
"aws",
|
||||
"ha-dr"
|
||||
],
|
||||
"summary": "Cross-region Data Guard on Database@AWS for DR. Asynchronous redo transport for cross-region replication. Planned switchover for maintenance, forced failover for disaster scenarios.\n",
|
||||
"terraform": null
|
||||
},
|
||||
{
|
||||
"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",
|
||||
"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.\n",
|
||||
"terraform": null
|
||||
},
|
||||
{
|
||||
"title": "Configure Data Guard for Oracle Exadata Database Service on Dedicated Infrastructure",
|
||||
"url": "https://docs.oracle.com/en/solutions/dataguard-exadata-dedicated-infrastructure/index.html",
|
||||
"type": "reference-architecture",
|
||||
"date": "2025-07",
|
||||
"services": [
|
||||
"exacs",
|
||||
"adg"
|
||||
],
|
||||
"tags": [
|
||||
"database",
|
||||
"ha-dr"
|
||||
],
|
||||
"summary": "Data Guard configuration for ExaCS Dedicated. Active Data Guard for read offload and automatic failover. Cross-region standby for DR with Fast-Start Failover for automated switchover.\n",
|
||||
"terraform": null
|
||||
},
|
||||
{
|
||||
"title": "Back up from Exadata on Dedicated Infrastructure to Zero Data Loss Autonomous Recovery",
|
||||
"url": "https://docs.oracle.com/en/solutions/back-up-exadata-dedicated-zero-data-loss-recovery/index.html",
|
||||
"type": "reference-architecture",
|
||||
"date": "2025-07",
|
||||
"services": [
|
||||
"exacs"
|
||||
],
|
||||
"tags": [
|
||||
"database",
|
||||
"ha-dr"
|
||||
],
|
||||
"summary": "Autonomous Recovery Service for ExaCS backups. Automated backup management with real-time redo protection. Validates backup recoverability automatically.\n",
|
||||
"terraform": null
|
||||
},
|
||||
{
|
||||
"title": "Configure a standby database for disaster recovery using Oracle Exadata Database Service on Cloud@Customer",
|
||||
"url": "https://docs.oracle.com/en/solutions/exadata-cloud-at-customer-standby/index.html",
|
||||
"type": "reference-architecture",
|
||||
"date": "2025-07",
|
||||
"services": [
|
||||
"exacs",
|
||||
"adg"
|
||||
],
|
||||
"tags": [
|
||||
"database",
|
||||
"ha-dr"
|
||||
],
|
||||
"summary": "Data Guard standby on ExaCS Cloud@Customer for hybrid DR. On-premises primary with cloud standby, or cloud primary with on-premises standby for data sovereignty requirements.\n",
|
||||
"terraform": null
|
||||
},
|
||||
{
|
||||
"title": "Learn about maximum availability architecture for PeopleSoft",
|
||||
"url": "https://docs.oracle.com/en/solutions/learn-about-maa-for-peoplesoft/index.html",
|
||||
"type": "reference-architecture",
|
||||
"date": "2024-08",
|
||||
"services": [
|
||||
"exacs",
|
||||
"adg",
|
||||
"load-balancer",
|
||||
"compute"
|
||||
],
|
||||
"tags": [
|
||||
"application",
|
||||
"ha-dr",
|
||||
"peoplesoft"
|
||||
],
|
||||
"summary": "MAA for PeopleSoft on OCI. Active Data Guard for database HA/DR, multi-instance PIA behind Load Balancer, Process Scheduler on multiple nodes for batch processing resilience.\n",
|
||||
"terraform": null
|
||||
},
|
||||
{
|
||||
"title": "Provision and deploy a maximum availability solution for PeopleSoft on Oracle Cloud",
|
||||
"url": "https://docs.oracle.com/en/solutions/deploy-maa-for-peoplesoft-on-oci/index.html",
|
||||
"type": "reference-architecture",
|
||||
"date": "2024-08",
|
||||
"services": [
|
||||
"exacs",
|
||||
"adg",
|
||||
"load-balancer",
|
||||
"compute"
|
||||
],
|
||||
"tags": [
|
||||
"application",
|
||||
"ha-dr",
|
||||
"peoplesoft"
|
||||
],
|
||||
"summary": "Step-by-step PeopleSoft MAA deployment on OCI. Terraform stacks for infrastructure provisioning, Data Guard configuration, and PeopleSoft application tier setup.\n",
|
||||
"terraform": null
|
||||
}
|
||||
]
|
||||
@@ -1,33 +0,0 @@
|
||||
[
|
||||
{
|
||||
"id": "FF-202604-001",
|
||||
"date": "2026-04-12",
|
||||
"contributor": {
|
||||
"name": "Carlos Mendoza",
|
||||
"team": "Field Architecture",
|
||||
"date": "2026-04-12",
|
||||
"confidence": "validated",
|
||||
"client": "PharmaCorp Mexico",
|
||||
"context": "ExaCS migration"
|
||||
},
|
||||
"reported_by": "Carlos Mendoza",
|
||||
"product": "ExaCS",
|
||||
"version": "23ai",
|
||||
"severity": "MEDIUM",
|
||||
"category": "gotcha",
|
||||
"summary": "ExaCS iormcal fails silently when storage server count < 3 \u2014 validate IORM plan after apply",
|
||||
"detail": "IORM resource plan apply succeeds but actual I/O shares are not enforced when storage count < 3. Check v$iorm_plans for actual vs requested allocation.",
|
||||
"workaround": "Always validate IORM plan output after apply. Check v$iorm_plans for actual vs requested shares. Minimum 3 storage servers for reliable IORM.",
|
||||
"oracle_sr": "",
|
||||
"status": "open",
|
||||
"resolved_date": null,
|
||||
"resolution": null,
|
||||
"affects_matrix": null,
|
||||
"tags": [
|
||||
"exacs",
|
||||
"iorm",
|
||||
"storage"
|
||||
],
|
||||
"confirmations": []
|
||||
}
|
||||
]
|
||||
@@ -1,175 +0,0 @@
|
||||
{
|
||||
"summary": {
|
||||
"total_artefacts": 18,
|
||||
"mentioned": 2,
|
||||
"likely_relevant": 0,
|
||||
"possibly_relevant": 9,
|
||||
"not_covered": 7,
|
||||
"skill_auto_generate": 5,
|
||||
"skill_assist": 2
|
||||
},
|
||||
"artefacts": [
|
||||
{
|
||||
"id": "DEF-01",
|
||||
"name": "Customer Profile",
|
||||
"phase": "define",
|
||||
"step": "ideate",
|
||||
"skill_support": "assist",
|
||||
"customer_facing": false,
|
||||
"relevance": "possibly_relevant"
|
||||
},
|
||||
{
|
||||
"id": "DEF-02",
|
||||
"name": "Strategy Map",
|
||||
"phase": "define",
|
||||
"step": "ideate",
|
||||
"skill_support": "assist",
|
||||
"customer_facing": false,
|
||||
"relevance": "none"
|
||||
},
|
||||
{
|
||||
"id": "DEF-03",
|
||||
"name": "Point of View (PoV)",
|
||||
"phase": "define",
|
||||
"step": "ideate",
|
||||
"skill_support": "auto_generate",
|
||||
"customer_facing": false,
|
||||
"relevance": "possibly_relevant"
|
||||
},
|
||||
{
|
||||
"id": "DEF-04",
|
||||
"name": "Ideation Workshop",
|
||||
"phase": "define",
|
||||
"step": "ideate",
|
||||
"skill_support": "reference",
|
||||
"customer_facing": true,
|
||||
"relevance": "possibly_relevant"
|
||||
},
|
||||
{
|
||||
"id": "DEF-05",
|
||||
"name": "Business Case",
|
||||
"phase": "define",
|
||||
"step": "ideate",
|
||||
"skill_support": "auto_generate",
|
||||
"customer_facing": true,
|
||||
"relevance": "mentioned"
|
||||
},
|
||||
{
|
||||
"id": "DEF-06",
|
||||
"name": "Value Story",
|
||||
"phase": "define",
|
||||
"step": "ideate",
|
||||
"skill_support": "auto_generate",
|
||||
"customer_facing": true,
|
||||
"relevance": "mentioned"
|
||||
},
|
||||
{
|
||||
"id": "DEF-07",
|
||||
"name": "Value Story Delivery",
|
||||
"phase": "define",
|
||||
"step": "validate",
|
||||
"skill_support": "assist",
|
||||
"customer_facing": true,
|
||||
"relevance": "possibly_relevant"
|
||||
},
|
||||
{
|
||||
"id": "DEF-08",
|
||||
"name": "Joint Engagement Plan (JEP)",
|
||||
"phase": "define",
|
||||
"step": "plan",
|
||||
"skill_support": "auto_generate",
|
||||
"customer_facing": true,
|
||||
"relevance": "possibly_relevant"
|
||||
},
|
||||
{
|
||||
"id": "DES-35",
|
||||
"name": "Solution Proposal",
|
||||
"phase": "design",
|
||||
"step": "confirm",
|
||||
"skill_support": "auto_generate",
|
||||
"customer_facing": true,
|
||||
"relevance": "none"
|
||||
},
|
||||
{
|
||||
"id": "DES-36",
|
||||
"name": "Partner / Services Proposal",
|
||||
"phase": "design",
|
||||
"step": "confirm",
|
||||
"skill_support": "reference",
|
||||
"customer_facing": true,
|
||||
"relevance": "none"
|
||||
},
|
||||
{
|
||||
"id": "DES-37",
|
||||
"name": "RFx Response",
|
||||
"phase": "design",
|
||||
"step": "confirm",
|
||||
"skill_support": "reference",
|
||||
"customer_facing": true,
|
||||
"relevance": "none"
|
||||
},
|
||||
{
|
||||
"id": "DES-38",
|
||||
"name": "Commercial Agreement",
|
||||
"phase": "design",
|
||||
"step": "confirm",
|
||||
"skill_support": "reference",
|
||||
"customer_facing": true,
|
||||
"relevance": "none"
|
||||
},
|
||||
{
|
||||
"id": "DEL-17",
|
||||
"name": "Cloud Operating Framework",
|
||||
"phase": "deliver",
|
||||
"step": "operate",
|
||||
"skill_support": "reference",
|
||||
"customer_facing": true,
|
||||
"relevance": "possibly_relevant"
|
||||
},
|
||||
{
|
||||
"id": "DEL-18",
|
||||
"name": "OCI Operationalization Framework",
|
||||
"phase": "deliver",
|
||||
"step": "operate",
|
||||
"skill_support": "reference",
|
||||
"customer_facing": true,
|
||||
"relevance": "none"
|
||||
},
|
||||
{
|
||||
"id": "DEL-19",
|
||||
"name": "Retrospective",
|
||||
"phase": "deliver",
|
||||
"step": "improve",
|
||||
"skill_support": "auto_generate",
|
||||
"customer_facing": false,
|
||||
"relevance": "none"
|
||||
},
|
||||
{
|
||||
"id": "DEL-20",
|
||||
"name": "Value Realization",
|
||||
"phase": "deliver",
|
||||
"step": "improve",
|
||||
"skill_support": "auto_generate",
|
||||
"customer_facing": true,
|
||||
"relevance": "possibly_relevant"
|
||||
},
|
||||
{
|
||||
"id": "DEL-21",
|
||||
"name": "Customer Success Story",
|
||||
"phase": "deliver",
|
||||
"step": "improve",
|
||||
"skill_support": "reference",
|
||||
"customer_facing": true,
|
||||
"relevance": "possibly_relevant"
|
||||
},
|
||||
{
|
||||
"id": "DEL-22",
|
||||
"name": "Improvement Actions",
|
||||
"phase": "deliver",
|
||||
"step": "improve",
|
||||
"skill_support": "reference",
|
||||
"customer_facing": true,
|
||||
"relevance": "possibly_relevant"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,401 +0,0 @@
|
||||
# OCI Deal Accelerator — Proposal Spec
|
||||
# Demo: Pharma Mexico — ExaCS migration from on-prem Exadata X6
|
||||
# Prompt 1: Full proposal
|
||||
|
||||
metadata:
|
||||
customer: "PharmaCorp Mexico"
|
||||
project: "Oracle Database Migration to OCI"
|
||||
subtitle: "ExaCS Migration — Exadata X6 to OCI"
|
||||
architect: "Carlos Mendoza"
|
||||
firm: "Oracle Cloud Infrastructure"
|
||||
date: "2026-04-12"
|
||||
|
||||
summary:
|
||||
why: >
|
||||
PharmaCorp Mexico operates 3 Oracle databases (EBS R12, SAP, DW) on on-premises
|
||||
Exadata X6 hardware approaching end-of-life. Hardware refresh costs $1.8M and
|
||||
locks into 5 more years of on-prem operations. Migration to OCI ExaCS provides
|
||||
30%+ cost reduction, eliminates hardware lifecycle management, improves DR posture
|
||||
(RPO<15min, RTO<1h), and enables SOX compliance alignment with Oracle-managed
|
||||
infrastructure patching.
|
||||
current_state:
|
||||
- "3 Oracle DBs on Exadata X6 (EBS R12 prod, SAP, Data Warehouse)"
|
||||
- "200 concurrent users, peak during fiscal close"
|
||||
- "2TB total data across all databases"
|
||||
- "No DR — single site in Mexico City data center"
|
||||
- "Manual patching quarterly — SOX audit finding pending"
|
||||
- "HW refresh due in 6 months ($1.8M quote)"
|
||||
target_state: >
|
||||
OCI ExaCS X11M in Queretaro (prod) with Data Guard standby in Sao Paulo for
|
||||
cross-region DR. Hub-spoke networking via DRG, dual FastConnect 10Gbps for
|
||||
redundancy, WAF for web applications, OCI Vault for TDE key management.
|
||||
SOX compliance via automated patching and audit logging.
|
||||
timeline: "Migration Q3-Q4 2026 (16 weeks) — conditional on board approval Q2"
|
||||
|
||||
service_tiering:
|
||||
- name: "EBS R12 Production"
|
||||
tier: "Platinum"
|
||||
uptime: "99.99%"
|
||||
rto: "1 hour"
|
||||
rpo: "15 minutes"
|
||||
justification: "Business-critical ERP — fiscal close depends on this"
|
||||
- name: "SAP Database"
|
||||
tier: "Gold"
|
||||
uptime: "99.95%"
|
||||
rto: "4 hours"
|
||||
rpo: "1 hour"
|
||||
justification: "Critical but lower user count"
|
||||
- name: "Data Warehouse"
|
||||
tier: "Silver"
|
||||
uptime: "99.9%"
|
||||
rto: "8 hours"
|
||||
rpo: "4 hours"
|
||||
justification: "Reporting — can tolerate longer recovery"
|
||||
|
||||
architecture_principles:
|
||||
design:
|
||||
- id: "D-01"
|
||||
name: "Operational Simplicity"
|
||||
summary: "Prefer managed services with automated patching"
|
||||
rationale: "SOX requires documented patching — ExaCS automates this"
|
||||
- id: "D-05"
|
||||
name: "HA for Business Continuity"
|
||||
summary: "Design for HA proportional to business impact"
|
||||
rationale: "EBS is Platinum tier — needs cross-region DR"
|
||||
- id: "D-06"
|
||||
name: "Defense in Depth"
|
||||
summary: "Multiple security layers, not single perimeter"
|
||||
rationale: "SOX compliance requires network segmentation + encryption + audit"
|
||||
deployment:
|
||||
- id: "P-01"
|
||||
name: "Infrastructure as Code"
|
||||
summary: "All infrastructure defined in Terraform"
|
||||
rationale: "Reproducible environments, audit trail for SOX"
|
||||
|
||||
architecture:
|
||||
description: >
|
||||
Dual-region ExaCS deployment: Queretaro (primary) + Sao Paulo (DR standby).
|
||||
Hub-spoke networking with DRG provides segmented VCNs for each workload tier.
|
||||
Dual FastConnect 10Gbps from Mexico City provides redundant connectivity.
|
||||
WAF protects EBS web tier. OCI Vault manages TDE encryption keys externally.
|
||||
|
||||
Key components:
|
||||
- ExaCS X11M Quarter Rack in Queretaro (3 databases)
|
||||
- Data Guard to ExaCS standby in Sao Paulo (EBS + SAP)
|
||||
- Hub VCN with DRG for inter-spoke routing
|
||||
- Dual FastConnect 10Gbps from Mexico City DC
|
||||
- WAF for EBS R12 web access
|
||||
- OCI Vault for TDE key management (SOX)
|
||||
- OCI Logging + Audit for compliance
|
||||
visual:
|
||||
regions:
|
||||
- name: "Queretaro (Primary)"
|
||||
services:
|
||||
- name: "ExaCS X11M (3 DBs)"
|
||||
type: "database"
|
||||
- name: "Hub VCN + DRG"
|
||||
type: "networking"
|
||||
- name: "WAF"
|
||||
type: "security"
|
||||
- name: "OCI Vault"
|
||||
type: "security"
|
||||
- name: "Sao Paulo (DR)"
|
||||
services:
|
||||
- name: "ExaCS Standby (Data Guard)"
|
||||
type: "database"
|
||||
- name: "Spoke VCN"
|
||||
type: "networking"
|
||||
|
||||
decisions:
|
||||
- title: "ExaCS over ADB-S"
|
||||
decision: "Use ExaCS instead of ADB-S for all 3 databases"
|
||||
rationale: >
|
||||
EBS R12 requires OS-level access for patches and customizations.
|
||||
SAP on Oracle requires specific Oracle features not available on ADB-S.
|
||||
DW benefits from ExaCS storage performance. All 3 share the same
|
||||
Exadata infrastructure for cost efficiency.
|
||||
alternatives: "ADB-S (rejected — EBS needs OS access), DBCS (rejected — no Exadata performance)"
|
||||
|
||||
- title: "Cross-Region DR with Data Guard"
|
||||
decision: "Active Data Guard from Queretaro to Sao Paulo"
|
||||
rationale: >
|
||||
RPO<15min requires real-time redo shipping. Sao Paulo provides geographic
|
||||
separation for disaster scenarios. Data Guard supports automatic failover
|
||||
with FSDR for RTO<1h.
|
||||
alternatives: "Backup/restore (rejected — RPO 24h), Same-region standby (no geo separation)"
|
||||
|
||||
- title: "Hub-Spoke Networking"
|
||||
decision: "Hub VCN with DRG for inter-spoke routing and segmentation"
|
||||
rationale: >
|
||||
SOX requires network segmentation between environments. Hub-spoke with DRG
|
||||
provides centralized security controls (WAF, NSG) while isolating workloads.
|
||||
alternatives: "Flat VCN (rejected — no segmentation for SOX)"
|
||||
|
||||
- title: "Dual FastConnect"
|
||||
decision: "Two 10Gbps FastConnect circuits from Mexico City"
|
||||
rationale: >
|
||||
Single FastConnect is a documented single point of failure. Dual circuits
|
||||
provide redundancy for the EBS production workload.
|
||||
alternatives: "Single FastConnect + IPSec VPN backup (acceptable for lower tiers)"
|
||||
|
||||
- title: "OCI Vault for TDE Keys"
|
||||
decision: "External key management via OCI Vault instead of Oracle Wallet"
|
||||
rationale: >
|
||||
SOX requires separation of duties for encryption key management.
|
||||
OCI Vault provides FIPS 140-2 Level 3 HSM-backed key storage.
|
||||
alternatives: "Oracle Wallet on ExaCS (simpler but no separation of duties)"
|
||||
|
||||
ha_dr:
|
||||
description: >
|
||||
Primary in Queretaro with Active Data Guard to Sao Paulo. FSDR orchestrates
|
||||
failover for RTO<1h. EBS and SAP databases replicated; DW rebuilt from backup
|
||||
in DR scenario (Silver tier — 8h RTO acceptable).
|
||||
tiers:
|
||||
- tier: "Platinum — EBS R12"
|
||||
technology: "ExaCS + Active Data Guard + FSDR automatic failover"
|
||||
rto: "1 hour"
|
||||
rpo: "15 minutes"
|
||||
- tier: "Gold — SAP"
|
||||
technology: "ExaCS + Active Data Guard"
|
||||
rto: "4 hours"
|
||||
rpo: "1 hour"
|
||||
- tier: "Silver — DW"
|
||||
technology: "ExaCS + RMAN backup to Object Storage"
|
||||
rto: "8 hours"
|
||||
rpo: "4 hours"
|
||||
|
||||
security:
|
||||
controls:
|
||||
identity:
|
||||
- "OCI IAM with federated identity (SAML 2.0 to corporate AD)"
|
||||
- "Separate admin compartments per environment"
|
||||
- "MFA required for all admin operations"
|
||||
- "Break-glass emergency access procedures"
|
||||
network:
|
||||
- "Hub-spoke VCN with DRG — workload isolation"
|
||||
- "WAF for EBS R12 web tier"
|
||||
- "NSG rules per spoke — deny-all default"
|
||||
- "Dual FastConnect — no public internet exposure"
|
||||
data_protection:
|
||||
- "TDE encryption at rest with OCI Vault (FIPS 140-2 L3)"
|
||||
- "Encryption in transit (TLS 1.2+ / native Oracle Net encryption)"
|
||||
- "Data Guard redo encryption"
|
||||
monitoring:
|
||||
- "OCI Audit for all API calls (SOX)"
|
||||
- "OCI Logging for network flows"
|
||||
- "Database Audit with Unified Auditing"
|
||||
- "OCI Events + Notifications for security alerts"
|
||||
compliance:
|
||||
- "SOX — automated patching, audit logging, separation of duties"
|
||||
|
||||
environment_catalogue:
|
||||
environments:
|
||||
- name: "Production (Queretaro)"
|
||||
sizing: "ExaCS X11M Quarter Rack — 3 databases (EBS, SAP, DW)"
|
||||
isolation: "Dedicated Exadata infrastructure"
|
||||
cost_pct: 100
|
||||
- name: "DR Standby (Sao Paulo)"
|
||||
sizing: "ExaCS X11M Quarter Rack — 2 databases (EBS, SAP standby)"
|
||||
isolation: "Dedicated Exadata infrastructure"
|
||||
cost_pct: 70
|
||||
- name: "Pre-Production"
|
||||
sizing: "DBCS VM — reduced sizing for testing"
|
||||
isolation: "Shared infrastructure, separate compartment"
|
||||
cost_pct: 15
|
||||
cost_notes:
|
||||
- "DR standby runs at 70% — Active Data Guard requires matching shape"
|
||||
- "Pre-prod uses DBCS VMs, not ExaCS — sufficient for functional testing"
|
||||
- "Dev/Test environment excluded — customer uses on-prem for dev"
|
||||
|
||||
cost:
|
||||
line_items:
|
||||
- component: "ExaCS X11M Quarter Rack — Queretaro (Prod)"
|
||||
monthly_payg: "$18,500"
|
||||
monthly_byol: "$8,200"
|
||||
notes: "2 DB servers, 3 storage servers, BYOL"
|
||||
- component: "ExaCS X11M Quarter Rack — Sao Paulo (DR)"
|
||||
monthly_payg: "$18,500"
|
||||
monthly_byol: "$8,200"
|
||||
notes: "ADG standby, BYOL"
|
||||
- component: "ADB-S 16 ECPU (DW alternative — future)"
|
||||
monthly_payg: "$2,400"
|
||||
monthly_byol: "$1,200"
|
||||
notes: "Optional — migrate DW to ADB-S in Phase 2"
|
||||
- component: "FastConnect 10Gbps Dual"
|
||||
monthly_payg: "$3,060"
|
||||
notes: "2 x $1,530/month"
|
||||
- component: "OCI Vault"
|
||||
monthly_payg: "$500"
|
||||
notes: "HSM-backed key management"
|
||||
- component: "Object Storage (50TB backup)"
|
||||
monthly_payg: "$1,200"
|
||||
notes: "RMAN backups + DW backup"
|
||||
- component: "WAF + Logging + Monitoring"
|
||||
monthly_payg: "$800"
|
||||
notes: "WAF for EBS web tier + audit logging"
|
||||
- component: "TOTAL"
|
||||
monthly_payg: "$45,000"
|
||||
monthly_byol: "$23,200"
|
||||
notes: "BYOL saves 48%"
|
||||
assumptions:
|
||||
- "BYOL assumes existing Oracle Database EE licenses with active support"
|
||||
- "ExaCS pricing based on current OCI list prices"
|
||||
- "DR standby at full rate (ADG requires active compute)"
|
||||
- "No middleware licensing included (EBS app tier on compute VMs)"
|
||||
- "FastConnect partner charges not included"
|
||||
show_byol: true
|
||||
|
||||
cost_comparison:
|
||||
title: "Cost Comparison: On-Prem HW Refresh vs OCI Migration"
|
||||
col_headers: ["Component", "On-Prem Refresh (5yr)", "OCI ExaCS BYOL", "Delta"]
|
||||
rows:
|
||||
- item: "Infrastructure (hardware/cloud)"
|
||||
current: "$1,800,000 upfront"
|
||||
oci: "$278,400/yr"
|
||||
savings: "Break-even at 3.2 years"
|
||||
- item: "Annual Support & Maintenance"
|
||||
current: "$220,000/yr"
|
||||
oci: "Included in OCI"
|
||||
savings: "-100%"
|
||||
- item: "DR Infrastructure"
|
||||
current: "$0 (no DR today)"
|
||||
oci: "$98,400/yr"
|
||||
savings: "New capability — no DR today"
|
||||
- item: "Data Center (power/cooling/space)"
|
||||
current: "$80,000/yr"
|
||||
oci: "$0"
|
||||
savings: "-100%"
|
||||
- item: "DBA Operations (patching)"
|
||||
current: "$60,000/yr (part-time DBA)"
|
||||
oci: "$0 (automated)"
|
||||
savings: "-100%"
|
||||
- item: "TOTAL ANNUAL (year 1)"
|
||||
current: "$2,160,000"
|
||||
oci: "$376,800"
|
||||
savings: "-83%"
|
||||
- item: "TOTAL 3-YEAR TCO"
|
||||
current: "$2,880,000"
|
||||
oci: "$1,130,400"
|
||||
savings: "-$1.75M (61%)"
|
||||
|
||||
migration:
|
||||
phases:
|
||||
- name: "Phase 1: Foundation"
|
||||
duration: "4 weeks"
|
||||
milestones:
|
||||
- "OCI tenancy + networking provisioned"
|
||||
- "ExaCS Quarter Rack deployed in Queretaro"
|
||||
- "FastConnect dual circuits active"
|
||||
- "OCI Vault + IAM configured"
|
||||
- name: "Phase 2: EBS Migration"
|
||||
duration: "6 weeks"
|
||||
milestones:
|
||||
- "EBS R12 database migrated via ZDM"
|
||||
- "Data Guard to Sao Paulo configured"
|
||||
- "WAF + network security validated"
|
||||
- "SOX audit controls verified"
|
||||
- name: "Phase 3: SAP + DW Migration"
|
||||
duration: "4 weeks"
|
||||
milestones:
|
||||
- "SAP database migrated"
|
||||
- "DW migrated + Data Guard for SAP"
|
||||
- "RMAN backup for DW to Object Storage"
|
||||
- name: "Phase 4: Cutover + Decommission"
|
||||
duration: "2 weeks"
|
||||
milestones:
|
||||
- "Production cutover (planned downtime window)"
|
||||
- "On-prem Exadata X6 decommissioned"
|
||||
- "Go-live monitoring active"
|
||||
tools:
|
||||
- "Oracle Zero Downtime Migration (ZDM)"
|
||||
- "Data Guard Broker for DR setup"
|
||||
- "FSDR for failover orchestration"
|
||||
- "Terraform OCI provider for IaC"
|
||||
downtime: "Planned 4-hour maintenance window for final cutover per database"
|
||||
|
||||
operational_raci:
|
||||
model: "co_managed"
|
||||
raci_items:
|
||||
- activity: "ExaCS Infrastructure Patching"
|
||||
oracle: "R"
|
||||
customer: "I"
|
||||
- activity: "Database Patching (quarterly)"
|
||||
oracle: "C"
|
||||
customer: "R"
|
||||
- activity: "Data Guard Monitoring"
|
||||
oracle: "C"
|
||||
customer: "R"
|
||||
- activity: "Backup & Recovery"
|
||||
oracle: "R"
|
||||
customer: "C"
|
||||
- activity: "Security (IAM, NSG, Vault)"
|
||||
oracle: "C"
|
||||
customer: "R"
|
||||
- activity: "SOX Audit Evidence"
|
||||
oracle: "C"
|
||||
customer: "R"
|
||||
- activity: "Capacity Planning"
|
||||
oracle: "C"
|
||||
customer: "R"
|
||||
- activity: "Incident Response (Sev1)"
|
||||
oracle: "C"
|
||||
customer: "R"
|
||||
|
||||
risks:
|
||||
- risk: "EBS R12 customizations may require OS-level changes post-migration"
|
||||
severity: "HIGH"
|
||||
probability: "Medium"
|
||||
mitigation: "Inventory all customizations pre-migration; test in Pre-Prod"
|
||||
- risk: "FastConnect provisioning delay (partner-dependent)"
|
||||
severity: "MEDIUM"
|
||||
probability: "Medium"
|
||||
mitigation: "Start FastConnect provisioning in Phase 1 week 1; IPSec VPN as interim"
|
||||
- risk: "SAP certification on ExaCS version"
|
||||
severity: "MEDIUM"
|
||||
probability: "Low"
|
||||
mitigation: "Verify SAP Note for ExaCS X11M support before migration"
|
||||
- risk: "Data Guard network latency Queretaro-Sao Paulo"
|
||||
severity: "LOW"
|
||||
probability: "Low"
|
||||
mitigation: "Test redo apply lag; async mode acceptable for SAP (Gold tier)"
|
||||
- risk: "SOX audit during migration window"
|
||||
severity: "MEDIUM"
|
||||
probability: "Medium"
|
||||
mitigation: "Maintain dual-write during transition; both systems auditable"
|
||||
|
||||
scorecard:
|
||||
pillars:
|
||||
- name: "Security & Compliance"
|
||||
status: "PASS"
|
||||
passed: 24
|
||||
total: 26
|
||||
- name: "Reliability & Resilience"
|
||||
status: "PASS_WITH_RECOMMENDATIONS"
|
||||
passed: 7
|
||||
total: 8
|
||||
- name: "Performance & Cost"
|
||||
status: "PASS"
|
||||
passed: 5
|
||||
total: 5
|
||||
- name: "Operational Efficiency"
|
||||
status: "PASS_WITH_RECOMMENDATIONS"
|
||||
passed: 9
|
||||
total: 10
|
||||
- name: "Distributed Cloud"
|
||||
status: "NOT_APPLICABLE"
|
||||
passed: 0
|
||||
total: 0
|
||||
recommendations:
|
||||
- "45/49 checks passed — strong architecture for regulated workload"
|
||||
- "Add runbook for Data Guard failover testing (quarterly DR drill)"
|
||||
- "Consider OCI Database Management for centralized fleet monitoring"
|
||||
- "Define capacity growth plan for fiscal close peak periods"
|
||||
|
||||
next_steps:
|
||||
steps:
|
||||
- "Board approval for OCI migration budget — CFO — by 2026-05-15"
|
||||
- "Provision OCI tenancy + ExaCS in Queretaro — Carlos Mendoza — by 2026-06-01"
|
||||
- "Start FastConnect provisioning with partner — Network team — by 2026-06-01"
|
||||
- "EBS customization inventory and Pre-Prod testing — DBA team — by 2026-06-15"
|
||||
- "Schedule SOX audit coordination meeting — Compliance — by 2026-06-01"
|
||||
contact_info: "Carlos Mendoza — Solutions Architect, Oracle Cloud Infrastructure"
|
||||
19
kb/CHANGELOG.md
Normal file
@@ -0,0 +1,19 @@
|
||||
# KB Changelog
|
||||
|
||||
Recent changes to the Knowledge Base. The skill shows the latest entry in the welcome banner.
|
||||
|
||||
## 2026-04-14
|
||||
- Diagram generator: icon sizing calibrated from 37 Oracle Architecture Center .drawio files (63px services, 42px gateways)
|
||||
- Diagram generator: auto-sizing containers, DRG placement outside VCN, edge label offsets
|
||||
- Diagram generator: VCN/subnet dash pattern corrected to "4 2" (Oracle ref standard)
|
||||
- New: `scripts/validate-diagram.py` — automated diagram quality validation
|
||||
- New: `--check-links` in refresh_arch_catalog.py — detects broken URLs in catalog
|
||||
- New: weekly KB health CI workflow (`.gitea/workflows/kb-health.yaml`)
|
||||
- SKILL.md: anti-hallucination guardrails (closed whitelist + mandatory pre-generation review)
|
||||
- SKILL.md: structured data intake (Extraction Receipt + Completeness Gate)
|
||||
|
||||
## 2026-04-01
|
||||
- KB validation: 30 corrections across 16 files (ExaCS storage, ECPU transition, IOPS fixes)
|
||||
|
||||
## 2026-03-16
|
||||
- Architecture Center catalog refreshed: 123 entries verified
|
||||
79
kb/README.md
@@ -18,7 +18,7 @@ skill itself read these YAMLs at runtime.
|
||||
| `architecture-center/` | Auto-curated index of Oracle Architecture Center reference architectures. | Single `catalog.yaml` |
|
||||
| `field-knowledge/` | Real-world gotchas, lessons learned, undocumented limits. | Frontmatter + body |
|
||||
| `field-findings/` | Tracker of newly logged field issues with confidence decay. | Single `tracker.yaml` |
|
||||
| `diagram/` | OCI icon library and reference layouts for diagram generation. | Mixed |
|
||||
| `diagram/` | OCI icon libraries, native PPTX icon index, and reference layouts for diagram generation. | Mixed |
|
||||
|
||||
## Required frontmatter
|
||||
|
||||
@@ -62,6 +62,7 @@ Use a directory when you need multiple files (pattern + diagrams + ADRs).
|
||||
| `kb/pricing/oci-sku-catalog.yaml` | `python tools/refresh_sku_catalog.py --refresh` (Oracle pricing API) |
|
||||
| `kb/pricing/compute.yaml` | `python tools/refresh_sku_catalog.py --refresh-domain compute` (same API, shape-level) |
|
||||
| `kb/architecture-center/catalog.yaml` | `python tools/refresh_arch_catalog.py --whats-new` (web crawl) |
|
||||
| `kb/diagram/assets/OCI_Icons.pptx` + `kb/diagram/oci-pptx-icons-index.json` | `python tools/refresh_pptx_icon_index.py [--source /path/to/OCI_Icons.pptx]` |
|
||||
| Other `kb/pricing/<domain>.yaml` | Not yet automated. Add a new entry to `DOMAIN_REGISTRY` in `tools/refresh_sku_catalog.py` and write a domain-specific refresher (see `refresh_compute_yaml` as a template). |
|
||||
| Everything else | **Manual** — review against Oracle docs, bump `last_verified` |
|
||||
|
||||
@@ -70,8 +71,84 @@ The shortcut for everyone:
|
||||
```bash
|
||||
make freshness # report stale files
|
||||
make freshness-refresh # run automatic refreshes for files that support them
|
||||
make pptx-icons-refresh # sync new OCI_Icons.pptx revision + rebuild manifest/index
|
||||
```
|
||||
|
||||
For native PowerPoint diagram generation, the repo now carries a bundled
|
||||
`kb/diagram/assets/OCI_Icons.pptx` plus a derived manifest/index. If Oracle
|
||||
publishes a newer icon deck, replace it or point the refresh tool at the new
|
||||
file and rebuild:
|
||||
|
||||
```bash
|
||||
make pptx-icons-refresh
|
||||
python tools/refresh_pptx_icon_index.py --source ~/Downloads/OCI_Icons.pptx
|
||||
```
|
||||
|
||||
## Architecture Center native benchmark
|
||||
|
||||
This repo now has a fixed, reusable benchmark path for Oracle Architecture
|
||||
Center visual fidelity. Keep this workflow stable because future sessions
|
||||
must re-run it exactly, not reconstruct it from memory.
|
||||
|
||||
Primary validation method:
|
||||
|
||||
- `draw.io` fidelity is measured by exporting the generated `*-rebuilt.drawio`
|
||||
with the real draw.io binary and comparing that PNG against the official
|
||||
Architecture Center PNG.
|
||||
- In this WSL setup, the primary binary is
|
||||
`/mnt/c/Program Files/draw.io/draw.io.exe`.
|
||||
- Only if the draw.io CLI is unavailable or fails should the runner fall back
|
||||
to the official bundled SVG companion.
|
||||
- Native `.pptx` fidelity is measured by rasterizing the editable PPTX slide
|
||||
with `tools/oci_pptx_render.py`. Do not depend on `soffice` or LibreOffice.
|
||||
|
||||
Operational notes that must remain persisted:
|
||||
|
||||
- Many official Oracle `.drawio` files are compressed inside `<diagram>` as
|
||||
base64 + raw-deflate XML. Extraction and validation must support that form.
|
||||
- `tools/drawio_visual_validator.py` is a structural gate before raster diff:
|
||||
it catches giant fonts, duplicate ids, off-canvas geometry, and dangling
|
||||
edges, including in compressed official `.drawio` files.
|
||||
- `tools/oci_pptx_render.py` is intentionally tolerant of unsupported
|
||||
`WMF/EMF` media. It skips those assets, records them in `skipped_media`,
|
||||
and keeps the benchmark running instead of aborting the case.
|
||||
|
||||
Standard rerun command:
|
||||
|
||||
```bash
|
||||
make archcenter-benchmark-20
|
||||
```
|
||||
|
||||
Equivalent explicit command:
|
||||
|
||||
```bash
|
||||
.venv/bin/python tools/oci_archcenter_batch.py \
|
||||
--limit 20 \
|
||||
--threshold 0.82 \
|
||||
--fidelity-threshold 0.90 \
|
||||
--output-root examples/eval-2026-04-25-archcenter-native-20-v8
|
||||
```
|
||||
|
||||
Acceptance contract:
|
||||
|
||||
- Official page + ZIP assets staged per case
|
||||
- Editable `drawio` rebuilt successfully
|
||||
- `draw.io` CLI fidelity `PASS` against official PNG, or documented SVG fallback
|
||||
- Icon-cluster coverage `>= 0.55`
|
||||
- Native PPTX generated with no unresolved or oversize icon refs
|
||||
- Native PPTX raster fidelity `PASS` against official PNG
|
||||
- Evidence written under each case: reference assets, generated outputs,
|
||||
raster renders, diff images, JSON summaries, and markdown reports
|
||||
|
||||
Latest verified run:
|
||||
|
||||
- `examples/eval-2026-04-25-archcenter-native-20-v8`
|
||||
- `considered=28`, `processed=20`, `skipped=8`, `PASS=20`, `FAIL=0`
|
||||
- The verified pool currently has no open native benchmark failures. The
|
||||
remaining gaps are confined to the skipped pool, which is still filtered
|
||||
out for annotation-heavy diagrams or missing draw.io icon families such as
|
||||
DNS/VPN/maximum-security-zone variants.
|
||||
|
||||
## Pricing files
|
||||
|
||||
There are exactly **two** pricing files, both auto-refreshed from the
|
||||
|
||||
@@ -18,6 +18,78 @@ last_verified: "2026-03-16"
|
||||
source: "https://docs.oracle.com/en/solutions/oracle-architecture-center/"
|
||||
entry_count: 123
|
||||
|
||||
# =============================================================================
|
||||
# KNOWN GAPS — topologies the catalog does NOT cover well
|
||||
# =============================================================================
|
||||
#
|
||||
# Surfaced by tools/archcenter_pattern_lookup.py at the top of its output
|
||||
# whenever the user's query tokens match any one of the `triggers` token
|
||||
# sets below. Purpose: stop the lookup loop early when no canonical Oracle
|
||||
# ref-arch exists for what the user asked, and tell the agent how to
|
||||
# COMPOSE the topology from primitives instead of refining query phrasing.
|
||||
#
|
||||
# Schema per gap:
|
||||
# id: unique slug
|
||||
# triggers: list of token sets — fires when the expanded query contains
|
||||
# EVERY token in at least ONE set (OR across sets, AND inside
|
||||
# each set). Tokens are lowercased and synonym-expanded the
|
||||
# same way as scoring tokens.
|
||||
# notice: multi-line string surfaced verbatim above the score-based
|
||||
# top-K. Should explain WHY this is a gap and HOW to compose
|
||||
# from existing primitives. Be concrete (slugs, alias names).
|
||||
#
|
||||
# Add a gap entry only after a real lookup loop wasted user time on a
|
||||
# topology with no canonical match. Speculation belongs elsewhere.
|
||||
|
||||
known_gaps:
|
||||
|
||||
- id: gcp-to-oci-native-services
|
||||
triggers:
|
||||
- [gcp, postgresql]
|
||||
- [gcp, redis]
|
||||
- [gcp, mysql]
|
||||
- [gcp, oke]
|
||||
- [gcp, cache]
|
||||
- [gcp, compute]
|
||||
- [google, postgresql]
|
||||
- [google, redis]
|
||||
- [google, mysql]
|
||||
- [google, oke]
|
||||
- [google, cache]
|
||||
- [google, compute]
|
||||
notice: |
|
||||
No canonical Oracle ref-arch covers OCI-native services (PostgreSQL,
|
||||
OKE, Cache, etc.) accessed FROM Google Cloud via Cross-Cloud
|
||||
Interconnect. The `Database@Google Cloud` entries below are the
|
||||
OPPOSITE direction (Oracle DB running ON GCP, not GCP apps reaching
|
||||
OCI-native services).
|
||||
|
||||
Recommended composition — STOP refining the lookup query, build from:
|
||||
1. A simple VCN baseline (e.g. `start-with-an-oci-virtual-cloud-network`).
|
||||
2. The OCI service in a private subnet behind DRG + FastConnect VC.
|
||||
3. A `GCP <region>` container on the left with `cloud_icon: gcp_compute`
|
||||
(or the relevant GCP service — the renderer maps to mxgraph.gcp2.*
|
||||
the same way it does for AWS).
|
||||
|
||||
- id: newer-oci-services-without-icon
|
||||
triggers:
|
||||
- [redis]
|
||||
- [valkey]
|
||||
- [oci_cache]
|
||||
notice: |
|
||||
OCI Cache with Redis/Valkey is GA after the v24.2 toolkit shipped, so
|
||||
no dedicated ref-arch exists in the catalog and no toolkit icon ships
|
||||
either. Oracle's own multi-service ref archs that DO mention Redis
|
||||
embed inline SVG over the generic database/cache stencil.
|
||||
|
||||
Recommended path — don't keep searching:
|
||||
1. Pick the closest topology BY SHAPE (HA pair, primary+replica,
|
||||
multi-AZ) from the catalog — geometry transfers, names don't.
|
||||
2. Use `type: cache` (or `type: database`) with explicit
|
||||
`label: "OCI Cache (Redis)"`. The renderer's alias table already
|
||||
routes `type: redis` → generic stencil.
|
||||
3. Reference: SKILL.md option 2 step 3 (newer-OCI-services convention).
|
||||
|
||||
entries:
|
||||
|
||||
# ===== DATABASE — MULTICLOUD (Database@Azure) =====
|
||||
|
||||
99
kb/architecture-center/synonyms.yaml
Normal file
@@ -0,0 +1,99 @@
|
||||
# Query-expansion synonyms for tools/archcenter_pattern_lookup.py
|
||||
#
|
||||
# Each canonical phrase is expanded with its aliases at query time so
|
||||
# free-text searches like "LB HA cross AD" match catalog entries
|
||||
# tagged "load balancer", "high availability", "availability domain".
|
||||
#
|
||||
# Add new entries when a query misses an obvious match. Keep aliases
|
||||
# lower-case alphanumeric — the tokenizer drops everything else.
|
||||
|
||||
synonyms:
|
||||
# Networking
|
||||
- canonical: load balancer
|
||||
aliases: [lb, lbaas, nlb, network load balancer, application load balancer, alb]
|
||||
- canonical: virtual cloud network
|
||||
aliases: [vcn]
|
||||
- canonical: dynamic routing gateway
|
||||
aliases: [drg]
|
||||
- canonical: internet gateway
|
||||
aliases: [igw]
|
||||
- canonical: nat gateway
|
||||
aliases: [natgw]
|
||||
- canonical: service gateway
|
||||
aliases: [sgw]
|
||||
- canonical: site to site vpn
|
||||
aliases: [vpn, ipsec, ipsec vpn]
|
||||
- canonical: fastconnect
|
||||
aliases: [fc, dx, direct connect, expressroute]
|
||||
- canonical: remote peering connection
|
||||
aliases: [rpc]
|
||||
- canonical: web application firewall
|
||||
aliases: [waf]
|
||||
- canonical: network firewall
|
||||
aliases: [nfw, ngfw]
|
||||
|
||||
# Compute / Containers
|
||||
- canonical: virtual machine
|
||||
aliases: [vm, ec2, gce, compute instance]
|
||||
- canonical: container engine kubernetes
|
||||
aliases: [oke, k8s, kubernetes, eks, gke, aks]
|
||||
- canonical: bare metal
|
||||
aliases: [bm, bms]
|
||||
|
||||
# Database
|
||||
- canonical: autonomous database
|
||||
aliases: [adb, adb-s, adb-d, atp, adw]
|
||||
- canonical: exadata database service
|
||||
aliases: [exacs, exadb, exa, exadata]
|
||||
- canonical: base database service
|
||||
aliases: [base db, dbcs, vm db]
|
||||
- canonical: data guard
|
||||
aliases: [dg, adg, active data guard]
|
||||
- canonical: goldengate
|
||||
aliases: [gg, ogg]
|
||||
- canonical: mysql heatwave
|
||||
aliases: [mysql, heatwave, mysql database service, mds]
|
||||
|
||||
# Availability / DR
|
||||
- canonical: high availability
|
||||
aliases: [ha, maa, maximum availability]
|
||||
- canonical: disaster recovery
|
||||
aliases: [dr, ha-dr, business continuity, bcdr]
|
||||
- canonical: full stack disaster recovery
|
||||
aliases: [fsdr]
|
||||
- canonical: availability domain
|
||||
aliases: [ad, az, availability zone]
|
||||
- canonical: fault domain
|
||||
aliases: [fd]
|
||||
- canonical: cross region
|
||||
aliases: [multi region, multiregion]
|
||||
|
||||
# Multicloud
|
||||
- canonical: oracle database at azure
|
||||
aliases: [odbaa, db at azure, dbaa, oracle@azure, azure-oracle]
|
||||
- canonical: oracle database at aws
|
||||
aliases: [odbaaws, db at aws, oracle@aws, aws-oracle]
|
||||
- canonical: oracle database at google cloud
|
||||
aliases: [odbagcp, db at gcp, oracle@gcp, gcp-oracle]
|
||||
|
||||
# Observability / Security
|
||||
- canonical: monitoring
|
||||
aliases: [mon, metrics]
|
||||
- canonical: logging
|
||||
aliases: [logs]
|
||||
- canonical: cloud guard
|
||||
aliases: [cg]
|
||||
- canonical: data safe
|
||||
aliases: [ds]
|
||||
- canonical: security zone
|
||||
aliases: [maximum security zone, msz]
|
||||
|
||||
# Workloads
|
||||
- canonical: e business suite
|
||||
aliases: [ebs, e-biz]
|
||||
- canonical: peoplesoft
|
||||
aliases: [psft]
|
||||
- canonical: jd edwards
|
||||
aliases: [jde, jd-e]
|
||||
- canonical: artificial intelligence
|
||||
aliases: [ai, gen ai, genai, ml]
|
||||
@@ -27,7 +27,7 @@
|
||||
# =============================================================================
|
||||
|
||||
---
|
||||
last_verified: "2026-03-14"
|
||||
last_verified: "2026-04-24"
|
||||
maintained_by: "Field Architecture Team"
|
||||
|
||||
versions:
|
||||
@@ -338,6 +338,69 @@ features:
|
||||
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." }
|
||||
|
||||
- name: "Lakehouse External Table Cache / Lake Cache"
|
||||
category: "operations"
|
||||
matrix:
|
||||
adb_s:
|
||||
"23ai":
|
||||
status: "UNTESTED"
|
||||
notes: "Officially documented for Lakehouse workload. Caches external-table data locally to accelerate repeat reads. Field team has not yet validated production behavior."
|
||||
contributor:
|
||||
name: "Codex"
|
||||
team: "Field Architecture"
|
||||
date: "2026-04-24"
|
||||
confidence: "doc-validated"
|
||||
"26ai":
|
||||
status: "UNTESTED"
|
||||
notes: "Documented for AI Lakehouse workload. Expect benefit on repeated reads over external data; validate eviction behavior and cache warmup in benchmarks."
|
||||
contributor:
|
||||
name: "Codex"
|
||||
team: "Field Architecture"
|
||||
date: "2026-04-24"
|
||||
confidence: "doc-validated"
|
||||
|
||||
- name: "Apache Iceberg External Tables"
|
||||
category: "operations"
|
||||
matrix:
|
||||
adb_s:
|
||||
"23ai":
|
||||
status: "LIMITED"
|
||||
notes: "Official docs show support with important caveats: no partitioned Iceberg tables, no credential vending, no query-time time travel, and some snapshot/schema changes require recreating the external table."
|
||||
contributor:
|
||||
name: "Codex"
|
||||
team: "Field Architecture"
|
||||
date: "2026-04-24"
|
||||
confidence: "doc-validated"
|
||||
"26ai":
|
||||
status: "LIMITED"
|
||||
notes: "Same documented limitations as 23ai unless field testing proves otherwise. Treat as fit-for-purpose, not transparent parity with native Iceberg engines."
|
||||
contributor:
|
||||
name: "Codex"
|
||||
team: "Field Architecture"
|
||||
date: "2026-04-24"
|
||||
confidence: "doc-validated"
|
||||
|
||||
- name: "TP / TPURGENT Service Names on Lakehouse"
|
||||
category: "operations"
|
||||
matrix:
|
||||
adb_s:
|
||||
"23ai":
|
||||
status: "UNTESTED"
|
||||
notes: "Need field confirmation by exact release/build. Use docs/release notes before promising availability on older estates."
|
||||
contributor:
|
||||
name: "Codex"
|
||||
team: "Field Architecture"
|
||||
date: "2026-04-24"
|
||||
confidence: "doc-validated"
|
||||
"26ai":
|
||||
status: "GA_CAVEAT"
|
||||
notes: "Officially released for Lakehouse workload. Useful to explain mixed-workload support, but benchmark service behavior under real concurrency before positioning as OLTP-equivalent."
|
||||
contributor:
|
||||
name: "Codex"
|
||||
team: "Field Architecture"
|
||||
date: "2026-04-24"
|
||||
confidence: "doc-validated"
|
||||
|
||||
# =============================================================================
|
||||
# HOW TO ADD A NEW FEATURE
|
||||
# =============================================================================
|
||||
|
||||
BIN
kb/diagram/assets/OCI_Icons.pptx
Normal file
568
kb/diagram/assets/archcenter-refs-index.json
Normal file
@@ -0,0 +1,568 @@
|
||||
{
|
||||
"cache_dir_mtime": 1777171657.6658223,
|
||||
"entries": {
|
||||
"active-data-guard-far-sync-dba-oracle": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/active-data-guard-far-sync-dba-oracle/active-data-guard-far-sync-dba.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/active-data-guard-far-sync-dba-oracle/active-data-guard-far-sync-dba.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/active-data-guard-far-sync-dba-oracle/active-data-guard-far-sync-dba.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/active-data-guard-far-sync-dba-oracle/_template.yaml"
|
||||
},
|
||||
"active-data-guard-far-sync-oracle-db-at-azure": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/active-data-guard-far-sync-oracle-db-at-azure/active-data-guard-far-sync-dba-oracle/active-data-guard-far-sync-dba.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/active-data-guard-far-sync-oracle-db-at-azure/active-data-guard-far-sync-dba-oracle/active-data-guard-far-sync-dba.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/active-data-guard-far-sync-oracle-db-at-azure/_template.yaml"
|
||||
},
|
||||
"ai-fraud-detection": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/ai-fraud-detection/ai-fraud-detection-flow-oracle/ai-fraud-detection-flow.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/ai-fraud-detection/ai-fraud-detection-flow-oracle/ai-fraud-detection-flow.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/ai-fraud-detection/_template.yaml"
|
||||
},
|
||||
"analytics-pipeline-db-at-azure": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/analytics-pipeline-db-at-azure/data-lake-db-at-azure-medallion-oracle/data-lake-db-at-azure-medallion.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/analytics-pipeline-db-at-azure/data-lake-db-at-azure-medallion-oracle/data-lake-db-at-azure-medallion.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/analytics-pipeline-db-at-azure/_template.yaml"
|
||||
},
|
||||
"autonomous-database-db-at-azure-diagram-oracle": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/autonomous-database-db-at-azure-diagram-oracle/autonomous-database-db-at-azure-diagram.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/autonomous-database-db-at-azure-diagram-oracle/autonomous-database-db-at-azure-diagram.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/autonomous-database-db-at-azure-diagram-oracle/autonomous-database-db-at-azure-diagram.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/autonomous-database-db-at-azure-diagram-oracle/_template.yaml"
|
||||
},
|
||||
"azure-pipeline-exacs-dbazure": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/azure-pipeline-exacs-dbazure/exadata-database-service-oracle/exadata-database-service.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/azure-pipeline-exacs-dbazure/exadata-database-service-oracle/exadata-database-service.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/azure-pipeline-exacs-dbazure/_template.yaml"
|
||||
},
|
||||
"back-up-base-database-zero-data-loss-recovery": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/back-up-base-database-zero-data-loss-recovery/base-database-recovery-backup-architecture/base-database-recovery-backup-architecture.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/back-up-base-database-zero-data-loss-recovery/base-database-recovery-backup-architecture/base-database-recovery-backup-architecture.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/back-up-base-database-zero-data-loss-recovery/base-database-recovery-backup-architecture/base-database-recovery-backup-architecture.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/back-up-base-database-zero-data-loss-recovery/_template.yaml"
|
||||
},
|
||||
"back-up-exadata-dedicated-zero-data-loss-recovery": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/back-up-exadata-dedicated-zero-data-loss-recovery/exadata-dedicated-recovery-backup-architecture/exadata-dedicated-recovery-backup-architecture.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/back-up-exadata-dedicated-zero-data-loss-recovery/exadata-dedicated-recovery-backup-architecture/exadata-dedicated-recovery-backup-architecture.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/back-up-exadata-dedicated-zero-data-loss-recovery/exadata-dedicated-recovery-backup-architecture/exadata-dedicated-recovery-backup-architecture.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/back-up-exadata-dedicated-zero-data-loss-recovery/_template.yaml"
|
||||
},
|
||||
"bread-multicloud-on-oci": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/bread-multicloud-on-oci/peoplesoft-migration-process-oracle/peoplesoft-migration-process.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/bread-multicloud-on-oci/peoplesoft-migration-process-oracle/peoplesoft-migration-process.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/bread-multicloud-on-oci/_template.yaml"
|
||||
},
|
||||
"cicd-pipeline-oci-functions": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/cicd-pipeline-oci-functions/cicd-deploy-oci-functions-oracle/cicd-deploy-oci-functions.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/cicd-pipeline-oci-functions/cicd-deploy-oci-functions-oracle/cicd-deploy-oci-functions.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/cicd-pipeline-oci-functions/_template.yaml"
|
||||
},
|
||||
"cis-oci-benchmark": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/cis-oci-benchmark/oci-core-landingzone-oracle/oci-core-landingzone.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/cis-oci-benchmark/oci-core-landingzone-oracle/oci-core-landingzone.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/cis-oci-benchmark/_template.yaml"
|
||||
},
|
||||
"cloud-native-dicom-on-oci": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/cloud-native-dicom-on-oci/oci-dicom-store-oracle/oci-dicom-store.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/cloud-native-dicom-on-oci/oci-dicom-store-oracle/oci-dicom-store.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/cloud-native-dicom-on-oci/_template.yaml"
|
||||
},
|
||||
"cloud-native-ecommerce": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/cloud-native-ecommerce/mushop-infrastructure-expand-oracle/mushop-infrastructure-expand.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/cloud-native-ecommerce/mushop-infrastructure-expand-oracle/mushop-infrastructure-expand.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/cloud-native-ecommerce/_template.yaml"
|
||||
},
|
||||
"config-jde-dr-fsdr": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/config-jde-dr-fsdr/jde-dr-fsdr/jde-dr-fsdr.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/config-jde-dr-fsdr/jde-dr-fsdr/jdr-dr-fsdr.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/config-jde-dr-fsdr/_template.yaml"
|
||||
},
|
||||
"connect-azure-kube-with-oracle": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/connect-azure-kube-with-oracle/azure-kube-with-exadata-db-oracle/azure-kube-with-exadata-db.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/connect-azure-kube-with-oracle/azure-kube-with-exadata-db-oracle/azure-kube-with-exadata-db.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/connect-azure-kube-with-oracle/_template.yaml"
|
||||
},
|
||||
"cross-az-dr-oracle": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/cross-az-dr-oracle/cross-az-dr.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/cross-az-dr-oracle/cross-az-dr.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/cross-az-dr-oracle/cross-az-dr.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/cross-az-dr-oracle/_template.yaml"
|
||||
},
|
||||
"cross-region-dr-essbase-oci": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/cross-region-dr-essbase-oci/essbase-oci-cross-region-dr-oracle/essbase-oci-cross-region-dr.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/cross-region-dr-essbase-oci/essbase-oci-cross-region-dr-oracle/essbase-oci-cross-region-dr.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/cross-region-dr-essbase-oci/_template.yaml"
|
||||
},
|
||||
"data-application-integration-workloads": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/data-application-integration-workloads/integration-architecture-pattern-1-oracle/integration-architecture-pattern-1.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/data-application-integration-workloads/integration-architecture-pattern-1-oracle/integration-architecture-pattern-1.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/data-application-integration-workloads/_template.yaml"
|
||||
},
|
||||
"data-platform-decentralized": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/data-platform-decentralized/decentralized-data-platform-logical-oracle/decentralized-data-platform-logical.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/data-platform-decentralized/decentralized-data-platform-logical-oracle/decentralized-data-platform-logical.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/data-platform-decentralized/_template.yaml"
|
||||
},
|
||||
"data-platform-lakehouse": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/data-platform-lakehouse/lakehouse-architecture-oracle/lakehouse-architecture.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/data-platform-lakehouse/lakehouse-architecture-oracle/lakehouse-architecture.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/data-platform-lakehouse/_template.yaml"
|
||||
},
|
||||
"data-safe-exadata-adb": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/data-safe-exadata-adb/data-safe-for-exa-adb/data-safe-for-exa-adb-old.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/data-safe-exadata-adb/data-safe-for-exa-adb/data-safe-for-exa-adb.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/data-safe-exadata-adb/_template.yaml"
|
||||
},
|
||||
"data-safe-multicloud-ods-hybrid": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/data-safe-multicloud-ods-hybrid/datasafe-multi-odsa-01/datasafe-multi-odsa-01.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/data-safe-multicloud-ods-hybrid/datasafe-multi-odsa-01/datasafe-multi-odsa-01.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/data-safe-multicloud-ods-hybrid/_template.yaml"
|
||||
},
|
||||
"dataguard-exadata-dedicated-infrastructure": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/dataguard-exadata-dedicated-infrastructure/exadata-dedicated-cross-region-dataguard/exadata-dedicated-cross-region-dataguard.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/dataguard-exadata-dedicated-infrastructure/exadata-dedicated-cross-region-dataguard/exadata-dedicated-cross-region-dataguard.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/dataguard-exadata-dedicated-infrastructure/exadata-dedicated-cross-region-dataguard/exadata-dedicated-cross-region-dataguard.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/dataguard-exadata-dedicated-infrastructure/_template.yaml"
|
||||
},
|
||||
"deploy-adb-db-at-google-cloud": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-adb-db-at-google-cloud/adb-oracle-db-at-google-cloud-region-oracle/adb-oracle-db-at-google-cloud-region.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-adb-db-at-google-cloud/adb-oracle-db-at-google-cloud-region-oracle/adb-oracle-db-at-google-cloud-region.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/deploy-adb-db-at-google-cloud/_template.yaml"
|
||||
},
|
||||
"deploy-agentic-ai-agent-platform": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-agentic-ai-agent-platform/agentic-ai-oci-ai-agent-arch-oracle/agentic-ai-oci-ai-agent-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-agentic-ai-agent-platform/agentic-ai-oci-ai-agent-arch-oracle/agentic-ai-oci-ai-agent-arch.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/deploy-agentic-ai-agent-platform/_template.yaml"
|
||||
},
|
||||
"deploy-ai-powered-chatbot": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-ai-powered-chatbot/deploy-ai-chatbot-arch/deploy-ai-chatbot-arch/deploy-ai-chatbot-arch.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/deploy-ai-powered-chatbot/deploy-ai-chatbot-arch/deploy-ai-chatbot-arch/deploy-ai-chatbot-arch.png",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/deploy-ai-powered-chatbot/_template.yaml"
|
||||
},
|
||||
"deploy-autonomous-database-and-app": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-autonomous-database-and-app/apex-app-adb-oracle/apex-app-adb.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-autonomous-database-and-app/apex-app-adb-oracle/apex-app-adb.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/deploy-autonomous-database-and-app/_template.yaml"
|
||||
},
|
||||
"deploy-autonomous-database-db-at-azure": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-autonomous-database-db-at-azure/autonomous-database-db-at-azure-diagram-oracle/autonomous-database-db-at-azure-diagram.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-autonomous-database-db-at-azure/autonomous-database-db-at-azure-diagram-oracle/autonomous-database-db-at-azure-diagram.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/deploy-autonomous-database-db-at-azure/_template.yaml"
|
||||
},
|
||||
"deploy-data-rcvy-oci-api-gateway": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-data-rcvy-oci-api-gateway/apigw-oci-customer-managed-dr-topology-oracle/apigw-oci-customer-managed-dr-topology.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-data-rcvy-oci-api-gateway/apigw-oci-customer-managed-dr-topology-oracle/apigw-oci-customer-managed-dr-topology.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/deploy-data-rcvy-oci-api-gateway/_template.yaml"
|
||||
},
|
||||
"deploy-ebs-on-db-at-azure": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-ebs-on-db-at-azure/ebs-on-db-at-azure-arch-oracle/ebs-on-db-at-azure-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-ebs-on-db-at-azure/ebs-on-db-at-azure-arch-oracle/ebs-on-db-at-azure-arch.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/deploy-ebs-on-db-at-azure/_template.yaml"
|
||||
},
|
||||
"deploy-gitops-argocd-oke": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-gitops-argocd-oke/argocd/argocd.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-gitops-argocd-oke/argocd/argocd.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/deploy-gitops-argocd-oke/_template.yaml"
|
||||
},
|
||||
"deploy-hybrid-dr-wls-fmw": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-hybrid-dr-wls-fmw/maa-wls-hybrid-dr-tool-highlights-oracle/maa-wls-hybrid-dr-tool-highlights.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-hybrid-dr-wls-fmw/maa-wls-hybrid-dr-tool-highlights-oracle/maa-wls-hybrid-dr-tool-highlights.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/deploy-hybrid-dr-wls-fmw/_template.yaml"
|
||||
},
|
||||
"deploy-key-vault-database-at-azure": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-key-vault-database-at-azure/key-vault-database-at-azure-diagram-oracle/key-vault-database-at-azure-diagram.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-key-vault-database-at-azure/key-vault-database-at-azure-diagram-oracle/key-vault-database-at-azure-diagram.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/deploy-key-vault-database-at-azure/_template.yaml"
|
||||
},
|
||||
"deploy-key-vault-database-at-google": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-key-vault-database-at-google/key-vault-database-google/key-vault-database-google/key-vault-database-google.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/deploy-key-vault-database-at-google/key-vault-database-google/key-vault-database-google/key-vault-database-google.png",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/deploy-key-vault-database-at-google/_template.yaml"
|
||||
},
|
||||
"deploy-lustre-file-systems": {
|
||||
"png": "kb/diagram/assets/archcenter-refs/deploy-lustre-file-systems/lustre-file-system-oci-arch/lustre-file-system-oci-arch/lustre-file-system-oci-arch.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-lustre-file-systems/lustre-file-system-oci-arch/lustre-file-system-oci-arch/lustre-file-system-oci-arch.svg"
|
||||
},
|
||||
"deploy-maa-for-peoplesoft-on-oci": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-maa-for-peoplesoft-on-oci/peoplesoft-maa-arch-oracle/peoplesoft-maa-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-maa-for-peoplesoft-on-oci/peoplesoft-maa-arch-oracle/peoplesoft-maa-arch.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/deploy-maa-for-peoplesoft-on-oci/_template.yaml"
|
||||
},
|
||||
"deploy-oke-with-bastion-and-github": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-oke-with-bastion-and-github/oke-bastion-deployment-diagram-oracle/oke-bastion-deployment-diagram.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-oke-with-bastion-and-github/oke-bastion-deployment-diagram-oracle/oke-bastion-deployment-diagram.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/deploy-oke-with-bastion-and-github/_template.yaml"
|
||||
},
|
||||
"deploy-oracle-database-at-google-cloud": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-oracle-database-at-google-cloud/google-detailed-arch-oracle/google-detailed-arch-oracle/google-detailed-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-oracle-database-at-google-cloud/google-detailed-arch-oracle/google-detailed-arch-oracle/google-detailed-arch.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/deploy-oracle-database-at-google-cloud/_template.yaml"
|
||||
},
|
||||
"deploy-oracle-db-aws": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-oracle-db-aws/db-at-aws-main-arch-oracle/db-at-aws-main-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-oracle-db-aws/db-at-aws-main-arch-oracle/db-at-aws-main-arch.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/deploy-oracle-db-aws/_template.yaml"
|
||||
},
|
||||
"deploy-tcs-banc-oci-exa": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-tcs-banc-oci-exa/bancs-ref-architecture-no-fd-oracle/bancs-ref-architecture-no-fd.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-tcs-banc-oci-exa/bancs-ref-architecture-no-fd-oracle/bancs-ref-architecture-no-fd.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/deploy-tcs-banc-oci-exa/_template.yaml"
|
||||
},
|
||||
"deploy-wls-on-oke": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-wls-on-oke/weblogic-oke-oracle/weblogic-oke.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-wls-on-oke/weblogic-oke-oracle/weblogic-oke.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/deploy-wls-on-oke/_template.yaml"
|
||||
},
|
||||
"deploy-xstore-oci": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/deploy-xstore-oci/deploy-xstore-on-oci/deploy-xstore-on-oci.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/deploy-xstore-oci/deploy-xstore-on-oci/deploy-xstore-on-oci.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/deploy-xstore-oci/_template.yaml"
|
||||
},
|
||||
"dns-resolution-oracle-db-at-google-cloud": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/dns-resolution-oracle-db-at-google-cloud/resolve-dns-oci-google-cloud-oracle/resolve-dns-oci-google-cloud.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/dns-resolution-oracle-db-at-google-cloud/resolve-dns-oci-google-cloud-oracle/resolve-dns-oci-google-cloud.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/dns-resolution-oracle-db-at-google-cloud/_template.yaml"
|
||||
},
|
||||
"dr-active-dg-farsync-db-at-aws": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/dr-active-dg-farsync-db-at-aws/cross-region-dr-activedg-farsync-oracle/cross-region-dr-activedg-farsync.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/dr-active-dg-farsync-db-at-aws/cross-region-dr-activedg-farsync-oracle/cross-region-dr-activedg-farsync.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/dr-active-dg-farsync-db-at-aws/_template.yaml"
|
||||
},
|
||||
"dr-local-regional-standby-db-at-aws": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/dr-local-regional-standby-db-at-aws/exadb-dbaws-dr-arch-oracle/exadb-dbaws-dr-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/dr-local-regional-standby-db-at-aws/exadb-dbaws-dr-arch-oracle/exadb-dbaws-dr-arch.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/dr-local-regional-standby-db-at-aws/_template.yaml"
|
||||
},
|
||||
"ebs-logging-analytics-oci": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/ebs-logging-analytics-oci/ebs-logging-analytics-on-oci-oracle/ebs-logging-analytics-on-oci.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/ebs-logging-analytics-oci/ebs-logging-analytics-on-oci-oracle/ebs-logging-analytics-on-oci.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/ebs-logging-analytics-oci/_template.yaml"
|
||||
},
|
||||
"ebs-on-db-at-aws": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/ebs-on-db-at-aws/ebs-db-at-aws-architecture-oracle/ebs-db-at-aws-architecture.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/ebs-on-db-at-aws/ebs-db-at-aws-architecture-oracle/ebs-db-at-aws-architecture.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/ebs-on-db-at-aws/_template.yaml"
|
||||
},
|
||||
"exadata-dedicated-cross-region-dataguard": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/exadata-dedicated-cross-region-dataguard/exadata-dedicated-cross-region-dataguard-uncompressed.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/exadata-dedicated-cross-region-dataguard/exadata-dedicated-cross-region-dataguard.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/exadata-dedicated-cross-region-dataguard/exadata-dedicated-cross-region-dataguard.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/exadata-dedicated-cross-region-dataguard/_template.yaml"
|
||||
},
|
||||
"exadata-dedicated-in-region-dataguard": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/exadata-dedicated-in-region-dataguard/exadata-dedicated-in-region-dataguard.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/exadata-dedicated-in-region-dataguard/exadata-dedicated-in-region-dataguard.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/exadata-dedicated-in-region-dataguard/exadata-dedicated-in-region-dataguard.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/exadata-dedicated-in-region-dataguard/_template.yaml"
|
||||
},
|
||||
"exadb-dbaws-dr-arch-oracle": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/exadb-dbaws-dr-arch-oracle/exadb-dbaws-dr-arch.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/exadb-dbaws-dr-arch-oracle/exadb-dbaws-dr-arch.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/exadb-dbaws-dr-arch-oracle/exadb-dbaws-dr-arch.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/exadb-dbaws-dr-arch-oracle/_template.yaml"
|
||||
},
|
||||
"exadb-dr-on-db-at-azure-oracle": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/exadb-dr-on-db-at-azure-oracle/exadb-dr-on-db-at-azure.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/exadb-dr-on-db-at-azure-oracle/exadb-dr-on-db-at-azure.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/exadb-dr-on-db-at-azure-oracle/exadb-dr-on-db-at-azure.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/exadb-dr-on-db-at-azure-oracle/_template.yaml"
|
||||
},
|
||||
"exadb-dr-on-db-azure": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/exadb-dr-on-db-azure/exadb-dr-on-db-at-azure-oracle/exadb-dr-on-db-at-azure.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/exadb-dr-on-db-azure/exadb-dr-on-db-at-azure-oracle/exadb-dr-on-db-at-azure.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/exadb-dr-on-db-azure/_template.yaml"
|
||||
},
|
||||
"hub-spoke-network": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/hub-spoke-network/hub-spoke-oci.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/hub-spoke-network/hub-spoke-oci.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/hub-spoke-network/_template.yaml"
|
||||
},
|
||||
"hub-spoke-network-drg": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/hub-spoke-network-drg/hub-and-spoke-drg-oracle/hub-and-spoke-drg.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/hub-spoke-network-drg/hub-and-spoke-drg-oracle/hub-and-spoke-drg.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/hub-spoke-network-drg/_template.yaml"
|
||||
},
|
||||
"implement-goldengate-azure": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/implement-goldengate-azure/goldengate-dbatazure-integration/goldengate-dbatazure-integration/goldengate-dbatazure-integration.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/implement-goldengate-azure/goldengate-dbatazure-integration/goldengate-dbatazure-integration/goldengate-dbatazure-integration.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/implement-goldengate-azure/goldengate-dbatazure-integration/goldengate-dbatazure-integration/goldengate-dbatazure-integration.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/implement-goldengate-azure/_template.yaml"
|
||||
},
|
||||
"implement-rag-oci": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/implement-rag-oci/rag-oic-aug-gen-oracle/rag-oic-aug-gen.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/implement-rag-oci/rag-oic-aug-gen-oracle/rag-oic-aug-gen.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/implement-rag-oci/_template.yaml"
|
||||
},
|
||||
"implement-recovery-service-db-at-azure": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/implement-recovery-service-db-at-azure/db-autonomous-recovery-dbatazure/db-autonomous-recovery-dbatazure/db-autonomous-recovery-dbatazure.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/implement-recovery-service-db-at-azure/db-autonomous-recovery-dbatazure/db-autonomous-recovery-dbatazure/db-autonomous-recovery-dbatazure.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/implement-recovery-service-db-at-azure/_template.yaml"
|
||||
},
|
||||
"integration-access-control": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/integration-access-control/oracle-integration-rest-oauth-diagram-oracle/oracle-integration-rest-oauth-diagram.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/integration-access-control/oracle-integration-rest-oauth-diagram-oracle/oracle-integration-rest-oauth-diagram.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/integration-access-control/_template.yaml"
|
||||
},
|
||||
"kubernetes-artifact-snapshot-dr": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/kubernetes-artifact-snapshot-dr/kubernetes-multiregion-dr-oracle/kubernetes-multiregion-dr.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/kubernetes-artifact-snapshot-dr/kubernetes-multiregion-dr-oracle/kubernetes-multiregion-dr.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/kubernetes-artifact-snapshot-dr/_template.yaml"
|
||||
},
|
||||
"kubernetes-oke-logging-analytics": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/kubernetes-oke-logging-analytics/k8s-oke-monitoring-oracle/k8s-oke-monitoring.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/kubernetes-oke-logging-analytics/k8s-oke-monitoring-oracle/k8s-oke-monitoring.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/kubernetes-oke-logging-analytics/_template.yaml"
|
||||
},
|
||||
"learn-about-drg-solutions": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/learn-about-drg-solutions/drg-routing-operation-oracle/drg-routing-operation.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/learn-about-drg-solutions/drg-routing-operation-oracle/drg-routing-operation.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/learn-about-drg-solutions/_template.yaml"
|
||||
},
|
||||
"learn-about-maa-for-peoplesoft": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/learn-about-maa-for-peoplesoft/peoplesoft-maa-arch-oracle/peoplesoft-maa-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/learn-about-maa-for-peoplesoft/peoplesoft-maa-arch-oracle/peoplesoft-maa-arch.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/learn-about-maa-for-peoplesoft/_template.yaml"
|
||||
},
|
||||
"local-regional-standby-dr-db-at-azure": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/local-regional-standby-dr-db-at-azure/local-regional-standby-dr-db-azure-arch-oracle/local-regional-standby-dr-db-azure-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/local-regional-standby-dr-db-at-azure/local-regional-standby-dr-db-azure-arch-oracle/local-regional-standby-dr-db-azure-arch.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/local-regional-standby-dr-db-at-azure/_template.yaml"
|
||||
},
|
||||
"mid-tier-replication-oci-dr-arch": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/mid-tier-replication-oci-dr-arch/active-passive-dr-mid-tier-oracle/active-passive-dr-mid-tier.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/mid-tier-replication-oci-dr-arch/active-passive-dr-mid-tier-oracle/active-passive-dr-mid-tier.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/mid-tier-replication-oci-dr-arch/_template.yaml"
|
||||
},
|
||||
"migrate-apps-to-apex": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/migrate-apps-to-apex/forms-apps-to-apex-oracle/forms-apps-to-apex.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/migrate-apps-to-apex/forms-apps-to-apex-oracle/forms-apps-to-apex.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/migrate-apps-to-apex/_template.yaml"
|
||||
},
|
||||
"migrate-ebs-with-cloudmanager": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/migrate-ebs-with-cloudmanager/migrate-ebs-env-prod-oracle/migrate-ebs-env-prod.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/migrate-ebs-with-cloudmanager/migrate-ebs-env-prod-oracle/migrate-ebs-env-prod.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/migrate-ebs-with-cloudmanager/_template.yaml"
|
||||
},
|
||||
"migrate-to-atp": {
|
||||
"png": "kb/diagram/assets/archcenter-refs/migrate-to-atp/favicon-128.png"
|
||||
},
|
||||
"modern-platform-oracle-db-at-azure": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/modern-platform-oracle-db-at-azure/oracle-database-at-azure-services-platform-oracle/oracle-database-at-azure-services-platform.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/modern-platform-oracle-db-at-azure/oracle-database-at-azure-services-platform-oracle/oracle-database-at-azure-services-platform.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/modern-platform-oracle-db-at-azure/_template.yaml"
|
||||
},
|
||||
"modernize-app-dev-oci-postgresql-redis-opensearch": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/modernize-app-dev-oci-postgresql-redis-opensearch/dr-architecture-diagram-oracle/dr-architecture-diagram.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/modernize-app-dev-oci-postgresql-redis-opensearch/dr-architecture-diagram-oracle/dr-architecture-diagram.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/modernize-app-dev-oci-postgresql-redis-opensearch/_template.yaml"
|
||||
},
|
||||
"mongodb-to-atp": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/mongodb-to-atp/mongodb-atp-s-arch-variant-oracle/mongodb-atp-s-arch-variant.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/mongodb-to-atp/mongodb-atp-s-arch-variant-oracle/mongodb-atp-s-arch-variant.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/mongodb-to-atp/_template.yaml"
|
||||
},
|
||||
"mongodb-to-atp-azure": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/mongodb-to-atp-azure/mongodb-atp-s-azure-arch-variant/mongodb-atp-s-azure-arch-variant/mongodb-atp-s-azure-arch-variant.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/mongodb-to-atp-azure/mongodb-atp-s-azure-arch-variant/mongodb-atp-s-azure-arch-variant/mongodb-atp-s-azure-arch-variant.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/mongodb-to-atp-azure/mongodb-atp-s-azure-arch-variant/mongodb-atp-s-azure-arch-variant/mongodb-atp-s-azure-arch-variant.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/mongodb-to-atp-azure/_template.yaml"
|
||||
},
|
||||
"mongodb-to-atp-google": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/mongodb-to-atp-google/mongodb-atp-s-google-arch-variant/mongodb-atp-s-google-arch-variant/mongodb-atp-s-google-arch-variant.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/mongodb-to-atp-google/mongodb-atp-s-google-arch-variant/mongodb-atp-s-google-arch-variant/mongodb-atp-s-google-arch-variant.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/mongodb-to-atp-google/mongodb-atp-s-google-arch-variant/mongodb-atp-s-google-arch-variant/mongodb-atp-s-google-arch-variant.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/mongodb-to-atp-google/_template.yaml"
|
||||
},
|
||||
"mongodb-to-auto-json-db": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/mongodb-to-auto-json-db/mongodb-json-arch-variant-oracle/mongdb-json-arch-variant.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/mongodb-to-auto-json-db/mongodb-json-arch-variant-oracle/mongodb-json-arch-variant.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/mongodb-to-auto-json-db/_template.yaml"
|
||||
},
|
||||
"mongodb-to-exadata-machine": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/mongodb-to-exadata-machine/mongodb-exadata-machine-physical-arch/mongodb-exadata-machine-physical-arch/mongodb-exadata-machine-physical-arch.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/mongodb-to-exadata-machine/mongodb-exadata-machine-physical-arch/mongodb-exadata-machine-physical-arch/mongodb-exadata-machine-physical-arch.png",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/mongodb-to-exadata-machine/_template.yaml"
|
||||
},
|
||||
"multi-region-standby-dr-db-at-azure": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/multi-region-standby-dr-db-at-azure/multi-region-standby-dr-db-azure-arch-oracle/multi-region-standby-dr-db-azure-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/multi-region-standby-dr-db-at-azure/multi-region-standby-dr-db-azure-arch-oracle/multi-region-standby-dr-db-azure-arch.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/multi-region-standby-dr-db-at-azure/_template.yaml"
|
||||
},
|
||||
"multi-region-standby-dr-db-azure-arch-oracle": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/multi-region-standby-dr-db-azure-arch-oracle/multi-region-standby-dr-db-azure-arch.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/multi-region-standby-dr-db-azure-arch-oracle/multi-region-standby-dr-db-azure-arch.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/multi-region-standby-dr-db-azure-arch-oracle/multi-region-standby-dr-db-azure-arch.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/multi-region-standby-dr-db-azure-arch-oracle/_template.yaml"
|
||||
},
|
||||
"multi-tenant-app-deploy": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/multi-tenant-app-deploy/multi-tenant-app-oci-oracle/multi-tenant-app-oci.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/multi-tenant-app-deploy/multi-tenant-app-oci-oracle/multi-tenant-app-oci.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/multi-tenant-app-deploy/_template.yaml"
|
||||
},
|
||||
"network-topology-oracle-database-at-aws": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/network-topology-oracle-database-at-aws/db-at-aws-main-arch-oracle/db-at-aws-main-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/network-topology-oracle-database-at-aws/db-at-aws-main-arch-oracle/db-at-aws-main-arch.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/network-topology-oracle-database-at-aws/_template.yaml"
|
||||
},
|
||||
"network-topology-oracle-database-at-google-cloud": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/network-topology-oracle-database-at-google-cloud/google-detailed-arch-oracle/google-detailed-arch-oracle/google-detailed-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/network-topology-oracle-database-at-google-cloud/google-detailed-arch-oracle/google-detailed-arch-oracle/google-detailed-arch.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/network-topology-oracle-database-at-google-cloud/_template.yaml"
|
||||
},
|
||||
"oci-ai-healthcare": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oci-ai-healthcare/oci-ai-healthcare_arch-oracle/oci-ai-healthcare-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oci-ai-healthcare/oci-ai-healthcare_arch-oracle/oci-ai-healthcare-arch.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/oci-ai-healthcare/_template.yaml"
|
||||
},
|
||||
"oci-azure-multicloud-data-solution": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oci-azure-multicloud-data-solution/oci-azure-multicloud-data-solution-diagram-oracle/oci-azure-multicloud-data-solution-diagram.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oci-azure-multicloud-data-solution/oci-azure-multicloud-data-solution-diagram-oracle/oci-azure-multicloud-data-solution-diagram.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/oci-azure-multicloud-data-solution/_template.yaml"
|
||||
},
|
||||
"oci-best-practices-networking": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oci-best-practices-networking/multi-region-deployment-full-arch-oracle/multi-region-deployment-full-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oci-best-practices-networking/multi-region-deployment-full-arch-oracle/multi-region-deployment-full-arch.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/oci-best-practices-networking/_template.yaml"
|
||||
},
|
||||
"oci-cpu-inference-ollama": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oci-cpu-inference-ollama/ollama-blueprint-architecture-oracle/ollama-blueprint-architecture.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oci-cpu-inference-ollama/ollama-blueprint-architecture-oracle/ollama-blueprint-architecture.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/oci-cpu-inference-ollama/_template.yaml"
|
||||
},
|
||||
"oci-genai-enterprise": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oci-genai-enterprise/oci-genai-enterprise-arch-oracle/oci-genai-enterprise-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oci-genai-enterprise/oci-genai-enterprise-arch-oracle/oci-genai-enterprise-arch.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/oci-genai-enterprise/_template.yaml"
|
||||
},
|
||||
"oci-generative-ai-llm-platforms": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oci-generative-ai-llm-platforms/ai-llm-workflow-architecture-oracle/ai-llm-workflow-architecture.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oci-generative-ai-llm-platforms/ai-llm-workflow-architecture-oracle/ai-llm-workflow-architecture.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/oci-generative-ai-llm-platforms/_template.yaml"
|
||||
},
|
||||
"oci-multicloud-datalake": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oci-multicloud-datalake/oci-multicloud-datalake-flow-oracle/oci_multicloud_datalake_flow.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oci-multicloud-datalake/oci-multicloud-datalake-flow-oracle/oci_multicloud_datalake_flow.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/oci-multicloud-datalake/_template.yaml"
|
||||
},
|
||||
"oci-multicloud-genai-rag": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oci-multicloud-genai-rag/multicloud-genai-rag-architecture-oracle/multicloud-genai-rag-architecture.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oci-multicloud-genai-rag/multicloud-genai-rag-architecture-oracle/multicloud-genai-rag-architecture.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/oci-multicloud-genai-rag/_template.yaml"
|
||||
},
|
||||
"oci-nlb-palo-alto-active-active": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oci-nlb-palo-alto-active-active/oci-nlb-palo-alto-active-active-arch-oracle/oci-nlb-palo-alto-active-active-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oci-nlb-palo-alto-active-active/oci-nlb-palo-alto-active-active-arch-oracle/oci-nlb-palo-alto-active-active-arch.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/oci-nlb-palo-alto-active-active/_template.yaml"
|
||||
},
|
||||
"oci-oad-kafka-oi": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oci-oad-kafka-oi/oci-oad-kafka-oi-oracle/oci-oad-kafka-oi.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oci-oad-kafka-oi/oci-oad-kafka-oi-oracle/oci-oad-kafka-oi.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/oci-oad-kafka-oi/_template.yaml"
|
||||
},
|
||||
"oci-object-storage-modernization": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oci-object-storage-modernization/oci-object-storage-modernization-arch-after-oracle/oci-object-storage-modernization-arch-after.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oci-object-storage-modernization/oci-object-storage-modernization-arch-after-oracle/oci-object-storage-modernization-arch-after.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/oci-object-storage-modernization/_template.yaml"
|
||||
},
|
||||
"oci-ops-insights-and-em-bridge": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oci-ops-insights-and-em-bridge/oci-ops-insights-diagram-oracle/oci-ops-insights-diagram.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oci-ops-insights-and-em-bridge/oci-ops-insights-diagram-oracle/oci-ops-insights-diagram.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/oci-ops-insights-and-em-bridge/_template.yaml"
|
||||
},
|
||||
"oci-security-zones": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oci-security-zones/MSZ-01-oracle/MSZ-01.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oci-security-zones/MSZ-01-oracle/MSZ-01.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/oci-security-zones/_template.yaml"
|
||||
},
|
||||
"oci-speech-meeting-insights-genai": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oci-speech-meeting-insights-genai/oci-speech-adb-ai-arch-oracle/oci-speech-adb-ai-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oci-speech-meeting-insights-genai/oci-speech-adb-ai-arch-oracle/oci-speech-adb-ai-arch.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/oci-speech-meeting-insights-genai/_template.yaml"
|
||||
},
|
||||
"ocvs-vsan-stretched-cluster": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/ocvs-vsan-stretched-cluster/ocvs-vsan-stretched-cluster-oracle/ocvs-vsan-stretched-cluster.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/ocvs-vsan-stretched-cluster/ocvs-vsan-stretched-cluster-oracle/ocvs-vsan-stretched-cluster.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/ocvs-vsan-stretched-cluster/_template.yaml"
|
||||
},
|
||||
"oracle-adb-jde-exadata": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oracle-adb-jde-exadata/oracle-adb-jde-exadata-arch-oracle/oracle-adb-jde-exadata-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oracle-adb-jde-exadata/oracle-adb-jde-exadata-arch-oracle/oracle-adb-jde-exadata-arch.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/oracle-adb-jde-exadata/_template.yaml"
|
||||
},
|
||||
"oracle-adb-jde-exadata-arch-oracle": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oracle-adb-jde-exadata-arch-oracle/oracle-adb-jde-exadata-arch.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/oracle-adb-jde-exadata-arch-oracle/rendered.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oracle-adb-jde-exadata-arch-oracle/oracle-adb-jde-exadata-arch.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/oracle-adb-jde-exadata-arch-oracle/_template.yaml"
|
||||
},
|
||||
"oracle-db-at-azure-migration": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oracle-db-at-azure-migration/oracle-db-at-azure-zdm-oracle/oracle-db-at-azure-zdm.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oracle-db-at-azure-migration/oracle-db-at-azure-zdm-oracle/oracle-db-at-azure-zdm.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/oracle-db-at-azure-migration/_template.yaml"
|
||||
},
|
||||
"oracle-db-at-azure-streaming": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oracle-db-at-azure-streaming/oracle-db-at-azure-streaming-oracle/oracle-db-at-azure-streaming.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oracle-db-at-azure-streaming/oracle-db-at-azure-streaming-oracle/oracle-db-at-azure-streaming.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/oracle-db-at-azure-streaming/_template.yaml"
|
||||
},
|
||||
"oracle-db-at-google-cloud-migration": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oracle-db-at-google-cloud-migration/oracle_database_at_google_cloud_w_zdm-oracle/oracle_database_at_google_cloud_w_zdm.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oracle-db-at-google-cloud-migration/oracle_database_at_google_cloud_w_zdm-oracle/oracle_database_at_google_cloud_w_zdm.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/oracle-db-at-google-cloud-migration/_template.yaml"
|
||||
},
|
||||
"oracle-maa-db-at-azure": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/oracle-maa-db-at-azure/cross-az-dr-oracle/cross-az-dr.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/oracle-maa-db-at-azure/cross-az-dr-oracle/cross-az-dr.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/oracle-maa-db-at-azure/_template.yaml"
|
||||
},
|
||||
"phased-migration-to-oracle-dba": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/phased-migration-to-oracle-dba/logical-architecture-diagram-oracle/logical-architecture-diagram.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/phased-migration-to-oracle-dba/logical-architecture-diagram-oracle/logical-architecture-diagram.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/phased-migration-to-oracle-dba/_template.yaml"
|
||||
},
|
||||
"private-dns": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/private-dns/architecture-deploy-private-dns/architecture-deploy-private-dns/architecture-deploy-private-dns.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/private-dns/architecture-deploy-private-dns/architecture-deploy-private-dns/architecture-deploy-private-dns.png",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/private-dns/_template.yaml"
|
||||
},
|
||||
"remote-synchronous-block-replication-oci": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/remote-synchronous-block-replication-oci/remote-synchronous-block-replication-diagram-oracle/remote-synchronous-block-replication-diagram.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/remote-synchronous-block-replication-oci/remote-synchronous-block-replication-diagram-oracle/remote-synchronous-block-replication-diagram.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/remote-synchronous-block-replication-oci/_template.yaml"
|
||||
},
|
||||
"rep-fusion-saas-third-party-dw": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/rep-fusion-saas-third-party-dw/fusion-saas-to-snowflake-arch-oracle/fusion-saas-to-snowflake-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/rep-fusion-saas-third-party-dw/fusion-saas-to-snowflake-arch-oracle/fusion-saas-to-snowflake-arch.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/rep-fusion-saas-third-party-dw/_template.yaml"
|
||||
},
|
||||
"run-quantized-gguf-llm-ampere-cluster": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/run-quantized-gguf-llm-ampere-cluster/gen-ai-ampere-gguf-llm-arch/gen-ai-ampere-gguf-llm-arch/gen-ai-ampere-gguf-llm-arch.drawio",
|
||||
"png": "kb/diagram/assets/archcenter-refs/run-quantized-gguf-llm-ampere-cluster/gen-ai-ampere-gguf-llm-arch/gen-ai-ampere-gguf-llm-arch/gen-ai-ampere-gguf-llm-arch.png",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/run-quantized-gguf-llm-ampere-cluster/gen-ai-ampere-gguf-llm-arch/gen-ai-ampere-gguf-llm-arch/gen-ai-ampere-gguf-llm-arch.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/run-quantized-gguf-llm-ampere-cluster/_template.yaml"
|
||||
},
|
||||
"secure-backup-oci-object-storage": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/secure-backup-oci-object-storage/secure-backup-oci-object-storage-oracle/secure-backup-oci-object-storage.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/secure-backup-oci-object-storage/secure-backup-oci-object-storage-oracle/secure-backup-oci-object-storage.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/secure-backup-oci-object-storage/_template.yaml"
|
||||
},
|
||||
"select-ai-apex-framework": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/select-ai-apex-framework/hallucination-reduction-workflow-oracle/hallucination-reduction-workflow.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/select-ai-apex-framework/hallucination-reduction-workflow-oracle/hallucination-reduction-workflow.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/select-ai-apex-framework/_template.yaml"
|
||||
},
|
||||
"takamol-on-oci": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/takamol-on-oci/takamol-on-oci-arch-oracle/takamol-on-oci-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/takamol-on-oci/takamol-on-oci-arch-oracle/takamol-on-oci-arch.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/takamol-on-oci/_template.yaml"
|
||||
},
|
||||
"tharseo-data-platform-on-oci": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/tharseo-data-platform-on-oci/tharseo-data-platform-on-oci-arch-oracle/tharseo-data-platform-on-oci-arch.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/tharseo-data-platform-on-oci/tharseo-data-platform-on-oci-arch-oracle/tharseo-data-platform-on-oci-arch.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/tharseo-data-platform-on-oci/_template.yaml"
|
||||
},
|
||||
"wls-on-oke-marketplace": {
|
||||
"drawio": "kb/diagram/assets/archcenter-refs/wls-on-oke-marketplace/wls-oke-marketplace-oracle/wls-oke-marketplace.drawio",
|
||||
"svg": "kb/diagram/assets/archcenter-refs/wls-on-oke-marketplace/wls-oke-marketplace-oracle/wls-oke-marketplace.svg",
|
||||
"yaml": "kb/diagram/assets/archcenter-refs/wls-on-oke-marketplace/_template.yaml"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,555 @@
|
||||
# Auto-extracted absolute_layout template from
|
||||
# kb/diagram/assets/archcenter-refs/active-data-guard-far-sync-dba-oracle/active-data-guard-far-sync-dba.drawio
|
||||
# Source: Oracle Architecture Center reference (canonical geometry).
|
||||
# Use this as the starting scaffold for a new spec — copy, rename ids,
|
||||
# and replace `type: TODO_identify` on services with the right OCI
|
||||
# type alias (adb_s, drg, fastconnect, etc.). Container coords and
|
||||
# edge waypoints are Oracle's canonical layout; preserve unless the
|
||||
# customer's topology requires a change.
|
||||
absolute_layout:
|
||||
canvas:
|
||||
width: 850
|
||||
height: 1100
|
||||
containers:
|
||||
- id: c1
|
||||
type: region
|
||||
label: ''
|
||||
x: 652
|
||||
y: 1
|
||||
w: 676
|
||||
h: 447
|
||||
- id: c2
|
||||
type: region
|
||||
label: ''
|
||||
x: 652
|
||||
y: 585
|
||||
w: 676
|
||||
h: 447
|
||||
- id: c5
|
||||
type: region
|
||||
label: ''
|
||||
x: 965
|
||||
y: 686
|
||||
w: 105
|
||||
h: 36
|
||||
- id: c50
|
||||
type: region
|
||||
label: ''
|
||||
x: 818
|
||||
y: 161
|
||||
w: 99
|
||||
h: 14
|
||||
- id: c53
|
||||
type: region
|
||||
label: ''
|
||||
x: 818
|
||||
y: 855
|
||||
w: 99
|
||||
h: 14
|
||||
- id: c70
|
||||
type: region
|
||||
label: ''
|
||||
x: 1150
|
||||
y: 377
|
||||
w: 2
|
||||
h: 63
|
||||
- id: c74
|
||||
type: region
|
||||
label: ''
|
||||
x: 1150
|
||||
y: 657
|
||||
w: 2
|
||||
h: 63
|
||||
- id: c54
|
||||
type: region
|
||||
label: ''
|
||||
x: 776
|
||||
y: 855
|
||||
w: 2
|
||||
h: 50
|
||||
- id: c58
|
||||
type: region
|
||||
label: ''
|
||||
x: 956
|
||||
y: 855
|
||||
w: 2
|
||||
h: 50
|
||||
- id: c62
|
||||
type: region
|
||||
label: ''
|
||||
x: 776
|
||||
y: 161
|
||||
w: 2
|
||||
h: 50
|
||||
- id: c66
|
||||
type: region
|
||||
label: ''
|
||||
x: 956
|
||||
y: 161
|
||||
w: 2
|
||||
h: 50
|
||||
services:
|
||||
- id: s3
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 582
|
||||
y: 34
|
||||
w: 28
|
||||
h: 31
|
||||
- id: s7
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 725
|
||||
y: 77
|
||||
w: 42
|
||||
h: 40
|
||||
- id: s6
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 726
|
||||
y: 77
|
||||
w: 41
|
||||
h: 39
|
||||
- id: s8
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 726
|
||||
y: 78
|
||||
w: 40
|
||||
h: 38
|
||||
- id: s12
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 676
|
||||
y: 106
|
||||
w: 41
|
||||
h: 41
|
||||
- id: s13
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 676
|
||||
y: 106
|
||||
w: 42
|
||||
h: 42
|
||||
- id: s14
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 677
|
||||
y: 120
|
||||
w: 29
|
||||
h: 26
|
||||
- id: s15
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1260
|
||||
y: 132
|
||||
w: 41
|
||||
h: 41
|
||||
- id: s16
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1260
|
||||
y: 132
|
||||
w: 42
|
||||
h: 42
|
||||
- id: s17
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1261
|
||||
y: 146
|
||||
w: 29
|
||||
h: 26
|
||||
- id: s64
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 756
|
||||
y: 149
|
||||
w: 42
|
||||
h: 42
|
||||
- id: s68
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 936
|
||||
y: 149
|
||||
w: 42
|
||||
h: 42
|
||||
- id: s63
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 757
|
||||
y: 150
|
||||
w: 40
|
||||
h: 40
|
||||
- id: s67
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 937
|
||||
y: 150
|
||||
w: 40
|
||||
h: 40
|
||||
- id: s65
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 758
|
||||
y: 151
|
||||
w: 38
|
||||
h: 38
|
||||
- id: s69
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 938
|
||||
y: 151
|
||||
w: 38
|
||||
h: 38
|
||||
- id: s37
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 500
|
||||
y: 212
|
||||
w: 48
|
||||
h: 63
|
||||
- id: s35
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1119
|
||||
y: 212
|
||||
w: 63
|
||||
h: 63
|
||||
- id: s34
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1120
|
||||
y: 213
|
||||
w: 62
|
||||
h: 62
|
||||
- id: s36
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1121
|
||||
y: 214
|
||||
w: 60
|
||||
h: 60
|
||||
- id: s19
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 676
|
||||
y: 241
|
||||
w: 42
|
||||
h: 42
|
||||
- id: s18
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 676
|
||||
y: 242
|
||||
w: 41
|
||||
h: 41
|
||||
- id: s20
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 677
|
||||
y: 256
|
||||
w: 29
|
||||
h: 26
|
||||
- id: s31
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 107
|
||||
y: 314
|
||||
w: 63
|
||||
h: 63
|
||||
- id: s30
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 108
|
||||
y: 315
|
||||
w: 61
|
||||
h: 61
|
||||
- id: s32
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 109
|
||||
y: 315
|
||||
w: 60
|
||||
h: 60
|
||||
- id: s33
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 129
|
||||
y: 322
|
||||
w: 36
|
||||
h: 41
|
||||
- id: s72
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1129
|
||||
y: 377
|
||||
w: 42
|
||||
h: 42
|
||||
- id: s71
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1130
|
||||
y: 378
|
||||
w: 41
|
||||
h: 41
|
||||
- id: s73
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1130
|
||||
y: 378
|
||||
w: 40
|
||||
h: 40
|
||||
- id: s43
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 944
|
||||
y: 466
|
||||
w: 57
|
||||
h: 63
|
||||
- id: s42
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 945
|
||||
y: 466
|
||||
w: 55
|
||||
h: 61
|
||||
- id: s44
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 946
|
||||
y: 467
|
||||
w: 54
|
||||
h: 60
|
||||
- id: s45
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 958
|
||||
y: 485
|
||||
w: 29
|
||||
h: 38
|
||||
- id: s51
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1130
|
||||
y: 505
|
||||
w: 42
|
||||
h: 29
|
||||
- id: s52
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1136
|
||||
y: 505
|
||||
w: 29
|
||||
h: 29
|
||||
- id: s4
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 582
|
||||
y: 617
|
||||
w: 28
|
||||
h: 31
|
||||
- id: s76
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1129
|
||||
y: 657
|
||||
w: 42
|
||||
h: 42
|
||||
- id: s75
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1130
|
||||
y: 658
|
||||
w: 41
|
||||
h: 41
|
||||
- id: s77
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1130
|
||||
y: 658
|
||||
w: 40
|
||||
h: 40
|
||||
- id: s10
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 725
|
||||
y: 661
|
||||
w: 42
|
||||
h: 40
|
||||
- id: s9
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 726
|
||||
y: 662
|
||||
w: 41
|
||||
h: 39
|
||||
- id: s11
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 726
|
||||
y: 662
|
||||
w: 40
|
||||
h: 38
|
||||
- id: s22
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 676
|
||||
y: 690
|
||||
w: 42
|
||||
h: 42
|
||||
- id: s21
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 676
|
||||
y: 691
|
||||
w: 41
|
||||
h: 41
|
||||
- id: s23
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 677
|
||||
y: 705
|
||||
w: 29
|
||||
h: 26
|
||||
- id: s24
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1260
|
||||
y: 716
|
||||
w: 41
|
||||
h: 41
|
||||
- id: s25
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1260
|
||||
y: 716
|
||||
w: 42
|
||||
h: 42
|
||||
- id: s26
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1261
|
||||
y: 730
|
||||
w: 29
|
||||
h: 26
|
||||
- id: s39
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 107
|
||||
y: 745
|
||||
w: 63
|
||||
h: 63
|
||||
- id: s38
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 108
|
||||
y: 746
|
||||
w: 61
|
||||
h: 61
|
||||
- id: s40
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 109
|
||||
y: 747
|
||||
w: 60
|
||||
h: 60
|
||||
- id: s41
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 129
|
||||
y: 753
|
||||
w: 36
|
||||
h: 41
|
||||
- id: s49
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 500
|
||||
y: 779
|
||||
w: 48
|
||||
h: 63
|
||||
- id: s47
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1119
|
||||
y: 821
|
||||
w: 63
|
||||
h: 63
|
||||
- id: s46
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1120
|
||||
y: 822
|
||||
w: 62
|
||||
h: 62
|
||||
- id: s48
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1121
|
||||
y: 823
|
||||
w: 60
|
||||
h: 60
|
||||
- id: s27
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 676
|
||||
y: 826
|
||||
w: 41
|
||||
h: 41
|
||||
- id: s28
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 676
|
||||
y: 826
|
||||
w: 42
|
||||
h: 42
|
||||
- id: s29
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 677
|
||||
y: 840
|
||||
w: 29
|
||||
h: 26
|
||||
- id: s56
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 756
|
||||
y: 843
|
||||
w: 42
|
||||
h: 42
|
||||
- id: s60
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 936
|
||||
y: 843
|
||||
w: 42
|
||||
h: 42
|
||||
- id: s55
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 757
|
||||
y: 844
|
||||
w: 40
|
||||
h: 40
|
||||
- id: s59
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 937
|
||||
y: 844
|
||||
w: 40
|
||||
h: 40
|
||||
- id: s57
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 758
|
||||
y: 845
|
||||
w: 38
|
||||
h: 38
|
||||
- id: s61
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 938
|
||||
y: 845
|
||||
w: 38
|
||||
h: 38
|
||||
labels: []
|
||||
connections: []
|
||||
|
After Width: | Height: | Size: 227 KiB |
|
After Width: | Height: | Size: 135 KiB |
@@ -0,0 +1,297 @@
|
||||
<!DOCTYPE html
|
||||
SYSTEM "about:legacy-compat">
|
||||
<html xml:lang="en-us" lang="en-us" class="solution">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="DC.Type" content="topic">
|
||||
<meta name="DC.Title" content="Learn about Deploying Active Data Guard Far Sync">
|
||||
<meta name="abstract" content="Oracle Database@Azure enables you to run your mission-critical Oracle databases using Oracle Exadata Database Service on Dedicated Infrastructure in Microsoft Azure's data center.">
|
||||
<meta name="description" content="Oracle Database@Azure enables you to run your mission-critical Oracle databases using Oracle Exadata Database Service on Dedicated Infrastructure in Microsoft Azure's data center.">
|
||||
<meta name="copyright" content="(C) Copyrightfr 2025" type="primary">
|
||||
<meta name="DC.Rights.Owner" content="(C) Copyrightfr 2025" type="primary">
|
||||
<meta name="copyright" content="(C) Copyrightfr 2025" type="secondary">
|
||||
<meta name="DC.Rights.Owner" content="(C) Copyrightfr 2025" type="secondary">
|
||||
<meta name="DC.Date.Created" content="February 2025">
|
||||
<meta name="DC.Format" content="XHTML">
|
||||
<meta name="DC.Identifier" content="GUID-D17BA324-11FB-488B-976A-24D25CDFD6BB">
|
||||
<meta name="DC.Language" content="en-US">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="abstract" content="Oracle Database@Azure enables you to run your mission-critical Oracle databases using Oracle Exadata Database Service on Dedicated Infrastructure in Microsoft Azure's data center.">
|
||||
<meta name="description" content="Oracle Database@Azure enables you to run your mission-critical Oracle databases using Oracle Exadata Database Service on Dedicated Infrastructure in Microsoft Azure's data center.">
|
||||
<title>Learn about Deploying Active Data Guard Far Sync</title>
|
||||
<meta property="og:site_name" content="Oracle Help Center">
|
||||
<meta property="og:title" content="Deploy Active Data Guard Far Sync to protect data across Oracle Database@Azure regions">
|
||||
<meta property="og:description" content="Oracle Database@Azure enables you to run your mission-critical Oracle databases using Oracle Exadata Database Service on Dedicated Infrastructure in Microsoft Azure's data center.">
|
||||
<link rel="stylesheet" href="/sp_common/book-template/ohc-book-template/css/book.css">
|
||||
<link rel="shortcut icon" href="/sp_common/book-template/ohc-common/img/favicon.ico">
|
||||
<meta name="application-name" content="Deploy Active Data Guard Far Sync to protect data across Oracle Database@Azure regions">
|
||||
<meta name="generator" content="DITA Open Toolkit version 1.8.5 (Mode = solution)">
|
||||
<meta name="plugin" content="SP_docbuilder HTML plugin release 18.2.2">
|
||||
<meta name="keywords" content="Azure, Compute, Database Services, Oracle Cloud Infrastructure (OCI), Multicloud, Networking">
|
||||
<link rel="schema.dcterms" href="http://purl.org/dc/terms/">
|
||||
<meta name="dcterms.created" content="2025-02-20T13:29:14-08:00">
|
||||
<meta name="dcterms.title" content="Deploy Active Data Guard Far Sync to protect data across Oracle Database@Azure regions">
|
||||
<meta name="dcterms.dateCopyrighted" content="2025">
|
||||
<meta name="dcterms.category" content="solutions">
|
||||
<meta name="dcterms.identifier" content="G24005-02">
|
||||
|
||||
<meta name="dcterms.product" content="en/solutions;en/cloud/oracle-cloud-infrastructure/oracle-database-at-azure;en/cloud/paas/exadata-cloud">
|
||||
<meta name="dcterms.release" content="Test Release">
|
||||
<link rel="next" href="install-oci-compute-virtual-machines-far-sync.html" title="Next" type="text/html">
|
||||
<script>
|
||||
document.write('<style type="text/css">');
|
||||
document.write('body > .noscript, body > .noscript ~ * { visibility: hidden; }');
|
||||
document.write('</style>');
|
||||
</script>
|
||||
<script data-main="/sp_common/book-template/ohc-book-template/js/book-config" src="/sp_common/book-template/requirejs/require.js"></script>
|
||||
<script>
|
||||
if (window.require === undefined) {
|
||||
document.write('<script data-main="sp_common/book-template/ohc-book-template/js/book-config" src="sp_common/book-template/requirejs/require.js"><\/script>');
|
||||
document.write('<link href="sp_common/book-template/ohc-book-template/css/book.css" rel="stylesheet"/>');
|
||||
}
|
||||
</script>
|
||||
<script type="application/json" id="ssot-metadata">{"primary":{"category":{"short_name":"solutions","element_name":"Solutions","display_in_url":true},"suite":{"short_name":"develop","element_name":"Develop","display_in_url":false},"product_group":{"short_name":"deployment","element_name":"Deployment","display_in_url":false}}}</script>
|
||||
|
||||
<meta name="dcterms.isVersionOf" content="ACTIVE-DATA-GUARD-FAR-SYNC-ORACLE-DB-AT-AZURE">
|
||||
<script type="application/ld+json"> {"@context":"https://schema.org","@type":"WebPage","name":"Learn about Deploying Active Data Guard Far Sync","description":"Oracle Database@Azure enables you to run your mission-critical Oracle databases using Oracle Exadata Database Service on Dedicated Infrastructure in Microsoft Azure's data center.","datePublished":"2025-02-10 CST","dateModified":"2025-02-20 CST"} </script>
|
||||
|
||||
<link rel="alternate" hreflang="en" href="https://docs.oracle.com/en/solutions/active-data-guard-far-sync-oracle-db-at-azure/index.html">
|
||||
<link rel="alternate" hreflang="ja" href="https://docs.oracle.com/ja/solutions/active-data-guard-far-sync-oracle-db-at-azure/index.html">
|
||||
<link rel="alternate" hreflang="fr-CA" href="https://docs.oracle.com/fr-ca/solutions/active-data-guard-far-sync-oracle-db-at-azure/index.html">
|
||||
<link rel="alternate" hreflang="ko" href="https://docs.oracle.com/ko/solutions/active-data-guard-far-sync-oracle-db-at-azure/index.html">
|
||||
<link rel="alternate" hreflang="es" href="https://docs.oracle.com/es/solutions/active-data-guard-far-sync-oracle-db-at-azure/index.html">
|
||||
<link rel="alternate" hreflang="it" href="https://docs.oracle.com/it/solutions/active-data-guard-far-sync-oracle-db-at-azure/index.html">
|
||||
<link rel="alternate" hreflang="fr" href="https://docs.oracle.com/fr/solutions/active-data-guard-far-sync-oracle-db-at-azure/index.html">
|
||||
<link rel="alternate" hreflang="zh-TW" href="https://docs.oracle.com/zh-tw/solutions/active-data-guard-far-sync-oracle-db-at-azure/index.html">
|
||||
<link rel="alternate" hreflang="de" href="https://docs.oracle.com/de/solutions/active-data-guard-far-sync-oracle-db-at-azure/index.html">
|
||||
<link rel="alternate" hreflang="pt-BR" href="https://docs.oracle.com/pt-br/solutions/active-data-guard-far-sync-oracle-db-at-azure/index.html">
|
||||
<link rel="alternate" hreflang="zh-CN" href="https://docs.oracle.com/zh-cn/solutions/active-data-guard-far-sync-oracle-db-at-azure/index.html">
|
||||
<link rel="alternate" hreflang="x-default" href="https://docs.oracle.com/en/solutions/active-data-guard-far-sync-oracle-db-at-azure/index.html">
|
||||
|
||||
<script>window.ohcglobal || document.write('<script src="/en/dcommon/js/global.js">\x3C/script>')</script></head>
|
||||
<body>
|
||||
<div class="noscript alert alert-danger text-center" role="alert">
|
||||
<a href="index.html" class="pull-left"><span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>Previous</a>
|
||||
<a href="install-oci-compute-virtual-machines-far-sync.html" class="pull-right">Next<span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span></a>
|
||||
<span class="fa fa-exclamation-triangle" aria-hidden="true"></span> JavaScript must be enabled to correctly display this content
|
||||
|
||||
</div>
|
||||
<article>
|
||||
<header>
|
||||
<ol class="breadcrumb" vocab="http://schema.org/" typeof="BreadcrumbList">
|
||||
<li property="itemListElement" typeof="ListItem"><a href="index.html" property="item" typeof="WebPage"><span property="name">Deploy Active Data Guard Far Sync to protect data across Oracle Database@Azure regions</span></a></li>
|
||||
<li class="active" property="itemListElement" typeof="ListItem">Learn about Deploying Active Data Guard Far Sync</li>
|
||||
</ol>
|
||||
<a id="GUID-D17BA324-11FB-488B-976A-24D25CDFD6BB" name="GUID-D17BA324-11FB-488B-976A-24D25CDFD6BB"></a>
|
||||
|
||||
<h2 id="IAIGF-GUID-D17BA324-11FB-488B-976A-24D25CDFD6BB" class="sect2">Learn about Deploying <span>Active Data Guard Far Sync</span></h2>
|
||||
</header>
|
||||
<div class="ind">
|
||||
<div>
|
||||
<p><span>Oracle Database@Azure</span> enables you to run your mission-critical Oracle databases using <span>Oracle Exadata Database Service on Dedicated
|
||||
Infrastructure</span> in <span>Microsoft Azure</span>'s data center.
|
||||
</p>
|
||||
<p>Take advantage of the built-in high availability, performance, and
|
||||
scalability of <span>Oracle Exadata Database
|
||||
Service</span> and <span>Oracle Real Application Clusters (Oracle
|
||||
RAC)</span> while benefiting from low latency for <span>Azure</span> applications.
|
||||
</p>
|
||||
<p>Extending the architecture with a standby database hosted on another Exadata
|
||||
virtual machine (VM) cluster provides disaster recovery (DR) protection against database
|
||||
and cluster failures. Placing the standby in a different <span>Azure</span> availability zone (AZ) further enhances the solution, ensuring protection against an
|
||||
entire AZ failure. For comprehensive regional disaster recovery, the standby database
|
||||
should be deployed in a separate region.
|
||||
</p>
|
||||
<p><span>Oracle Data Guard</span> enables you to synchronously transport the redo to the standby database to ensure
|
||||
zero data loss. However, when the standby database is geographically too far, the
|
||||
latency increases, impacting the commit response time and the transaction throughput at
|
||||
the primary database. <span>Active Data Guard Far Sync</span> can ensure zero data loss at any distance with minimal impact on the primary database
|
||||
performance. Far Sync, a lightweight instance, provides synchronous redo protection and
|
||||
zero data loss fail over without requiring a synchronous local standby database.
|
||||
</p>
|
||||
</div>
|
||||
<div class="sect2"><a id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2" name="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2"></a><h3 id="IAIGF-GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2" class="sect3">Architecture</h3>
|
||||
<div>
|
||||
<p>This reference architecture shows a cross-region disaster recovery with <span>Active Data Guard</span>.
|
||||
</p>
|
||||
<p>Two <span>Active Data Guard</span> far sync instances are created in the corresponding <span>Oracle Cloud
|
||||
Infrastructure</span> (OCI) regions. The primary database in Toronto sends the redo data in SYNC mode to
|
||||
the local far sync instance in Toronto, which forwards the redo data in ASYNC mode to
|
||||
the standby database in the remote Sydney region.
|
||||
</p>
|
||||
<p>After a role switch and the database in Sydney becomes the primary, it sends
|
||||
the redo data in SYNC mode to its local far sync instance in Sydney, which forwards the
|
||||
redo data in ASYNC mode to the standby database in the remote Toronto region.</p>
|
||||
<p>The <span>Oracle Exadata Database
|
||||
Service</span> on the <span>Oracle Database@Azure</span> network is connected to the Exadata client subnet using a dynamic routing gateway
|
||||
(DRG) managed by Oracle. A DRG is also required to create a peer connection between VCNs
|
||||
in different regions. Because only one DRG is allowed per VCN in OCI, a second VCN with
|
||||
its own DRG is required to connect the primary and standby VCNs in each region.
|
||||
</p>
|
||||
<p>The application is replicated across regions to access the database in the same region
|
||||
and achieve the lowest latency and highest performance.</p>
|
||||
<p>The following diagram illustrates this reference architecture.</p><br><div class="imageleft"><img class="imageleft" id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__IMAGE_OPD_T33_C2C" height="977" width="1256" src="img/active-data-guard-far-sync-dba.png" alt="Description of active-data-guard-far-sync-dba.png follows" title="Description of active-data-guard-far-sync-dba.png follows" longdesc="img_text/active-data-guard-far-sync-dba.html"><br><a href="img_text/active-data-guard-far-sync-dba.html">Description of the illustration active-data-guard-far-sync-dba.png</a></div><br><p><a href="img/active-data-guard-far-sync-dba-oracle.zip" class="de-download">active-data-guard-far-sync-dba-oracle.zip</a></p>
|
||||
<p><span>Microsoft Azure</span> provides the following components:
|
||||
</p>
|
||||
<ul style="list-style-type: disc;" id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__UL_HZN_W33_C2C">
|
||||
<li><span class="bold">Azure Region</span><p id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__d5e198">An <span>Azure</span> region is a geographical area in which one or more
|
||||
physical <span>Azure</span> data centers, called availability zones, reside. Regions
|
||||
are independent of other regions, and vast distances can
|
||||
separate them (across countries or even continents).
|
||||
</p>
|
||||
<p id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__d5e205"><span>Azure</span> and OCI regions are localized geographic areas. For <span>Oracle Database@Azure</span>, an <span>Azure</span> region is connected to an OCI region, with availability
|
||||
zones (AZs) in <span>Azure</span> connected to availability domains (ADs) in OCI. <span>Azure</span> and OCI region pairs are selected to minimize distance
|
||||
and
|
||||
latency.
|
||||
</p>
|
||||
</li>
|
||||
<li><span class="bold">Azure VNet</span><p id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__d5e267">Microsoft Azure Virtual Network (VNet) is
|
||||
the fundamental building block for your private network in
|
||||
Azure. VNet enables many types of Azure resources, such as
|
||||
Azure virtual machines (VM), to securely communicate with
|
||||
each other, the internet, and on-premises networks.</p>
|
||||
</li>
|
||||
<li><span class="bold">Azure Delegated Subnet</span><p id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__d5e280">Subnet delegation is
|
||||
Microsoft's ability to inject a managed service,
|
||||
specifically a platform-as-a-service (PaaS) service,
|
||||
directly into your virtual network. This allows you to
|
||||
designate or delegate a subnet to be a home for an external
|
||||
managed service inside of your virtual network, such that
|
||||
external service acts as a virtual network resource, even
|
||||
though it is an external PaaS service.</p>
|
||||
</li>
|
||||
<li><span class="bold">Azure VNIC</span><p id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__d5e273">The services in Azure
|
||||
data centers have physical network interface cards (NICs).
|
||||
Virtual machine instances communicate using virtual NICs
|
||||
(VNICs) associated with the physical NICs. Each instance has
|
||||
a primary VNIC that's automatically created and attached
|
||||
during launch and is available during the instance's
|
||||
lifetime.</p>
|
||||
</li>
|
||||
</ul>
|
||||
<p><span>Oracle Cloud
|
||||
Infrastructure</span> provides the following components:
|
||||
</p>
|
||||
<ul style="list-style-type: disc;" id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__UL_FMY_1J3_C2C">
|
||||
<li><span class="bold">Region</span><p id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__d204e1136">An <span>Oracle Cloud
|
||||
Infrastructure</span> region is a localized geographic area that contains one or more data centers, called availability domains. Regions are independent of other regions, and vast distances can separate them (across countries or even continents).
|
||||
</p>
|
||||
</li>
|
||||
<li><span class="bold">Virtual cloud network (VCN) and subnet</span><p id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__d204e1268">A VCN is a customizable, software-defined network that you set up in an <span>Oracle Cloud
|
||||
Infrastructure</span> region. Like traditional data center networks, VCNs give you control over your network environment. A VCN can have multiple non-overlapping CIDR blocks that you can change after you create the VCN. You can segment a VCN into subnets, which can be scoped to a region or to an availability domain. Each subnet consists of a contiguous range of addresses that don't overlap with the other subnets in the VCN. You can change the size of a subnet after creation. A subnet can be public or private.
|
||||
</p>
|
||||
</li>
|
||||
<li><span class="bold">Route table</span><p id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__d204e1159">Virtual route tables contain rules to route traffic from subnets to destinations outside a VCN, typically through gateways.</p>
|
||||
</li>
|
||||
<li><span class="bold">Security list</span><p id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__d204e1165">For each subnet, you can create security rules that specify the source, destination, and type of traffic that must be allowed in and out of the subnet.</p>
|
||||
</li>
|
||||
<li><span class="bold">Dynamic routing gateway (DRG)</span><p id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__d204e437">The DRG is a virtual router that provides a path for private network traffic between VCNs in the same region, between a VCN and a network outside the region, such as a VCN in another <span>Oracle Cloud
|
||||
Infrastructure</span> region, an on-premises network, or a network in another cloud provider.
|
||||
</p>
|
||||
</li>
|
||||
<li><span class="bold">Local peering gateway (LPG)</span><p>An LPG enables you to peer one VCN with another
|
||||
VCN in the same region. Peering means the VCNs communicate using private IP
|
||||
addresses, without the traffic traversing the internet or routing through your
|
||||
on-premises network.</p>
|
||||
</li>
|
||||
<li><span class="bold">Data Guard</span><p id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__d204e285"><span>Oracle Data Guard</span> and Oracle Active Data Guard provide a comprehensive set of services that create, maintain, manage, and monitor one or more standby databases and that enable production Oracle databases to remain available without interruption. <span>Oracle Data Guard</span> maintains these standby databases as copies of the production database by using in-memory replication. If the production database becomes unavailable due to a planned or an unplanned outage, <span>Oracle Data Guard</span> can switch any standby database to the production role, minimizing the downtime associated with the outage. Oracle Active Data Guard provides the additional ability to offload read-mostly workloads to standby databases and also provides advanced data protection features.
|
||||
</p>
|
||||
</li>
|
||||
<li><span class="bold"><span>Active Data Guard Far Sync</span></span><p>Oracle <span>Active Data Guard Far Sync</span> is a lightweight Oracle database instance that receives redo data
|
||||
synchronously from the primary database and forwards it asynchronously to one or
|
||||
more standby databases. It ensures zero data loss at any distance with minimal
|
||||
impact on the primary database performance and without requiring a local
|
||||
synchronous standby database.
|
||||
</p>
|
||||
</li>
|
||||
<li><span class="bold">Exadata Database Service on Dedicated Infrastructure</span><p id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__d204e499"><span>Oracle Exadata Database Service on Dedicated
|
||||
Infrastructure</span> enables you to leverage the power of Exadata in
|
||||
the cloud. <span>Oracle Exadata Database
|
||||
Service</span> delivers proven <span>Oracle Database</span> capabilities on purpose-built, optimized Oracle
|
||||
Exadata infrastructure in the public cloud.
|
||||
Built-in cloud automation, elastic resource
|
||||
scaling, security, and fast performance for all
|
||||
<span>Oracle Database</span> workloads helps you simplify management and
|
||||
reduce costs.
|
||||
</p>
|
||||
</li>
|
||||
<li><span class="bold"><span>Oracle Database@Azure</span></span><p id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__d204e918"><span>Oracle Database@Azure</span> is the Oracle Database service (<span>Oracle Exadata Database Service on Dedicated
|
||||
Infrastructure</span> and <span>Oracle Autonomous Database Serverless</span>) running on <span>Oracle Cloud
|
||||
Infrastructure</span> (OCI), deployed in Microsoft Azure data centers. The service offers features and price parity with OCI. Purchase the service on Azure Marketplace.
|
||||
</p>
|
||||
<p id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__d204e927"><span>Oracle Database@Azure</span> integrates <span>Oracle Exadata Database
|
||||
Service</span>, <span>Oracle Real Application Clusters (Oracle
|
||||
RAC)</span>, and <span>Oracle Data Guard</span> technologies into the Azure platform. Users manage the service on the Azure console and with Azure automation tools. The service is deployed in Azure Virtual Network (VNet) and integrated with the Azure identity and access management system. The OCI and <span>Oracle Database</span> generic metrics and audit logs are natively available in Azure. The service requires users to have an Azure subscription and an OCI tenancy.
|
||||
</p>
|
||||
<p id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__d204e938"><span>Autonomous Database</span> is built on Oracle Exadata infrastructure, is self-managing, self-securing, and self-repairing, helping eliminate manual database management and human errors. <span>Autonomous Database</span> enables development of scalable AI-powered apps with any data using built-in AI capabilities using your choice of large language model (LLM) and deployment location.
|
||||
</p>
|
||||
<p id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__d204e943">Both <span>Oracle Exadata Database
|
||||
Service</span> and <span>Oracle Autonomous Database Serverless</span> are easily provisioned through the native Azure Portal, enabling access to the broader Azure ecosystem.
|
||||
</p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect2"><a id="GUID-DC67E72F-8C19-4792-9AFF-DE6DDBC968B8" name="GUID-DC67E72F-8C19-4792-9AFF-DE6DDBC968B8"></a><h3 id="IAIGF-GUID-DC67E72F-8C19-4792-9AFF-DE6DDBC968B8" class="sect3">Recommendations</h3>
|
||||
<div>
|
||||
<div><span>Use the following recommendations as a starting point.
|
||||
</span>Your requirements might differ from the architecture described here.
|
||||
</div>
|
||||
<ul style="list-style-type: disc;" id="GUID-DC67E72F-8C19-4792-9AFF-DE6DDBC968B8__UL_FWK_JBG_RKB">
|
||||
<li>The far sync instance should be far enough from the primary database to
|
||||
ensure it can’t be affected by the same failure or disaster but close enough to
|
||||
minimize the network latency.</li>
|
||||
<li>Create two far sync instances per region for high availability. Without
|
||||
an alternate far sync instance, or if all far sync instances in the primary region
|
||||
are unavailable, the <span>Oracle Data Guard</span> redo transport will be directly shipped to the standby database in ASYNC mode,
|
||||
affecting the zero data loss protection, and, depending on the configuration and
|
||||
distance, it might result in transport lag further impacting RPO.
|
||||
</li>
|
||||
<li>As the storage performance of the far sync instance is critical, the
|
||||
IOPS capacity should be adequate to support the workload. The far sync instance's
|
||||
storage should have an IOPS performance equal to or better than the primary
|
||||
database's online redo logs storage.</li>
|
||||
<li>Use <span>Oracle Data Guard</span> across regions for the databases provisioned in the Exadata VM cluster on <span>Oracle Database@Azure</span> by using an OCI Managed network.
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect2"><a id="GUID-BE8EBF3A-9557-4952-B79B-35AABA5ED0D7" name="GUID-BE8EBF3A-9557-4952-B79B-35AABA5ED0D7"></a><h3 id="IAIGF-GUID-BE8EBF3A-9557-4952-B79B-35AABA5ED0D7" class="sect3">Considerations for Cross-Regional
|
||||
Disaster Recovery</h3>
|
||||
<div>
|
||||
<p>When performing cross-regional disaster recovery for <span>Oracle Exadata Database
|
||||
Service</span> on <span>Oracle Database@Azure</span>, consider the following.
|
||||
</p>
|
||||
<ul style="list-style-type: disc;" id="GUID-BE8EBF3A-9557-4952-B79B-35AABA5ED0D7__UL_AVT_VJ3_C2C">
|
||||
<li><span>Oracle Cloud
|
||||
Infrastructure</span> is the preferred network for achieving better performance, measured by latency
|
||||
and throughput, and for reducing costs, as the first 10 TB/Month are free.
|
||||
</li>
|
||||
<li>Far sync is a lightweight instance. However, disk performance is
|
||||
critical as far sync writes the received redo to disk before acknowledging back to
|
||||
the primary, which might impact the application performance.</li>
|
||||
<li>The network performance of the far sync instance is critical for heavy
|
||||
workloads.</li>
|
||||
<li>With multiple standby databases and far sync instances, the
|
||||
configuration might get more complicated. Use the <span>Active Data Guard</span> broker RedoRoutes property to simplify the definition of how redo is transported
|
||||
to the various destinations.
|
||||
</li>
|
||||
<li>Using far sync requires the <span>Active Data Guard</span> option.
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
<div id="disclaimers" class="legal">
|
||||
<div><a href="#copyright-information" role="button" data-toggle="collapse" aria-expanded="false" class="collapsed" aria-controls="copyright-information" id="copyright-information-btn">Title and Copyright Information</a></div>
|
||||
<div class="collapse" id="copyright-information" aria-expanded="false">
|
||||
<p class="legal">Deploy Active Data Guard Far Sync to protect data across Oracle Database@Azure regions</p>
|
||||
<p class="legal">G24005-02</p>
|
||||
<p class="date legal">February 2025</p>
|
||||
<div class="legal" style="display:inline"><a href="/pls/topic/lookup?ctx=en/legal&id=cpyr" target="_blank">Copyright ©</a>2025, </div><div class="legal" style="display:inline">Oracle and/or its affiliates.</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,198 @@
|
||||
# Deploy Active Data Guard Far Sync to protect data across Oracle Database@Azure regions
|
||||
|
||||
- Source: https://docs.oracle.com/en/solutions/active-data-guard-far-sync-oracle-db-at-azure/index.html
|
||||
- Date: 2025-02
|
||||
- Type: reference-architecture
|
||||
- Services: exacs, adg, azure
|
||||
- Tags: database, multicloud, azure, ha-dr
|
||||
|
||||
## Summary (catalog)
|
||||
|
||||
Far Sync instance for zero data loss protection across Azure regions. Synchronous redo transport to Far Sync, async to remote standby. Eliminates performance impact of synchronous shipping over long distances.
|
||||
|
||||
## Architecture (fetched from source)
|
||||
|
||||
Architecture
|
||||
|
||||
|
||||
|
||||
|
||||
This reference architecture shows a cross-region disaster recovery with Active Data Guard .
|
||||
|
||||
|
||||
|
||||
Two Active Data Guard far sync instances are created in the corresponding Oracle Cloud
|
||||
Infrastructure (OCI) regions. The primary database in Toronto sends the redo data in SYNC mode to
|
||||
the local far sync instance in Toronto, which forwards the redo data in ASYNC mode to
|
||||
the standby database in the remote Sydney region.
|
||||
|
||||
|
||||
|
||||
After a role switch and the database in Sydney becomes the primary, it sends
|
||||
the redo data in SYNC mode to its local far sync instance in Sydney, which forwards the
|
||||
redo data in ASYNC mode to the standby database in the remote Toronto region.
|
||||
|
||||
|
||||
The Oracle Exadata Database
|
||||
Service on the Oracle Database@Azure network is connected to the Exadata client subnet using a dynamic routing gateway
|
||||
(DRG) managed by Oracle. A DRG is also required to create a peer connection between VCNs
|
||||
in different regions. Because only one DRG is allowed per VCN in OCI, a second VCN with
|
||||
its own DRG is required to connect the primary and standby VCNs in each region.
|
||||
|
||||
|
||||
|
||||
The application is replicated across regions to access the database in the same region
|
||||
and achieve the lowest latency and highest performance.
|
||||
|
||||
|
||||
The following diagram illustrates this reference architecture.
|
||||
|
||||
|
||||
Description of the illustration active-data-guard-far-sync-dba.png
|
||||
|
||||
active-data-guard-far-sync-dba-oracle.zip
|
||||
|
||||
|
||||
Microsoft Azure provides the following components:
|
||||
|
||||
|
||||
|
||||
|
||||
- Azure Region
|
||||
An Azure region is a geographical area in which one or more
|
||||
physical Azure data centers, called availability zones, reside. Regions
|
||||
are independent of other regions, and vast distances can
|
||||
separate them (across countries or even continents).
|
||||
|
||||
|
||||
|
||||
Azure and OCI regions are localized geographic areas. For Oracle Database@Azure , an Azure region is connected to an OCI region, with availability
|
||||
zones (AZs) in Azure connected to availability domains (ADs) in OCI. Azure and OCI region pairs are selected to minimize distance
|
||||
and
|
||||
latency.
|
||||
|
||||
|
||||
|
||||
|
||||
- Azure VNet
|
||||
Microsoft Azure Virtual Network (VNet) is
|
||||
the fundamental building block for your private network in
|
||||
Azure. VNet enables many types of Azure resources, such as
|
||||
Azure virtual machines (VM), to securely communicate with
|
||||
each other, the internet, and on-premises networks.
|
||||
|
||||
|
||||
|
||||
- Azure Delegated Subnet
|
||||
Subnet delegation is
|
||||
Microsoft's ability to inject a managed service,
|
||||
specifically a platform-as-a-service (PaaS) service,
|
||||
directly into your virtual network. This allows you to
|
||||
designate or delegate a subnet to be a home for an external
|
||||
managed service inside of your virtual network, such that
|
||||
external service acts as a virtual network resource, even
|
||||
though it is an external PaaS service.
|
||||
|
||||
|
||||
|
||||
- Azure VNIC
|
||||
The services in Azure
|
||||
data centers have physical network interface cards (NICs).
|
||||
Virtual machine instances communicate using virtual NICs
|
||||
(VNICs) associated with the physical NICs. Each instance has
|
||||
a primary VNIC that's automatically created and attached
|
||||
during launch and is available during the instance's
|
||||
lifetime.
|
||||
|
||||
|
||||
|
||||
|
||||
Oracle Cloud
|
||||
Infrastructure provides the following components:
|
||||
|
||||
|
||||
|
||||
|
||||
- Region
|
||||
An Oracle Cloud
|
||||
Infrastructure region is a localized geographic area that contains one or more data centers, called availability domains. Regions are independent of other regions, and vast distances can separate them (across countries or even continents).
|
||||
|
||||
|
||||
|
||||
|
||||
- Virtual cloud network (VCN) and subnet
|
||||
A VCN is a customizable, software-defined network that you set up in an Oracle Cloud
|
||||
Infrastructure region. Like traditional data center networks, VCNs give you control over your network environment. A VCN can have multiple non-overlapping CIDR blocks that you can change after you create the VCN. You can segment a VCN into subnets, which can be scoped to a region or to an availability domain. Each subnet consists of a contiguous range of addresses that don't overlap with the other subnets in the VCN. You can change the size of a subnet after creation. A subnet can be public or private.
|
||||
|
||||
|
||||
|
||||
|
||||
- Route table
|
||||
Virtual route tables contain rules to route traffic from subnets to destinations outside a VCN, typically through gateways.
|
||||
|
||||
|
||||
|
||||
- Security list
|
||||
For each subnet, you can create security rules that specify the source, destination, and type of traffic that must be allowed in and out of the subnet.
|
||||
|
||||
|
||||
|
||||
- Dynamic routing gateway (DRG)
|
||||
The DRG is a virtual router that provides a path for private network traffic between VCNs in the same region, between a VCN and a network outside the region, such as a VCN in another Oracle Cloud
|
||||
Infrastructure region, an on-premises network, or a network in another cloud provider.
|
||||
|
||||
|
||||
|
||||
|
||||
- Local peering gateway (LPG)
|
||||
An LPG enables you to peer one VCN with another
|
||||
VCN in the same region. Peering means the VCNs communicate using private IP
|
||||
addresses, without the traffic traversing the internet or routing through your
|
||||
on-premises network.
|
||||
|
||||
|
||||
|
||||
- Data Guard
|
||||
Oracle Data Guard and Oracle Active Data Guard provide a comprehensive set of services that create, maintain, manage, and monitor one or more standby databases and that enable production Oracle databases to remain available without interruption. Oracle Data Guard maintains these standby databases as copies of the production database by using in-memory replication. If the production database becomes unavailable due to a planned or an unplanned outage, Oracle Data Guard can switch any standby database to the production role, minimizing the downtime associated with the outage. Oracle Active Data Guard provides the additional ability to offload read-mostly workloads to standby databases and also provides advanced data protection features.
|
||||
|
||||
|
||||
|
||||
|
||||
- Active Data Guard Far Sync
|
||||
Oracle Active Data Guard Far Sync is a lightweight Oracle database instance that receives redo data
|
||||
synchronously from the primary database and forwards it asynchronously to one or
|
||||
more standby databases. It ensures zero data loss at any distance with minimal
|
||||
impact on the primary database performance and without requiring a local
|
||||
synchronous standby database.
|
||||
|
||||
|
||||
|
||||
|
||||
- Exadata Database Service on Dedicated Infrastructure
|
||||
Oracle Exadata Database Service on Dedicated
|
||||
Infrastructure enables you to leverage the power of Exadata in
|
||||
the cloud. Oracle Exadata Database
|
||||
Service delivers proven Oracle Database capabilities on purpose-built, optimized Oracle
|
||||
Exadata infrastructure in the public cloud.
|
||||
Built-in cloud automation, elastic resource
|
||||
scaling, security, and fast performance for all
|
||||
Oracle Database workloads helps you simplify management and
|
||||
reduce costs.
|
||||
|
||||
|
||||
|
||||
|
||||
- Oracle Database@Azure
|
||||
Oracle Database@Azure is the Oracle Database service ( Oracle Exadata Database Service on Dedicated
|
||||
Infrastructure and Oracle Autonomous Database Serverless ) running on Oracle Cloud
|
||||
Infrastructure (OCI), deployed in Microsoft Azure data centers. The service offers features and price parity with OCI. Purchase the service on Azure Marketplace.
|
||||
|
||||
|
||||
|
||||
Oracle Database@Azure integrates Oracle Exadata Database
|
||||
Service , Oracle Real Application Clusters (Oracle
|
||||
RAC) , and Oracle Data Guard technologies into the Azure platform. Users manage the service on the Azure console and with Azure automation tools. The service is deployed in Azure Virtual Network (VNet) and integrated with the Azure identity and access management system. The OCI and Oracle Database generic metrics and audit logs are natively available in Azure. The service requires users to have an Azure subscription and an OCI tenancy.
|
||||
|
||||
|
||||
|
||||
Autonomous Database is built on Oracle Exadata infrastructure, is self-managing, self-securing, and self-repairing, helping eliminate manual database management and human errors. Autonomous Database enables development of scalable AI-powered apps with any data using built-in AI capabilities using your choice of large language model (LLM) and deploymen
|
||||
@@ -0,0 +1,555 @@
|
||||
# Auto-extracted absolute_layout template from
|
||||
# kb/diagram/assets/archcenter-refs/active-data-guard-far-sync-oracle-db-at-azure/active-data-guard-far-sync-dba-oracle/active-data-guard-far-sync-dba.drawio
|
||||
# Source: Oracle Architecture Center reference (canonical geometry).
|
||||
# Use this as the starting scaffold for a new spec — copy, rename ids,
|
||||
# and replace `type: TODO_identify` on services with the right OCI
|
||||
# type alias (adb_s, drg, fastconnect, etc.). Container coords and
|
||||
# edge waypoints are Oracle's canonical layout; preserve unless the
|
||||
# customer's topology requires a change.
|
||||
absolute_layout:
|
||||
canvas:
|
||||
width: 850
|
||||
height: 1100
|
||||
containers:
|
||||
- id: c1
|
||||
type: region
|
||||
label: ''
|
||||
x: 652
|
||||
y: 1
|
||||
w: 676
|
||||
h: 447
|
||||
- id: c2
|
||||
type: region
|
||||
label: ''
|
||||
x: 652
|
||||
y: 585
|
||||
w: 676
|
||||
h: 447
|
||||
- id: c5
|
||||
type: region
|
||||
label: ''
|
||||
x: 965
|
||||
y: 686
|
||||
w: 105
|
||||
h: 36
|
||||
- id: c50
|
||||
type: region
|
||||
label: ''
|
||||
x: 818
|
||||
y: 161
|
||||
w: 99
|
||||
h: 14
|
||||
- id: c53
|
||||
type: region
|
||||
label: ''
|
||||
x: 818
|
||||
y: 855
|
||||
w: 99
|
||||
h: 14
|
||||
- id: c70
|
||||
type: region
|
||||
label: ''
|
||||
x: 1150
|
||||
y: 377
|
||||
w: 2
|
||||
h: 63
|
||||
- id: c74
|
||||
type: region
|
||||
label: ''
|
||||
x: 1150
|
||||
y: 657
|
||||
w: 2
|
||||
h: 63
|
||||
- id: c54
|
||||
type: region
|
||||
label: ''
|
||||
x: 776
|
||||
y: 855
|
||||
w: 2
|
||||
h: 50
|
||||
- id: c58
|
||||
type: region
|
||||
label: ''
|
||||
x: 956
|
||||
y: 855
|
||||
w: 2
|
||||
h: 50
|
||||
- id: c62
|
||||
type: region
|
||||
label: ''
|
||||
x: 776
|
||||
y: 161
|
||||
w: 2
|
||||
h: 50
|
||||
- id: c66
|
||||
type: region
|
||||
label: ''
|
||||
x: 956
|
||||
y: 161
|
||||
w: 2
|
||||
h: 50
|
||||
services:
|
||||
- id: s3
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 582
|
||||
y: 34
|
||||
w: 28
|
||||
h: 31
|
||||
- id: s7
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 725
|
||||
y: 77
|
||||
w: 42
|
||||
h: 40
|
||||
- id: s6
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 726
|
||||
y: 77
|
||||
w: 41
|
||||
h: 39
|
||||
- id: s8
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 726
|
||||
y: 78
|
||||
w: 40
|
||||
h: 38
|
||||
- id: s12
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 676
|
||||
y: 106
|
||||
w: 41
|
||||
h: 41
|
||||
- id: s13
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 676
|
||||
y: 106
|
||||
w: 42
|
||||
h: 42
|
||||
- id: s14
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 677
|
||||
y: 120
|
||||
w: 29
|
||||
h: 26
|
||||
- id: s15
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1260
|
||||
y: 132
|
||||
w: 41
|
||||
h: 41
|
||||
- id: s16
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1260
|
||||
y: 132
|
||||
w: 42
|
||||
h: 42
|
||||
- id: s17
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1261
|
||||
y: 146
|
||||
w: 29
|
||||
h: 26
|
||||
- id: s64
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 756
|
||||
y: 149
|
||||
w: 42
|
||||
h: 42
|
||||
- id: s68
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 936
|
||||
y: 149
|
||||
w: 42
|
||||
h: 42
|
||||
- id: s63
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 757
|
||||
y: 150
|
||||
w: 40
|
||||
h: 40
|
||||
- id: s67
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 937
|
||||
y: 150
|
||||
w: 40
|
||||
h: 40
|
||||
- id: s65
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 758
|
||||
y: 151
|
||||
w: 38
|
||||
h: 38
|
||||
- id: s69
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 938
|
||||
y: 151
|
||||
w: 38
|
||||
h: 38
|
||||
- id: s37
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 500
|
||||
y: 212
|
||||
w: 48
|
||||
h: 63
|
||||
- id: s35
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1119
|
||||
y: 212
|
||||
w: 63
|
||||
h: 63
|
||||
- id: s34
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1120
|
||||
y: 213
|
||||
w: 62
|
||||
h: 62
|
||||
- id: s36
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1121
|
||||
y: 214
|
||||
w: 60
|
||||
h: 60
|
||||
- id: s19
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 676
|
||||
y: 241
|
||||
w: 42
|
||||
h: 42
|
||||
- id: s18
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 676
|
||||
y: 242
|
||||
w: 41
|
||||
h: 41
|
||||
- id: s20
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 677
|
||||
y: 256
|
||||
w: 29
|
||||
h: 26
|
||||
- id: s31
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 107
|
||||
y: 314
|
||||
w: 63
|
||||
h: 63
|
||||
- id: s30
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 108
|
||||
y: 315
|
||||
w: 61
|
||||
h: 61
|
||||
- id: s32
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 109
|
||||
y: 315
|
||||
w: 60
|
||||
h: 60
|
||||
- id: s33
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 129
|
||||
y: 322
|
||||
w: 36
|
||||
h: 41
|
||||
- id: s72
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1129
|
||||
y: 377
|
||||
w: 42
|
||||
h: 42
|
||||
- id: s71
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1130
|
||||
y: 378
|
||||
w: 41
|
||||
h: 41
|
||||
- id: s73
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1130
|
||||
y: 378
|
||||
w: 40
|
||||
h: 40
|
||||
- id: s43
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 944
|
||||
y: 466
|
||||
w: 57
|
||||
h: 63
|
||||
- id: s42
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 945
|
||||
y: 466
|
||||
w: 55
|
||||
h: 61
|
||||
- id: s44
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 946
|
||||
y: 467
|
||||
w: 54
|
||||
h: 60
|
||||
- id: s45
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 958
|
||||
y: 485
|
||||
w: 29
|
||||
h: 38
|
||||
- id: s51
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1130
|
||||
y: 505
|
||||
w: 42
|
||||
h: 29
|
||||
- id: s52
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1136
|
||||
y: 505
|
||||
w: 29
|
||||
h: 29
|
||||
- id: s4
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 582
|
||||
y: 617
|
||||
w: 28
|
||||
h: 31
|
||||
- id: s76
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1129
|
||||
y: 657
|
||||
w: 42
|
||||
h: 42
|
||||
- id: s75
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1130
|
||||
y: 658
|
||||
w: 41
|
||||
h: 41
|
||||
- id: s77
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1130
|
||||
y: 658
|
||||
w: 40
|
||||
h: 40
|
||||
- id: s10
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 725
|
||||
y: 661
|
||||
w: 42
|
||||
h: 40
|
||||
- id: s9
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 726
|
||||
y: 662
|
||||
w: 41
|
||||
h: 39
|
||||
- id: s11
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 726
|
||||
y: 662
|
||||
w: 40
|
||||
h: 38
|
||||
- id: s22
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 676
|
||||
y: 690
|
||||
w: 42
|
||||
h: 42
|
||||
- id: s21
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 676
|
||||
y: 691
|
||||
w: 41
|
||||
h: 41
|
||||
- id: s23
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 677
|
||||
y: 705
|
||||
w: 29
|
||||
h: 26
|
||||
- id: s24
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1260
|
||||
y: 716
|
||||
w: 41
|
||||
h: 41
|
||||
- id: s25
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1260
|
||||
y: 716
|
||||
w: 42
|
||||
h: 42
|
||||
- id: s26
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1261
|
||||
y: 730
|
||||
w: 29
|
||||
h: 26
|
||||
- id: s39
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 107
|
||||
y: 745
|
||||
w: 63
|
||||
h: 63
|
||||
- id: s38
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 108
|
||||
y: 746
|
||||
w: 61
|
||||
h: 61
|
||||
- id: s40
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 109
|
||||
y: 747
|
||||
w: 60
|
||||
h: 60
|
||||
- id: s41
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 129
|
||||
y: 753
|
||||
w: 36
|
||||
h: 41
|
||||
- id: s49
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 500
|
||||
y: 779
|
||||
w: 48
|
||||
h: 63
|
||||
- id: s47
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1119
|
||||
y: 821
|
||||
w: 63
|
||||
h: 63
|
||||
- id: s46
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1120
|
||||
y: 822
|
||||
w: 62
|
||||
h: 62
|
||||
- id: s48
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1121
|
||||
y: 823
|
||||
w: 60
|
||||
h: 60
|
||||
- id: s27
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 676
|
||||
y: 826
|
||||
w: 41
|
||||
h: 41
|
||||
- id: s28
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 676
|
||||
y: 826
|
||||
w: 42
|
||||
h: 42
|
||||
- id: s29
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 677
|
||||
y: 840
|
||||
w: 29
|
||||
h: 26
|
||||
- id: s56
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 756
|
||||
y: 843
|
||||
w: 42
|
||||
h: 42
|
||||
- id: s60
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 936
|
||||
y: 843
|
||||
w: 42
|
||||
h: 42
|
||||
- id: s55
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 757
|
||||
y: 844
|
||||
w: 40
|
||||
h: 40
|
||||
- id: s59
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 937
|
||||
y: 844
|
||||
w: 40
|
||||
h: 40
|
||||
- id: s57
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 758
|
||||
y: 845
|
||||
w: 38
|
||||
h: 38
|
||||
- id: s61
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 938
|
||||
y: 845
|
||||
w: 38
|
||||
h: 38
|
||||
labels: []
|
||||
connections: []
|
||||
|
After Width: | Height: | Size: 135 KiB |
@@ -0,0 +1,7 @@
|
||||
The diagram you downloaded is available in these formats:
|
||||
- DRAWIO
|
||||
- SVG
|
||||
|
||||
You can customize them for your organization using the associated tools:
|
||||
- For DRAWIO format, use draw.io for Confluence, online at diagrams.net, or the desktop app. Go to diagrams.net for more information.
|
||||
- For SVG format, use an SVG editor such as Inkscape or Sketsa SVG Editor, which are free and available for Windows, macOS, Linux.
|
||||
290
kb/diagram/assets/archcenter-refs/adb-azure.html
Normal file
@@ -0,0 +1,290 @@
|
||||
<!DOCTYPE html
|
||||
SYSTEM "about:legacy-compat">
|
||||
<html xml:lang="en-us" lang="en-us" class="solution">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="DC.Type" content="concept">
|
||||
<meta name="DC.Title" content="Deploy Oracle Autonomous Database on Oracle Database@Azure">
|
||||
<meta name="abstract" content="Provision Oracle Autonomous Database as a highly resilient data store for a micro-services application deployed within a multi-availability zone Microsoft Azure region.">
|
||||
<meta name="description" content="Provision Oracle Autonomous Database as a highly resilient data store for a micro-services application deployed within a multi-availability zone Microsoft Azure region.">
|
||||
<meta name="copyright" content="(C) Copyrightfr 2024" type="primary">
|
||||
<meta name="DC.Rights.Owner" content="(C) Copyrightfr 2024" type="primary">
|
||||
<meta name="copyright" content="(C) Copyrightfr 2024" type="secondary">
|
||||
<meta name="DC.Rights.Owner" content="(C) Copyrightfr 2024" type="secondary">
|
||||
<meta name="DC.Date.Created" content="October 2024">
|
||||
<meta name="DC.Format" content="XHTML">
|
||||
<meta name="DC.Identifier" content="GUID-23EC4595-5EC2-4599-B574-1998B3409D9E">
|
||||
<meta name="DC.Language" content="en-US">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="abstract" content="Provision Oracle Autonomous Database as a highly resilient data store for a micro-services application deployed within a multi-availability zone Microsoft Azure region.">
|
||||
<meta name="description" content="Provision Oracle Autonomous Database as a highly resilient data store for a micro-services application deployed within a multi-availability zone Microsoft Azure region.">
|
||||
<title>Deploy Oracle Autonomous Database on Oracle Database@Azure</title>
|
||||
<meta property="og:site_name" content="Oracle Help Center">
|
||||
<meta property="og:title" content="Deploy Autonomous Database on Oracle Database@Azure">
|
||||
<meta property="og:description" content="Provision Oracle Autonomous Database as a highly resilient data store for a micro-services application deployed within a multi-availability zone Microsoft Azure region.">
|
||||
<link rel="stylesheet" href="/sp_common/book-template/ohc-book-template/css/book.css">
|
||||
<link rel="shortcut icon" href="/sp_common/book-template/ohc-common/img/favicon.ico">
|
||||
<meta name="application-name" content="Deploy Autonomous Database on Oracle Database@Azure">
|
||||
<meta name="generator" content="DITA Open Toolkit version 1.8.5 (Mode = solution)">
|
||||
<meta name="plugin" content="SP_docbuilder HTML plugin release 18.2.2">
|
||||
<meta name="keywords" content="AI and Machine Learning,Database,Azure,HA/DR,Serverless,Multicloud">
|
||||
<link rel="schema.dcterms" href="http://purl.org/dc/terms/">
|
||||
<meta name="dcterms.created" content="2024-10-07T17:04:33-07:00">
|
||||
<meta name="dcterms.title" content="Deploy Autonomous Database on Oracle Database@Azure">
|
||||
<meta name="dcterms.dateCopyrighted" content="2024">
|
||||
<meta name="dcterms.category" content="solutions">
|
||||
<meta name="dcterms.identifier" content="G13089-02">
|
||||
|
||||
<meta name="dcterms.product" content="en/solutions;en/cloud/saas/analytics;en/cloud/paas/autonomous-data-warehouse-cloud;en/cloud/paas/autonomous-database/serverless;en/cloud/paas/atp-cloud;en/cloud/oracle-cloud-infrastructure/oracle-database-at-azure;en/cloud/paas/autonomous-json-database">
|
||||
<meta name="dcterms.release" content="Test Release">
|
||||
<script>
|
||||
document.write('<style type="text/css">');
|
||||
document.write('body > .noscript, body > .noscript ~ * { visibility: hidden; }');
|
||||
document.write('</style>');
|
||||
</script>
|
||||
<script data-main="/sp_common/book-template/ohc-book-template/js/book-config" src="/sp_common/book-template/requirejs/require.js"></script>
|
||||
<script>
|
||||
if (window.require === undefined) {
|
||||
document.write('<script data-main="sp_common/book-template/ohc-book-template/js/book-config" src="sp_common/book-template/requirejs/require.js"><\/script>');
|
||||
document.write('<link href="sp_common/book-template/ohc-book-template/css/book.css" rel="stylesheet"/>');
|
||||
}
|
||||
</script>
|
||||
<script type="application/json" id="ssot-metadata">{"primary":{"category":{"short_name":"solutions","element_name":"Solutions","display_in_url":true},"suite":{"short_name":"reference-architectures","element_name":"Reference Architectures","display_in_url":false},"product_group":{"short_name":"oci","element_name":"OCI Architectures","display_in_url":false}}}</script>
|
||||
|
||||
<meta name="dcterms.isVersionOf" content="DEPLOY-AUTONOMOUS-DATABASE-DB-AT-AZURE">
|
||||
<script type="application/ld+json"> {"@context":"https://schema.org","@type":"WebPage","name":"Deploy Oracle Autonomous Database on Oracle Database@Azure","description":"Provision Oracle Autonomous Database as a highly resilient data store for a micro-services application deployed within a multi-availability zone Microsoft Azure region.","datePublished":"2024-10-07 22:50:46 GMT","dateModified":"2024-10-08 00:07:25 GMT"} </script>
|
||||
|
||||
<link rel="alternate" hreflang="en" href="https://docs.oracle.com/en/solutions/deploy-autonomous-database-db-at-azure/index.html">
|
||||
<link rel="alternate" hreflang="de" href="https://docs.oracle.com/de/solutions/deploy-autonomous-database-db-at-azure/index.html">
|
||||
<link rel="alternate" hreflang="es" href="https://docs.oracle.com/es/solutions/deploy-autonomous-database-db-at-azure/index.html">
|
||||
<link rel="alternate" hreflang="fr-CA" href="https://docs.oracle.com/fr-ca/solutions/deploy-autonomous-database-db-at-azure/index.html">
|
||||
<link rel="alternate" hreflang="zh-CN" href="https://docs.oracle.com/zh-cn/solutions/deploy-autonomous-database-db-at-azure/index.html">
|
||||
<link rel="alternate" hreflang="ja" href="https://docs.oracle.com/ja/solutions/deploy-autonomous-database-db-at-azure/index.html">
|
||||
<link rel="alternate" hreflang="fr" href="https://docs.oracle.com/fr/solutions/deploy-autonomous-database-db-at-azure/index.html">
|
||||
<link rel="alternate" hreflang="it" href="https://docs.oracle.com/it/solutions/deploy-autonomous-database-db-at-azure/index.html">
|
||||
<link rel="alternate" hreflang="pt-BR" href="https://docs.oracle.com/pt-br/solutions/deploy-autonomous-database-db-at-azure/index.html">
|
||||
<link rel="alternate" hreflang="ko" href="https://docs.oracle.com/ko/solutions/deploy-autonomous-database-db-at-azure/index.html">
|
||||
<link rel="alternate" hreflang="zh-TW" href="https://docs.oracle.com/zh-tw/solutions/deploy-autonomous-database-db-at-azure/index.html">
|
||||
<link rel="alternate" hreflang="x-default" href="https://docs.oracle.com/en/solutions/deploy-autonomous-database-db-at-azure/index.html">
|
||||
|
||||
<script>window.ohcglobal || document.write('<script src="/en/dcommon/js/global.js">\x3C/script>')</script></head>
|
||||
<body>
|
||||
<div class="noscript alert alert-danger text-center" role="alert">
|
||||
<a href="index.html" class="pull-left"><span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>Previous</a>
|
||||
<a href="#" class="pull-right">Next<span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span></a>
|
||||
<span class="fa fa-exclamation-triangle" aria-hidden="true"></span> JavaScript must be enabled to correctly display this content
|
||||
|
||||
</div>
|
||||
<article>
|
||||
<header>
|
||||
<ol class="breadcrumb" vocab="http://schema.org/" typeof="BreadcrumbList">
|
||||
<li property="itemListElement" typeof="ListItem"><a href="index.html" property="item" typeof="WebPage"><span property="name">Deploy Autonomous Database on Oracle Database@Azure</span></a></li>
|
||||
<li class="active" property="itemListElement" typeof="ListItem">Deploy Oracle Autonomous Database on Oracle Database@Azure</li>
|
||||
</ol>
|
||||
<a id="GUID-23EC4595-5EC2-4599-B574-1998B3409D9E" name="GUID-23EC4595-5EC2-4599-B574-1998B3409D9E"></a>
|
||||
|
||||
<h2 id="DADZD-GUID-23EC4595-5EC2-4599-B574-1998B3409D9E" class="sect2">Deploy <span>Oracle Autonomous Database</span> on <span>Oracle Database@Azure</span></h2>
|
||||
</header>
|
||||
<div class="ind">
|
||||
<div>
|
||||
<p>Provision <span>Oracle Autonomous Database</span> as a highly resilient data store for a micro-services application deployed within a
|
||||
multi-availability zone Microsoft Azure region.
|
||||
</p>
|
||||
<p>Oracle databases provide enterprise-level business continuity by layering
|
||||
core building blocks like Exadata, <span>Oracle Real Application Clusters (Oracle
|
||||
RAC)</span>, <span>Data Guard</span>, and Oracle Application Continuity together. To date, these core building blocks
|
||||
could be configured manually in on-premises environments, semi-manually on <span>Oracle Cloud
|
||||
Infrastructure</span> (OCI) using the <span>Oracle Exadata Database
|
||||
Service</span>, or be fully automated using the <span>Oracle Autonomous Database</span> service. The fully managed <span>Oracle Autonomous Database</span> service is now available in an increasing number of <span>Microsoft Azure</span> regions across the globe.
|
||||
</p>
|
||||
<p>Many <span>Azure</span> cloud regions provide multiple available zones (AZs) to help maximize business
|
||||
continuity. These availability zones are unique physical locations that help protect
|
||||
applications and data from data center failures.
|
||||
</p>
|
||||
</div>
|
||||
<div class="sect2"><a id="GUID-1548A5AA-D6B9-4DAD-AE43-7162769AD34B" name="GUID-1548A5AA-D6B9-4DAD-AE43-7162769AD34B"></a><h3 id="DADZD-GUID-1548A5AA-D6B9-4DAD-AE43-7162769AD34B" class="sect3">Architecture</h3>
|
||||
<div>
|
||||
<p>This reference architecture describes some best practices for deploying <span>Oracle Autonomous Database</span> in a <span>Microsoft Azure</span> multi-availability zone (AZ) region.
|
||||
</p>
|
||||
<p>Business continuity practices and high availability topologies should always be
|
||||
considered when designing mission-critical database applications. The architecture below
|
||||
shows a containerized application using <span>Azure Kubernetes Service</span> (AKS). The container images are stored in the <span>Azure</span> container registry. Users access the application externally through a public load
|
||||
balancer. Since <span>Oracle Autonomous Database</span> is a PaaS service, there is no administrative control over into which AZ the
|
||||
Autonomous Database will be provisioned. However, in the unlikely event of an <span>Azure</span> AZ failure, Oracle ensures that a local Autonomous Data Guard standby is always
|
||||
deployed in a different AZ (data center) from its primary.
|
||||
</p>
|
||||
<div class="infoboxnote" id="GUID-1548A5AA-D6B9-4DAD-AE43-7162769AD34B__GUID-5DE78187-7A03-49B7-9852-39A506FFC5C2">
|
||||
<p class="notep1">Note:</p>If application-to-database-availability-zone affinity is required, Autonomous Database
|
||||
provides a user queryable database view to determine its AZ placement. Once the AZ of
|
||||
the Autonomous Database is determined, networking can be aligned as appropriate.
|
||||
</div>
|
||||
<p>In the diagram below, the application virtual network (VNet) connects to the database
|
||||
VNet in availability zone 1 (AZ1) using VNet peering. The AKS-hosted application
|
||||
accesses the database via a private endpoint that connects to the <span>Oracle Database@Azure</span> delegated subnet. If multi-AZ business continuity is required, Autonomous Data Guard
|
||||
can optionally be enabled, in which case, it is availability zone 2 (AZ2). Autonomous
|
||||
Data Guard keeps the primary database and local standby in sync and automatically fails
|
||||
over in the case of a primary AZ outage. Oracle-managed automatic backups are always
|
||||
enabled by default.
|
||||
</p>
|
||||
<p>The following diagram illustrates this reference architecture.</p><br><div class="imageleft"><img class="imageleft" id="GUID-1548A5AA-D6B9-4DAD-AE43-7162769AD34B__IMAGE_ZJD_5XF_LCC" height="576" width="1168" src="img/autonomous-database-db-azure-diagram.png" alt="Description of autonomous-database-db-azure-diagram.png follows" title="Description of autonomous-database-db-azure-diagram.png follows" longdesc="img_text/autonomous-database-db-azure-diagram.html"><br><a href="img_text/autonomous-database-db-azure-diagram.html">Description of the illustration autonomous-database-db-azure-diagram.png</a></div><br><p><a href="img/autonomous-database-db-azure-diagram-oracle.zip" class="de-download">autonomous-database-db-azure-diagram-oracle.zip</a></p>
|
||||
<p>The architecture has the following components:</p>
|
||||
<ul style="list-style-type: disc;" id="GUID-1548A5AA-D6B9-4DAD-AE43-7162769AD34B__UL_QDH_4LM_CKB">
|
||||
<li><span class="bold">Region</span><p>An <span>Oracle Cloud
|
||||
Infrastructure</span> region is a localized geographic area that
|
||||
contains one or more data centers, called
|
||||
availability domains. Regions are independent of
|
||||
other regions, and vast distances can separate
|
||||
them (across countries or even
|
||||
continents).
|
||||
</p>
|
||||
</li>
|
||||
<li><span class="bold">Virtual cloud network (VCN) and subnets</span><p>A VCN is a customizable,
|
||||
software-defined network that you set up in an <span>Oracle Cloud
|
||||
Infrastructure</span> region. Like traditional data center networks,
|
||||
VCNs give you control over your network
|
||||
environment. A VCN can have multiple
|
||||
non-overlapping CIDR blocks that you can change
|
||||
after you create the VCN. You can segment a VCN
|
||||
into subnets, which can be scoped to a region or
|
||||
to an availability domain. Each subnet consists of
|
||||
a contiguous range of addresses that don't overlap
|
||||
with the other subnets in the VCN. You can change
|
||||
the size of a subnet after creation. A subnet can
|
||||
be public or private.
|
||||
</p>
|
||||
</li>
|
||||
<li><span class="bold">Autonomous
|
||||
Database</span><p id="GUID-1548A5AA-D6B9-4DAD-AE43-7162769AD34B__d5e89">
|
||||
<span>Oracle Autonomous Database</span> is a fully managed, preconfigured database
|
||||
environments that you can use for transaction
|
||||
processing and data warehousing workloads. You do
|
||||
not need to configure or manage any hardware, or
|
||||
install any software. <span>Oracle Cloud
|
||||
Infrastructure</span> handles creating the database, as well as
|
||||
backing up, patching, upgrading, and tuning the
|
||||
database.
|
||||
</p>
|
||||
</li>
|
||||
<li><span class="bold">Object storage</span><p id="GUID-1548A5AA-D6B9-4DAD-AE43-7162769AD34B__d5e725">
|
||||
<span>Oracle Cloud
|
||||
Infrastructure</span> Object Storage provides quick access to large
|
||||
amounts of structured and unstructured data of any
|
||||
content type, including database backups, analytic
|
||||
data, and rich content such as images and videos.
|
||||
You can safely and securely store and then
|
||||
retrieve data directly from the internet or from
|
||||
within the cloud platform. You can scale storage
|
||||
without experiencing any degradation in
|
||||
performance or service reliability. Use standard
|
||||
storage for "hot" storage that you need to access
|
||||
quickly, immediately, and frequently. Use archive
|
||||
storage for "cold" storage that you retain for
|
||||
long periods of time and seldom or rarely
|
||||
access.
|
||||
</p>
|
||||
</li>
|
||||
<li><span class="bold"><span>Azure</span> Container Registry</span><p><span>Azure</span> Container Registry (ACR) is a managed service for storing and managing
|
||||
container images and related artifacts.
|
||||
</p>
|
||||
</li>
|
||||
<li><span class="bold">Azure availability zone</span><p>An availability zone is a physically separate data
|
||||
center within a region designed to be available and fault-tolerant. Availability
|
||||
zones are close enough to have low-latency connections to other availability
|
||||
zones.</p>
|
||||
</li>
|
||||
<li><span class="bold"><span>Azure Kubernetes Service</span></span><p><span>Azure Kubernetes Service</span> (AKS) is a managed Kubernetes service offered by <span>Microsoft Azure</span>.
|
||||
</p>
|
||||
</li>
|
||||
<li><span class="bold"><span>Azure</span> Load Balancer</span><p><span>Azure</span> Load Balancer provides automated traffic distribution from a single entry
|
||||
point to multiple servers in the back end.
|
||||
</p>
|
||||
</li>
|
||||
<li><span class="bold"><span>Microsoft Azure</span> Virtual Network</span><p><span>Microsoft Azure</span> Virtual Network (VNet) is the fundamental building block for your private
|
||||
network in Azure. VNet enables many <span>Azure</span> resources, such as Azure virtual machines (VMs), to securely communicate with
|
||||
each other, the internet, and on-premises networks.
|
||||
</p>
|
||||
</li>
|
||||
<li><span class="bold"><span>Oracle Database@Azure</span></span><p id="GUID-1548A5AA-D6B9-4DAD-AE43-7162769AD34B__d5e822"><span>Oracle Database@Azure</span> is an Oracle Cloud Database service that runs
|
||||
Oracle Database workloads in your Azure
|
||||
environment. All hardware for <span>Oracle Database@Azure</span> is colocated in Azure's data centers and uses
|
||||
Azure networking. The service benefits from the
|
||||
simplicity, security, and low latency of a single
|
||||
operating environment within Azure. Federated
|
||||
identity and access management for <span>Oracle Database@Azure</span> is provided by Microsoft Entra ID. <span>Oracle Database</span> metrics and audit logs are natively available
|
||||
in Azure. The service requires that users have an
|
||||
Azure tenancy and an OCI tenancy.
|
||||
</p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect2"><a id="GUID-8B318CF8-81D2-44E5-8D8F-AE74F4E0A422" name="GUID-8B318CF8-81D2-44E5-8D8F-AE74F4E0A422"></a><h3 id="DADZD-GUID-8B318CF8-81D2-44E5-8D8F-AE74F4E0A422" class="sect3">Recommendations</h3>
|
||||
<div>
|
||||
<div><span>Use the following recommendations as a starting point.
|
||||
</span>Your requirements might differ from the architecture described here.
|
||||
</div>
|
||||
<ul style="list-style-type: disc;" id="GUID-8B318CF8-81D2-44E5-8D8F-AE74F4E0A422__UL_FWK_JBG_RKB">
|
||||
<li>Primary and standby database subnets should be in distinct VNets
|
||||
configured with non-overlapping IP classless inter-domain routing (CIDR)
|
||||
ranges.</li>
|
||||
<li>The application tier (AKS, Docker, VMs, etc.) should span at least two
|
||||
AZs, with the application VNet peered to both the primary and standby VNet of the
|
||||
<span>Autonomous Database</span>.
|
||||
</li>
|
||||
<li>Optionally, client applications can be configured to use Oracle
|
||||
transparent application continuity (TAP) to maximize availability during planned and
|
||||
unplanned outages.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect2"><a id="GUID-A13AEEB5-B270-4D38-9142-F89DE81A04CF" name="GUID-A13AEEB5-B270-4D38-9142-F89DE81A04CF"></a><h3 id="DADZD-GUID-A13AEEB5-B270-4D38-9142-F89DE81A04CF" class="sect3">Explore More</h3>
|
||||
<div>
|
||||
<p>For more details about the components and considerations shared in this
|
||||
document, please refer to the following links.</p>
|
||||
<p>Review these additional resources:</p>
|
||||
<ul style="list-style-type: disc;">
|
||||
<li><a href="/pls/topic/lookup?ctx=en/solutions/deploy-autonomous-database-db-at-azure&id=adb-serverless" target="_blank">Oracle Autonomous
|
||||
Database Serverless</a></li>
|
||||
<li><a href="/pls/topic/lookup?ctx=en/solutions/deploy-autonomous-database-db-at-azure&id=oracle-database-at-azure" target="_blank">Oracle
|
||||
Database@Azure</a></li>
|
||||
<li><a href="/pls/topic/lookup?ctx=en/solutions/deploy-autonomous-database-db-at-azure&id=BODAT" target="_blank"><span><cite>Learn about selecting
|
||||
network topologies for Oracle Database@Azure</cite></span></a></li>
|
||||
<li><a href="/pls/topic/lookup?ctx=en/solutions/deploy-autonomous-database-db-at-azure&id=adb-config-app-continuity" target="_blank">Configure Application Continuity on Autonomous
|
||||
Database</a> in <cite>Using Oracle Autonomous
|
||||
Database Serverless</cite></li>
|
||||
<li><a href="/pls/topic/lookup?ctx=en/solutions/deploy-autonomous-database-db-at-azure&id=oracle-db-at-azure-videos" target="_blank">Oracle
|
||||
Database@Azure Videos</a></li>
|
||||
<li><a href="/pls/topic/lookup?ctx=en/solutions/deploy-autonomous-database-db-at-azure&id=oci-doc" target="_blank"><span>Oracle Cloud
|
||||
Infrastructure</span> Documentation</a></li>
|
||||
<li><a href="/pls/topic/lookup?ctx=en/solutions/deploy-autonomous-database-db-at-azure&id=GVVGQ" target="_blank"><span><cite>Best practices framework
|
||||
for Oracle Cloud Infrastructure</cite></span></a></li>
|
||||
<li><a href="/pls/topic/lookup?ctx=en/solutions/deploy-autonomous-database-db-at-azure&id=oci-calc" target="_blank">Oracle Cloud Cost
|
||||
Estimator</a></li>
|
||||
<li><a href="/pls/topic/lookup?ctx=en/solutions/deploy-autonomous-database-db-at-azure&id=cloud-adoption-framework" target="_blank">Cloud Adoption
|
||||
Framework</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect2"><a id="GUID-EBDB0E20-86F8-4A31-BFD2-84D996FCE557" name="GUID-EBDB0E20-86F8-4A31-BFD2-84D996FCE557"></a><h3 id="DADZD-GUID-EBDB0E20-86F8-4A31-BFD2-84D996FCE557" class="sect3">Acknowledgments</h3>
|
||||
<div>
|
||||
<ul style="list-style-type: disc;">
|
||||
<li><span class="bold">Authors</span>: <span translate="no">Domenick Ficarella, Can Tuzla, Martin
|
||||
Gubar</span></li>
|
||||
<li><span class="bold">Contributors</span>: <span translate="no">Wei Han, John Sulyok</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
<div id="disclaimers" class="legal">
|
||||
<div><a href="#copyright-information" role="button" data-toggle="collapse" aria-expanded="false" class="collapsed" aria-controls="copyright-information" id="copyright-information-btn">Title and Copyright Information</a></div>
|
||||
<div class="collapse" id="copyright-information" aria-expanded="false">
|
||||
<p class="legal">Deploy Autonomous Database on Oracle Database@Azure</p>
|
||||
<p class="legal">G13089-02</p>
|
||||
<p class="date legal">October 2024</p>
|
||||
<div class="legal" style="display:inline"><a href="/pls/topic/lookup?ctx=en/legal&id=cpyr" target="_blank">Copyright ©</a>2024, </div><div class="legal" style="display:inline">Oracle and/or its affiliates.</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
BIN
kb/diagram/assets/archcenter-refs/adb-azure.zip
Normal file
@@ -0,0 +1,158 @@
|
||||
# Deploy a multi-agent AI fraud detection system on OCI
|
||||
|
||||
- Source: https://docs.oracle.com/en/solutions/ai-fraud-detection/index.html
|
||||
- Date: 2025-06
|
||||
- Type: reference-architecture
|
||||
- Services: genai, streaming, adb-s
|
||||
- Tags: ai-ml, autonomous
|
||||
|
||||
## Summary (catalog)
|
||||
|
||||
Multi-agent AI system for real-time fraud detection. Streaming ingestion of transaction data, ML models for anomaly detection, GenAI agents for investigation and decision support.
|
||||
|
||||
## Architecture (fetched from source)
|
||||
|
||||
Architecture
|
||||
|
||||
|
||||
|
||||
|
||||
This architecture shows a multi-agent AI fraud detection system on Oracle Cloud
|
||||
Infrastructure (OCI).
|
||||
|
||||
|
||||
|
||||
This design uses multiple AI agents to provide key insights, gather evidence,
|
||||
and produce a comprehensive fraud analysis.
|
||||
|
||||
|
||||
At the core is a model context protocol (MCP) server that orchestrates agent
|
||||
interactions. Specialized agents handle distinct tasks. For example, a data retrieval
|
||||
agent queries enterprise data sources and a fraud analyzer agent evaluates and explains
|
||||
anomalies. The flow begins when an event, such as a suspicious transaction alert or an
|
||||
investigator’s query, triggers the orchestrator. The orchestrator then delegates
|
||||
subtasks to the agents and consolidates their results by using a fan-in and fan-out
|
||||
design pattern. Each agent uses OCI-native services to perform tasks (database queries,
|
||||
LLM inference, and so on), and the orchestrator translates between agent and Oracle
|
||||
system contexts, ensuring that each agent gets the information it needs in the format it
|
||||
expects.
|
||||
|
||||
|
||||
The following diagram shows process flow overview:
|
||||
|
||||
|
||||
Description of the illustration ai-fraud-detection-flow.png
|
||||
|
||||
ai-fraud-detection-flow-oracle.zip
|
||||
|
||||
|
||||
|
||||
- MCP orchestrator server
|
||||
The model context protocol
|
||||
(MCP) server is the coordinating hub that orchestrates agent actions and
|
||||
maintains the overall context or state of an investigation. It uses MCP to
|
||||
standardize how agents invoke tools and exchange data. Acting as a “central
|
||||
brain,” it receives the initial request (fraud alert or analysis query) and
|
||||
calls the appropriate agents in sequence. It also translates high-level agent
|
||||
intents into low-level operations on Oracle systems, such as converting an
|
||||
agent’s request for customer information into an SQL query, and converting SQL
|
||||
results into a natural language response. This approach decouples agents from
|
||||
direct system calls by using the orchestrator as a bridge between the agent
|
||||
logic and enterprise data, enabling flexible updates and centralized control. In
|
||||
the first phase of this architecture, the server is a lightweight server derived
|
||||
from Google’s Gen AI Toolbox running on Oracle Cloud Infrastructure
|
||||
Compute or OCI Kubernetes Engine .
|
||||
|
||||
|
||||
|
||||
|
||||
- Data retrieval agent
|
||||
The data retrieval agent is
|
||||
a specialized agent responsible for fetching relevant data from enterprise
|
||||
sources. For example, upon receiving a customer ID or transaction ID from the
|
||||
orchestrator, it queries the Oracle Autonomous Database or other OCI data stores for information such as recent transactions, account
|
||||
profiles, claims history, and so on. You can implement this agent by using OCI Functions (serverless) to call tools hosted on an MCP server for Autonomous Database . The agent contains all data-access logic. The orchestrator server may use a
|
||||
predefined tool for this agent, such as a YAML-configured
|
||||
LookupTransaction or GetCustomerProfile
|
||||
tool that knows how to run the proper SQL on the Autonomous Database . Similar to how Google Gen AI Toolbox uses YAML-defined tools to let agents
|
||||
perform database operations, this design defines database queries as
|
||||
configuration-driven tools. In the first phase, the data agent simply executes
|
||||
these queries without AI decision-making involvement and returns the results to
|
||||
the orchestrator.
|
||||
|
||||
|
||||
|
||||
|
||||
- Fraud analyzer agent
|
||||
The fraud analyzer agent is
|
||||
the cornerstone agent that assesses the data for signs of fraud and generates
|
||||
insights. This agent ingests the context, such as the transaction details,
|
||||
customer info, or historical patterns provided by the orchestrator and applies
|
||||
AI/ML logic to determine if the scenario is likely fraudulent. In phase 1, this
|
||||
could be a rule-based engine or an OCI Anomaly Detection model to provide a
|
||||
quick, deterministic response. For example, it might flag anomalies such as a
|
||||
transaction far outside normal range or multiple claims in a short time span.
|
||||
The agent then produces a fraud score or classification and possibly an
|
||||
explanation.
|
||||
|
||||
|
||||
In phase 2, the fraud analyzer agent is
|
||||
augmented with LLM capabilities by using OCI Generative AI or Oracle pretrained models to generate human-readable investigative
|
||||
narratives. In this way, generative AI automatically creates a concise report of
|
||||
the findings, summarizing why a transaction was flagged and referencing the data
|
||||
directly such as how a customer’s recent transactions show unusual high-value
|
||||
purchases overseas, which deviates from their normal pattern by 5σ (5 sigma),
|
||||
indicating high fraud likelihood. Oracle’s own Financial Services division has
|
||||
highlighted the value of such generative narratives in accelerating
|
||||
investigations. In phase 2, the fraud analyzer agent can use an OCI LLM to both
|
||||
analyze the data and explain the results. For example, it might use a prompt
|
||||
that incorporates the data and asks the model to analyze the fraud risk, or it
|
||||
could perform tool-assisted reasoning by first calling a calculation tool, and
|
||||
then having the LLM elaborate on the results.
|
||||
|
||||
|
||||
|
||||
|
||||
- Additional agents (as needed)
|
||||
The architecture
|
||||
supports the ability to plug in other agents to enrich the analysis. For
|
||||
example, an external check agent could call third-party services, such as
|
||||
sanctions lists or credit bureaus, to gather more evidence on the entity
|
||||
involved. Another could be a notification and case management agent that, after
|
||||
fraud is confirmed, logs the case in a system or triggers an alert to a human
|
||||
investigator. The orchestrator’s ability to manage multiple agents and
|
||||
coordinate complex workflows allows new agents to be added without disturbing
|
||||
existing ones. This modularity makes the system extensible for demo showcases
|
||||
that can start with two agents and later attach more for other demo scenarios
|
||||
such as compliance checks, customer messaging, and so on.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Title and Copyright Information
|
||||
|
||||
|
||||
|
||||
|
||||
Deploy a multi-agent AI fraud detection system on OCI
|
||||
|
||||
|
||||
G34124-01
|
||||
|
||||
|
||||
June 2025
|
||||
|
||||
|
||||
Copyright © 2025,
|
||||
|
||||
Oracle and/or its affiliates.
|
||||
@@ -0,0 +1,198 @@
|
||||
# Auto-extracted absolute_layout template from
|
||||
# kb/diagram/assets/archcenter-refs/ai-fraud-detection/ai-fraud-detection-flow-oracle/ai-fraud-detection-flow.drawio
|
||||
# Source: Oracle Architecture Center reference (canonical geometry).
|
||||
# Use this as the starting scaffold for a new spec — copy, rename ids,
|
||||
# and replace `type: TODO_identify` on services with the right OCI
|
||||
# type alias (adb_s, drg, fastconnect, etc.). Container coords and
|
||||
# edge waypoints are Oracle's canonical layout; preserve unless the
|
||||
# customer's topology requires a change.
|
||||
absolute_layout:
|
||||
canvas:
|
||||
width: 850
|
||||
height: 1100
|
||||
containers:
|
||||
- id: c5
|
||||
type: region
|
||||
label: ''
|
||||
x: 330
|
||||
y: 381
|
||||
w: 252
|
||||
h: 125
|
||||
- id: c1
|
||||
type: region
|
||||
label: ''
|
||||
x: 330
|
||||
y: 0
|
||||
w: 252
|
||||
h: 49
|
||||
- id: c2
|
||||
type: region
|
||||
label: ''
|
||||
x: 330
|
||||
y: 136
|
||||
w: 252
|
||||
h: 49
|
||||
- id: c3
|
||||
type: region
|
||||
label: ''
|
||||
x: 0
|
||||
y: 247
|
||||
w: 252
|
||||
h: 49
|
||||
- id: c4
|
||||
type: region
|
||||
label: ''
|
||||
x: 0
|
||||
y: 382
|
||||
w: 252
|
||||
h: 49
|
||||
- id: c6
|
||||
type: region
|
||||
label: ''
|
||||
x: 660
|
||||
y: 247
|
||||
w: 252
|
||||
h: 49
|
||||
services:
|
||||
- id: s9
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 584
|
||||
y: 159
|
||||
w: 211
|
||||
h: 87
|
||||
- id: s10
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 219
|
||||
y: 169
|
||||
w: 112
|
||||
h: 75
|
||||
- id: s11
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 254
|
||||
y: 270
|
||||
w: 117
|
||||
h: 111
|
||||
- id: s12
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 542
|
||||
y: 270
|
||||
w: 117
|
||||
h: 111
|
||||
- id: s23
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 425
|
||||
y: 416
|
||||
w: 63
|
||||
h: 63
|
||||
- id: s22
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 426
|
||||
y: 417
|
||||
w: 61
|
||||
h: 61
|
||||
- id: s24
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 426
|
||||
y: 417
|
||||
w: 60
|
||||
h: 60
|
||||
- id: s25
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 452
|
||||
y: 423
|
||||
w: 30
|
||||
h: 24
|
||||
- id: s26
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 431
|
||||
y: 424
|
||||
w: 51
|
||||
h: 30
|
||||
- id: s7
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 119
|
||||
y: 475
|
||||
w: 212
|
||||
h: 67
|
||||
- id: s8
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 584
|
||||
y: 475
|
||||
w: 212
|
||||
h: 61
|
||||
- id: s17
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 429
|
||||
y: 539
|
||||
w: 58
|
||||
h: 63
|
||||
- id: s20
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 768
|
||||
y: 539
|
||||
w: 40
|
||||
h: 63
|
||||
- id: s16
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 430
|
||||
y: 540
|
||||
w: 56
|
||||
h: 61
|
||||
- id: s19
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 769
|
||||
y: 540
|
||||
w: 38
|
||||
h: 62
|
||||
- id: s18
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 430
|
||||
y: 541
|
||||
w: 55
|
||||
h: 59
|
||||
- id: s21
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 769
|
||||
y: 541
|
||||
w: 37
|
||||
h: 60
|
||||
- id: s13
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 95
|
||||
y: 548
|
||||
w: 61
|
||||
h: 53
|
||||
- id: s14
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 95
|
||||
y: 548
|
||||
w: 63
|
||||
h: 55
|
||||
- id: s15
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 96
|
||||
y: 549
|
||||
w: 60
|
||||
h: 52
|
||||
labels: []
|
||||
connections: []
|
||||
|
After Width: | Height: | Size: 46 KiB |
@@ -0,0 +1,9 @@
|
||||
The diagram you downloaded is available in these formats:
|
||||
- DRAWIO
|
||||
- SVG
|
||||
|
||||
You can customize them for your organization using the associated tools:
|
||||
- For DRAWIO format, use draw.io for Confluence, online at diagrams.net, or the desktop app. Go to diagrams.net for more information.
|
||||
- For SVG format, use an SVG editor such as Inkscape or Sketsa SVG Editor, which are free and available for Windows, macOS, Linux.
|
||||
|
||||
Note that all diagram components are ungrouped and in a single layer.
|
||||
@@ -0,0 +1,337 @@
|
||||
# Deploy a Data Lake leveraging Power BI on Oracle Database@Azure
|
||||
|
||||
- Source: https://docs.oracle.com/en/solutions/analytics-pipeline-db-at-azure/index.html
|
||||
- Date: 2025-02
|
||||
- Type: reference-architecture
|
||||
- Services: adb-s, azure, object-storage
|
||||
- Tags: data-platform, multicloud, azure, autonomous
|
||||
|
||||
## Summary (catalog)
|
||||
|
||||
Analytics pipeline combining ADB-S on Database@Azure with Power BI. Data ingestion to Object Storage, transformation in ADB-S, visualization via Power BI DirectQuery or Import mode.
|
||||
|
||||
## Architecture (fetched from source)
|
||||
|
||||
Deploy a Data Lake Leveraging Power BI on Oracle Database@Azure
|
||||
|
||||
|
||||
|
||||
|
||||
-
|
||||
|
||||
-
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-
|
||||
|
||||
-
|
||||
|
||||
-
|
||||
|
||||
-
|
||||
|
||||
-
|
||||
|
||||
-
|
||||
|
||||
-
|
||||
|
||||
-
|
||||
|
||||
-
|
||||
|
||||
-
|
||||
|
||||
-
|
||||
|
||||
-
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Previous
|
||||
Next
|
||||
JavaScript must be enabled to correctly display this content
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
- Deploy a Data Lake leveraging Power BI on Oracle Database@Azure
|
||||
|
||||
- Deploy a Data Lake Leveraging
|
||||
Power BI on Oracle Database@Azure
|
||||
|
||||
|
||||
|
||||
|
||||
Deploy a Data Lake Leveraging
|
||||
Power BI on Oracle Database@Azure
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Many businesses leverage Microsoft Power BI with data lakes on Microsoft
|
||||
Azure to derive actionable business insights.
|
||||
|
||||
|
||||
You can expand these capabilities by using a medallion architecture
|
||||
that includes Azure Data Factory, Azure Data Lake Storage, Azure Compute,
|
||||
Oracle Database@Azure (either a fully managed Oracle Autonomous Database or a co-managed Oracle Exadata Database
|
||||
Service instance), and Power BI to address several key data challenges faced by
|
||||
customers:
|
||||
|
||||
|
||||
|
||||
|
||||
- Data Silos and Integration : Azure Data Factory ingests data from
|
||||
diverse sources into a unified data lake, breaking down silos and
|
||||
providing a single source of truth.
|
||||
|
||||
|
||||
- Data Quality and Consistency : Autonomous Data
|
||||
Warehouse in the Curation Layer ensures clean, consistent, and high-quality
|
||||
data through deduplication and quality rules, reducing errors and
|
||||
enhancing decision-making.
|
||||
|
||||
|
||||
- Scalability and Performance : Azure's scalable
|
||||
compute resources and Autonomous Data
|
||||
Warehouse 's serverless architecture or Oracle Exadata Database
|
||||
Service handle large-scale data processing efficiently, while maintaining
|
||||
optimal performance as data volumes and user adoption (concurrency)
|
||||
grow.
|
||||
|
||||
|
||||
- Complex Transformations : Azure Compute and Autonomous Data
|
||||
Warehouse or Oracle Exadata Database
|
||||
Service perform complex transformations and analytics efficiently,
|
||||
reducing processing time and focusing on insights.
|
||||
|
||||
|
||||
- Cost Management : The serverless and pay-as-you-go
|
||||
models for Azure services and Autonomous Data
|
||||
Warehouse or Oracle Exadata Database
|
||||
Service optimize costs, ensuring that you only pay for what you use.
|
||||
|
||||
|
||||
- Data Governance and Compliance : Structured data management layers
|
||||
facilitate better governance, traceability, and regulatory
|
||||
compliance.
|
||||
|
||||
|
||||
- Built-in Analytics : Users are able to apply analytics
|
||||
directly to their data by using built-in features such as artificial
|
||||
intelligence (AI), machine learning (ML), graph, spatial, and text
|
||||
analytics.
|
||||
|
||||
|
||||
|
||||
Typical use cases include:
|
||||
|
||||
|
||||
|
||||
- Retail Analytics : Integrates data from online sales, in-store
|
||||
transactions, and customer feedback, optimizing inventory and
|
||||
marketing strategies.
|
||||
|
||||
|
||||
- Financial Services : Analyzes transaction data for fraud detection
|
||||
and regulatory compliance, mitigating risks.
|
||||
|
||||
|
||||
- Healthcare Analytics : Integrates patient data from EHRs, lab
|
||||
results, and wearable devices, improving patient care and health
|
||||
management.
|
||||
|
||||
|
||||
|
||||
This architecture enables enterprise customers across industries to
|
||||
leverage data effectively to empower their business users to make informed
|
||||
decisions to drive better business outcomes.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Logical Architecture
|
||||
|
||||
|
||||
|
||||
|
||||
The analytical data lake can ingest data from multiple sources and can
|
||||
provide business insights by using Power BI running on Microsoft Azure.
|
||||
|
||||
|
||||
|
||||
- Data Sources: The analytical data lake can ingest data from multiple
|
||||
sources. Azure Data Factory can ingest data from Microsoft SQL Server and Azure Blob
|
||||
Storage. Oracle Database@Azure can ingest data from Oracle Cloud
|
||||
ERP , Oracle Cloud
|
||||
Infrastructure Object Storage , Azure Cosmos Database, Azure SQL Database, various types of table storage data
|
||||
(Azure, PostgresSQL, Azure MariaDB), and other types of on-premises relational
|
||||
databases.
|
||||
|
||||
|
||||
- Data Tier: Oracle Database@Azure ingests source data from Azure Data Lake Storage in conjunction with Azure Data
|
||||
Factory.
|
||||
|
||||
|
||||
- Consumption Tier: Oracle Database@Azure provides insights to Microsoft Power BI running on Microsoft Azure.
|
||||
|
||||
|
||||
|
||||
The following diagram illustrates the functional architecture:
|
||||
|
||||
|
||||
Description of the illustration data-lake-db-azure-process.png
|
||||
|
||||
data-lake-db-azure-process-oracle.zip
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Medallion Architecture
|
||||
|
||||
|
||||
|
||||
|
||||
This section demonstrates how you can deploy Oracle Database@Azure as the data warehouse within the Azure medallion architecture.
|
||||
|
||||
|
||||
|
||||
The medallion architecture is a data management framework that
|
||||
structures data handling in a data lakehouse into distinct stages (bronze,
|
||||
silver, and gold), representing the different stages of data processing:
|
||||
|
||||
|
||||
|
||||
- Bronze stage: Data from various sources is ingested,
|
||||
validated, and curated.
|
||||
|
||||
- Silver stage: The data is stored and processed for analytics
|
||||
and reporting.
|
||||
|
||||
- Gold stage: Refined data is delivered for analysis and
|
||||
reporting.
|
||||
|
||||
|
||||
The following diagram illustrates the architecture:
|
||||
|
||||
|
||||
Description of the illustration data-lake-db-azure-medallion.png
|
||||
|
||||
data-lake-db-azure-medallion-oracle.zip
|
||||
|
||||
|
||||
|
||||
|
||||
The medallion stages are further divided into the following
|
||||
deployment areas:
|
||||
|
||||
|
||||
|
||||
- Ingestion Framework: Ingests data from various data sources
|
||||
using Azure Data Factory. Raw data is stored in Azure Data Lake
|
||||
Storage Gen 2 and Delta Lake. This framework ensures data
|
||||
consistency and accuracy across source and sink systems. This
|
||||
framework constitutes a robust set of scripts to ensure quality by
|
||||
using audit, balance and control mechanisms across platforms.
|
||||
|
||||
- Validation: Raw data is ingested into Oracle Autonomous Data Warehouse Serverless or Oracle Exadata Database
|
||||
Service for deduplication and data quality check. This workflow performs
|
||||
basic cleansing masking of PII and PHI data along with validation of
|
||||
raw files through a rules-driven framework to perform schema checks.
|
||||
The validation framework can be implemented using Azure Data
|
||||
Factory.
|
||||
|
||||
|
||||
- Rejection Workflow: Any record that is rejected during the
|
||||
ingestion stage due to validation errors or other processing errors
|
||||
is staged on a separate Azure Data Lake Storage path. Automated
|
||||
email notifications using Logic App are sent to the support team
|
||||
based on defined software license agreements (SLAs). Standardized
|
||||
data remains in Oracle Autonomous Data Warehouse Serverless or Oracle Exadata Database
|
||||
Service .
|
||||
|
||||
|
||||
- Orchestration: A scheduling system manages data processing
|
||||
jobs, scheduling, and job dependencies. Azure Data Factory can be
|
||||
used for the orchestration of ETL jobs. The Orchestration stage
|
||||
includes Oracle Autonomous Data Warehouse Serverless or Oracle Exadata Database
|
||||
Service , Delta Lake, and Azure Data Lake Storage Gen 2.
|
||||
|
||||
|
||||
- Reporting/Analytics: The reporting stage includes Power BI
|
||||
and data services such as external feeds and data monetization.
|
||||
|
||||
|
||||
The architecture has the following infrastructure components:
|
||||
|
||||
|
||||
|
||||
- Region
|
||||
An Azure region is a
|
||||
geographical area in which one or more physical Azure data
|
||||
centers, called availability zones, reside. Regions are
|
||||
independent of other regions, and vast distances can
|
||||
separate them (across countries or even continents).
|
||||
|
||||
|
||||
Azure and OCI regions are localized geographic
|
||||
areas. For Oracle Database@Azure , an Azure region is connected to an OCI region, with
|
||||
availability zones (AZs) in Azure connected to availability
|
||||
domains (ADs) in OCI. Azure and OCI region pairs are
|
||||
selected to minimize distance and latency.
|
||||
|
||||
|
||||
|
||||
|
||||
- Availability zone
|
||||
An availability zone
|
||||
is a physically separate data center within a region
|
||||
designed to be available and fault-tolerant. Availability
|
||||
zones are close enough to have low-latency connections to
|
||||
other availability zones.
|
||||
|
||||
|
||||
|
||||
- Virtual network (VNet) and subnet
|
||||
A
|
||||
VNet is a virtual network that you define in Azure. A VNet
|
||||
can have multiple non-overlapping CIDR blocks subnets that
|
||||
you can add after your create the VNet. You can segment a
|
||||
VNet into subnets, which can be scoped to a region or to an
|
||||
availability zones. Each subnet consists of a contiguous
|
||||
range of addresses that
|
||||
|
After Width: | Height: | Size: 667 KiB |
@@ -0,0 +1,575 @@
|
||||
<mxfile host="Electron" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/25.0.2 Chrome/128.0.6613.186 Electron/32.2.5 Safari/537.36" version="25.0.2">
|
||||
<diagram name="data-lake-db-at-azure-process" id="data-lake-db-at-azure-process">
|
||||
<mxGraphModel dx="1194" dy="806" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<UserObject label="" tags="Background" id="2">
|
||||
<mxCell style="vsdxID=2;fillColor=#FFFFFF;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry width="753" height="1176" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="3">
|
||||
<mxCell style="vsdxID=4;fillColor=#f5f4f2;gradientColor=none;shape=stencil(vVPRDoMgDPwaHjUIidNn5/6DTFQyJqay6f5+OMimMrPEJb6V9sr1Codo1tWs5YjgToO68F4Uukb0iAgRTc1BaBMhmiOalQp4BerWFPbcshE5Rld1H28YbB8eOwh+2FOahnHyypwsmMHZVMGBozCmFg+uAYeU2IwHcYgIO4ohYIPoAlCaaaGaGb1kUPHAkAWlZNWs1PWct17ajSdFM9GSJiE9fCXfrAav7WcHOUvy93Rb1fj72e1pvG/x37usLGYHIT/8YoKP00ohpTXqtL50pklZV9P8CQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry width="227" height="1175" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="4">
|
||||
<mxCell style="vsdxID=5;fillColor=none;gradientColor=none;shape=stencil(vVPRDoMgDPwaHjUIidNn5/6DTFQyJqay6f5+OMimMrPEJb6V9sr1Codo1tWs5YjgToO68F4Uukb0iAgRTc1BaBMhmiOalQp4BerWFPbcshE5Rld1H28YbB8eOwh+2FOahnHyypwsmMHZVMGBozCmFg+uAYeU2IwHcYgIO4ohYIPoAlCaaaGaGb1kUPHAkAWlZNWs1PWct17ajSdFM9GSJiE9fCXfrAav7WcHOUvy93Rb1fj72e1pvG/x37usLGYHIT/8YoKP00ohpTXqtL50pklZV9P8CQ==);strokeColor=#9e9892;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry width="227" height="1175" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#312d2a;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1"><b>Data Sources<br/></b></font></p></div>" tags="Background" id="5">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=6;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="61" y="7" width="203" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="6">
|
||||
<mxCell style="vsdxID=8;fillColor=#f5f4f2;gradientColor=none;shape=stencil(vVPRDoMgDPwaHjUIidNn5/6DTFQyJqay6f5+OMimMrPEJb6V9sr1Codo1tWs5YjgToO68F4Uukb0iAgRTc1BaBMhmiOalQp4BerWFPbcshE5Rld1H28YbB8eOwh+2FOahnHyypwsmMHZVMGBozCmFg+uAYeU2IwHcYgIO4ohYIPoAlCaaaGaGb1kUPHAkAWlZNWs1PWct17ajSdFM9GSJiE9fCXfrAav7WcHOUvy93Rb1fj72e1pvG/x37usLGYHIT/8YoKP00ohpTXqtL50pklZV9P8CQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="279" width="227" height="1175" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="7">
|
||||
<mxCell style="vsdxID=9;fillColor=none;gradientColor=none;shape=stencil(vVPRDoMgDPwaHjUIidNn5/6DTFQyJqay6f5+OMimMrPEJb6V9sr1Codo1tWs5YjgToO68F4Uukb0iAgRTc1BaBMhmiOalQp4BerWFPbcshE5Rld1H28YbB8eOwh+2FOahnHyypwsmMHZVMGBozCmFg+uAYeU2IwHcYgIO4ohYIPoAlCaaaGaGb1kUPHAkAWlZNWs1PWct17ajSdFM9GSJiE9fCXfrAav7WcHOUvy93Rb1fj72e1pvG/x37usLGYHIT/8YoKP00ohpTXqtL50pklZV9P8CQ==);strokeColor=#9e9892;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="279" width="227" height="1175" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#312d2a;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1"><b>Data Tier<br/></b></font></p></div>" tags="Background" id="8">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=10;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="356" y="7" width="152" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="9">
|
||||
<mxCell style="vsdxID=12;fillColor=#f5f4f2;gradientColor=none;shape=stencil(vVPRDoMgDPwaHjUIidNn5/6DTFQyJqay6f5+OMimMrPEJb6V9sr1Codo1tWs5YjgToO68F4Uukb0iAgRTc1BaBMhmiOalQp4BerWFPbcshE5Rld1H28YbB8eOwh+2FOahnHyypwsmMHZVMGBozCmFg+uAYeU2IwHcYgIO4ohYIPoAlCaaaGaGb1kUPHAkAWlZNWs1PWct17ajSdFM9GSJiE9fCXfrAav7WcHOUvy93Rb1fj72e1pvG/x37usLGYHIT/8YoKP00ohpTXqtL50pklZV9P8CQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="525" width="227" height="1175" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="10">
|
||||
<mxCell style="vsdxID=13;fillColor=none;gradientColor=none;shape=stencil(vVPRDoMgDPwaHjUIidNn5/6DTFQyJqay6f5+OMimMrPEJb6V9sr1Codo1tWs5YjgToO68F4Uukb0iAgRTc1BaBMhmiOalQp4BerWFPbcshE5Rld1H28YbB8eOwh+2FOahnHyypwsmMHZVMGBozCmFg+uAYeU2IwHcYgIO4ohYIPoAlCaaaGaGb1kUPHAkAWlZNWs1PWct17ajSdFM9GSJiE9fCXfrAav7WcHOUvy93Rb1fj72e1pvG/x37usLGYHIT/8YoKP00ohpTXqtL50pklZV9P8CQ==);strokeColor=#9e9892;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="525" width="227" height="1175" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#312d2a;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1"><b>Consumption Tier<br/></b></font></p></div>" tags="Background" id="11">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=14;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="566" y="7" width="270" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="12">
|
||||
<mxCell style="vsdxID=17;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lZfdchoxDIWfZm81tuQf+TpN3iPTkMI0hQwhLX37artYxtrsktyB8fFnS9aRGejubfv4uhnQvZ2Oh5+bP7un03agbwPibr/dHHcn+TTQ/UB3z4fj5sfx8L5/mr6/Po4zx0+/Dr/HFc6TDhFCGlXo/k4jjJCmkYdJ8LLbXwmIoMROkCOQXxbMCYlXZmfw/fIpQFlZ3n1pMmDu5zsI4Xr+9/fjFB5fFbFcFJeRGAEv5znjNORbSC4jsZHONA0FGL/+n1RHYtUtwBMEAw8eEvXwApF7ODF47OGeAH1Ppwh5lS6aYvCiwWDOHiBlww8QveGL0OAJEq7iZX9k8KhDik/gisF7MKGXSTVlineQVukZHPd0jC2nlV6AsKfLjQkGLxVg6OPqq4cXFpvYSzqiwcshnO/xXi4I93hJh956srMW+KLhYPiiMbmX6xA+4AfDl2vON/jGYxLE3jJubzgD0WzDNl7cktr2G812GfJ8u341XVQgmNviHWQTruDA23DJkPUJpyVe+aU66AI+UFtYraOWhdITeFspEI1PhALJ+ISvLrAAjwTORN6p41d4TJAM3PVkcWI0YXemEc3skYBzT/a1FSk55bauHtuZmGeBm5iL++Q1eCbNXIXz7NjSGvUi14yjhkvpuWWmOZZfPbtoor1xuXqs4rk104qf9waZxdHguZb/El66TjT4ometfHZAJvaSVBt89jN3llm0WnBMM3+S3DtTcJyADB6BjD0xaxUoPtS4LeALQTDHx6vA1s6cW2W01kgm+4W1W+rDQEyJ1vjeuZ4eeNYZSwE0JSdVSKY5lFRRSk8IpUt+b84lNou4CCJ4WhZkWS99SZA1SfpirI+nDwWyHveCrJ1piRCoE8irl1cE4ov9w7Fm4JNP3huP6k8I5EN7wz/vXl6mvwDXv9s3vwxN/xfo/h8=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="83" y="47" width="62" height="48" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="13">
|
||||
<mxCell style="vsdxID=18;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lVnLchs5DPwaXVEkwec5j/9IbZy1ah07pThZ+e+DiQbksKmh5JtMg2qCABoN6sAffj5++fFwcObn6+nlv4f/j19fHw/88eDc8fnx4XR8lU8H/nTgD99eTg//nl5+PX+9/P3jy2K5fPr+8nv5hvNlX0jk4rLLmbfLCv/96/PF+J9fp4u1vfwzWrJqvi45Kvmycnarka9Lb+uSJ/arEa9GmVxZjXSJipuBJ0uAXSj00MmTA2jL5GyPnWIPbBNFO0WO5FMPbTMl8DslsgzghTKCJyqA7wzFuecNrF67Jc+AXygBvnM9eDaUAoA7vbId8MxjzF31QcFzIB8A3NeNFT9R8IAf9Ip28IsjGwC/VDDFL4IPkecw4JdIOfX43urd7uFLpgK+z+QBXhwrPXyQE0HSF7h7Kac1r1bsp+PzpjiLrzFeizM6ym5/gxQV2/dskHpZM69uSOrtdQSppn5DK7nrGyLF1G+Iei93Hinb6YZgyPQUJlGOE6cl4yo/3YXATNkPPkwCxwOrilds33OkJQ4TH1gqsD/SEulJHByF9D77BKlnyE5JSk6kFWBrBTDUiW/p42r4ElBkJIXWGpWAlilHEQM/elfzTrGtJed7cC7EpQe3XptBhZdwrkSyA28DBdfjc6QAFGnFL+BnoagEFC1WSBMsR5pSlDSwAP1JcjbC3UvLMhbw3cBRYlVDpPjS9dMUX/qT7/Fdap1v0wyBIyUfIlC0NLYAwkCWytR/x01M2ArGgC9FVru4qxdnIf5ycLx/e6tFsdQGwPvh+pe7husXKwPhl1hjh25W16kgIunf2pDm1oN3qcWtuge+SQLg1TIlCK1UG4ZWrHh6td60W1NwYS7o/tLELZS2WMHVLp0er9YqcezB85DZufGVoscBXao/A3quBaHoQbftgAfbNI3GgoDUgjSW2GMLEacee6vyNRb7+XFjJrg1QJipS74163XJVFY6t5aQQcuZ2oHrfY51KgU2pWkfGgHqEhlQ8dI4GFI5DiQpWWlzD15oGkvJ/QRFVGoLP2/aEWSxqeGtVbSpNa5WMUzRhdS5R5c9A3yqbPzWeqYBghQrg/hWr3GPofoUGeyH88YhUssePG8YGXVj1Rg1uxvnvULoHEf80uNLYhhkHSYTenxJS5w3UZ8O/bSMI5dpnarpCaiShVEAXXpXgYlLnIu35AzSjsVJeyt5WoNzKKbkQCim3I1mLv3oipZBLeVVkjT4pi3PrbsE5D1/Y9YvTeu3/mcAfjPUKG2YpjeVJFoO6UrQHNrV0AZHTemZQI9mABdWBZIwA3YoU73f0qvNB3EyE5neOOhcfX2YkJi/y96o3t+OQ7NpxVOBwbey6978ZGCk88r7dyKkTLMTDS5kraE7vz97mDr6Db7/9lJ01rpzSLbGTMxtq9u7vj8FHPOX409ERipVpWyG8EkARoRUG+HeY0gYQjxLohFhSaLJ1L48uIUDpOnsklIbU1sdTABKqBr6zg1xeDHy0/ecMjwKlDk75uaySjqpA3iJlGRJ0BgXndpTlBgNb3FFI7DXG4zpwRdGxae4MrwBL0MEoqdhGBDR4ebOx0FFSWMs0JYLN2GqfVnkFzSHYgkaozRvnoq4nNv7RXuIxVdgqbthyjY17+pDrMU3lmVgnt59FkZDDVkGUZJNj2032aEv4O31toJn4qkiklrHETQRvr/nqtO38z3IQbFCSbI8zEwlSYo6S27UoAdNkLhlhy6pV+1pS9o5+F4fefd+c5GSRy1KAaIe228jqhJ64Csj4Iz/51OdfGg/KH07Pj1dfo/a/h9/gJKly49X/OkP);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="82" y="46" width="63" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="14">
|
||||
<mxCell style="vsdxID=19;fillColor=#2d5967;gradientColor=none;shape=stencil(lVLLDoMgEPwarhve4Nna/zARK6kVo/b194VyqJhI422ZndmdDYNYOXf1aBDF8zK5q3naZukQOyFK7dCZyS6+QqxCrGzdZC6Tuw9NfI91YIbq5h5hwivqFAeigorid0SIR77AOfJ7O6z4mgCWCZ9ykGxfwAsQqUAREJkNRIPeLlB6n08FCL69gBWZBRJI6ggDEft8fMRNOJekbjDOeMGHpmsGMr01M/vo1/7n++KXo9b2fYzhur/NnYdiZln1AQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="99" y="85" width="30" height="10" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="15">
|
||||
<mxCell style="vsdxID=20;fillColor=#2d5967;gradientColor=none;shape=stencil(lVLLDoMgEPwarhtegp5t+x8mYiW1atS+/r5QaipUaXrbx8zuDCxi+VgXvUIUj9PQndRNl1ON2A5RqttaDXoyEWJ7xPKqG9Rx6C5t6fK+sEgbnburnXB3PJ5BQiyL4oerEIxf+cHBG90u4HNzBlMOGduGpwwE9wiR2ZIDkb4UU4kMJ4BFqEZE1FivPkGS2f262xTScIFMt/E0gYSHDt6V9QUCiK8IQ8TA19vHxPz5sz/hJvgcUaWbxt3gsh8enSm5g2X7Jw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="99" y="78" width="30" height="10" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="16">
|
||||
<mxCell style="vsdxID=21;fillColor=#2d5967;gradientColor=none;shape=stencil(lVLLDoMgEPwarmQBNXC29j9MxEJqxaD28feFkqai1dbbLszM7mwGsbxXZScRhX6w5ixvuhoUYgdEqW6VtHpwFWIFYnltrDxZM7ZV6LvSI311MVevcA88AuA5FB6hTwFT8Xo5Bnij2wk8EVikEQHWwUvlTeGURPj3Zl/hO9f+CY+PsnRJOObZuj4nGLL5BLLtNsY7BZJsGHDz911zn4E/CK74hKjWTRMyOP2fh849hcCy4gk=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="99" y="65" width="30" height="15" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="17">
|
||||
<mxCell style="vsdxID=22;fillColor=#2d5967;gradientColor=none;shape=stencil(lVLLDoIwEPyaXjd90Adn1P8goUgjUgL4+ntbayJFqeG2TGd2Z8IgVoxN2WtE8TgN9qRvppoaxHaIUtM1ejCTmxDbI1bUdtDHwV66Knz3pWf66WyvfsM96GQGRHoVxY+AEIe8gEPgt6ab8RUBLCI+zUCwdUGWA48FkgBPXCAK1PKAVOt8yoFnywRv5PcBASR2hCERAG8x49OS2AzGCSv4a3uesKIYiDhqYvfWP/uf74ZPjWrTtqGF8/dl7RwUKsv2Tw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="99" y="78" width="30" height="10" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="18">
|
||||
<mxCell style="vsdxID=23;fillColor=#2d5967;gradientColor=none;shape=stencil(lVLLDoMgEPwarhve4Nna/zARK6kVo/b194VyqJhI422ZndmdDYNYOXf1aBDF8zK5q3naZukQOyFK7dCZyS6+QqxCrGzdZC6Tuw9NfI91YIbq5h5hwivqFAeigorid0SIR77AOfJ7O6z4mgCWCZ9ykGxfwAsQqUAREJkNRIPeLlB6n08FCL69gBWZBRJI6ggDEft8fMRNOJekbjDOeMGHpmsGMr01M/vo1/7n++KXo9b2fYzhur/NnYdiZln1AQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="99" y="85" width="30" height="10" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="19">
|
||||
<mxCell style="vsdxID=24;fillColor=#2d5967;gradientColor=none;shape=stencil(nVjLchw3DPyavaJIgs+z4/yHK5ajrSiSS5YT6e+N8Q6BYVPLdfm2osDpAdFoNOfEH77df/p6dwru28vz0z93/58/v9yf+I9TCOfH+7vn84v8OvHHE3/48vR89/fz0/fHz5e/v37aIrdf/z79tz3h9bKvVipt2xXc22WFK/nwc+XPy4a/vj9fdvh9S6a879hXOBGny9Jr2IMi+f7cfYmZeN/4ynuUp1z2qH2JA4U1vKPsAd9TAfzSLKrjO6p+xC9VN3b80CjmFX4pVNuIH+TIPOCXKf+QiRvgZyoe8CNFXuJHapC/L+Qq4Ad9pY7vnb54x8+VMuSfKdUVfE6WWE+fQhnRs6cwgrsROMnx8AjsyC3zTtG2eN0CZU+efIK0iUfsWLUOSjoqS+yYKMcROytQx45MPo/YQkI48eitLvuS18SuoTviChVPBEfOwtsCmWcCdOntCP0m3NkpcAWdi+3p6PIYQDduK7pwC9p90wmo+vaoZfKiBwxH760DO76ctEYZfi0j/kZuqLzQIyz5HgBcuJKg1+QZBegeShdRBfeNGvSa6Na62SQHD5WXk0bSb3WG0gvNGLROomIY8aNsXGqt7AmgNbHN+MlU1PpQo1ijgPgpUFmnL1qYRnhRgQRS63mS+pR6YgYfJqlLuSvpFfw2KU52KgSqdZPi5DwVn6nVEVwEui6J73VadXCZaQnAHSVgXi0UoO0cBci8pb60gz+cHw+mYBfrtz433PXQYEPl98Jb1+d34yOVvAyfpgRxGE+tpndKBhUTTwFDonYXYgWT5yzZKv0NbCnSBXmEFhpOdCldgoysUQeHzuXYWb7oVUg9M7kA+IUS4jsqEfCritybTey29EW+Tb4smVdQrXQqTAetaCjU1mZvNrVTWeEHO2zVqqhsOGj1pJVOZ4fis9God3C+kb9wNaMvZp03ij8PSvGlDbRa6Net8sGX+mX+8pgI/JMp1OetDupAkL45PlOr2HM1eJ0x1+DzlP4Gjz6hTumHyaVEB9ipd8M1g+Qn6m02Go5e/JkDfybWNcGYEs4E8Cg3ranYw4oGLfdrhOEXizqMrhE+OZyS3t8waDJGUfMaukMZmwXark7e9B1TXm9onmhHhJOXLcA5kaEMU0ruIhF6TqYmtLyczno+5zbZI9E3xquQN+NjdWeo+zaPkfO1X2yuXcV4uhaIpQPKl8MM611gV5nDTbB7hoPi3IAvynGFr5rr4SbsgHZyV0B7JBOwgOKLLuYlfpUjA+JtnQj51zl/6URU3JrV1yl+uoHfHAF8clP1W7Cx3JuhKB87fDt8rjA+uqXgi4lCdyq1Bm8sQTjvK/dJZvCsfFSL5mlAH31ROVzkfi9+adPkrdWv/kq4jZD+NqVfCa4dXiMYVmJcM9Sug+rRiQfDUdmqGRqzSjsvr4EXQqfC5oGC1gSvFdFYorw9fD+zS/b4AW08rF/44iY/7Hvdl/PDw+Vz3/H/+H1Pli7fBvnjDw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="84" y="48" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Oracle Cloud ERP<br/></font></p></div>" tags="Background" id="20">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=25;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="48" y="100" width="270" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="21">
|
||||
<mxCell style="vsdxID=28;fillColor=#FFFFFF;gradientColor=none;shape=stencil(vVPLDoMgEPwajhoE+/Bs7X+QikpKxSy02r8vFtJWrWliE2/L7iyzszCIprpiDUcEawPqzFuRmwrRAyJE1BUHYWyEaIZoWijgJahrnbtzw3pkH13Urb+hc3247yD47k5JEm6SZ+bowAxOtgoeHIW7rcODb8BhHLnMBOIREfYUXcA6oQNQhhmh6gG9ZFDywJIFhWTloKRbzptJ2o8nRf2hJdmHJP5KvlgNntvPCnLG5K/plqqZ7me1p5l8i//eZWYxKwj54RcbvJ1WCCmdUT/rY2falHM1zR4=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="288" y="272" width="210" height="896" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="22">
|
||||
<mxCell style="vsdxID=29;fillColor=none;gradientColor=none;shape=stencil(vVPLDoMgEPwajhoE+/Bs7X+QikpKxSy02r8vFtJWrWliE2/L7iyzszCIprpiDUcEawPqzFuRmwrRAyJE1BUHYWyEaIZoWijgJahrnbtzw3pkH13Urb+hc3247yD47k5JEm6SZ+bowAxOtgoeHIW7rcODb8BhHLnMBOIREfYUXcA6oQNQhhmh6gG9ZFDywJIFhWTloKRbzptJ2o8nRf2hJdmHJP5KvlgNntvPCnLG5K/plqqZ7me1p5l8i//eZWYxKwj54RcbvJ1WCCmdUT/rY2falHM1zR4=);strokeColor=#9e9892;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="288" y="272" width="210" height="896" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#312d2a;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1"><b>Ingestion<br/></b></font></p></div>" tags="Background" id="23">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=30;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="356" y="279" width="152" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="24">
|
||||
<mxCell style="vsdxID=33;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lZTRboMwDEW/hlfLsROSPHfdf1QrXdFYqSjdur9fWIBiENF4S5xzc20rcca72/lwLTLCW9vUH8V3eWzPGb9kROXlXDRlG1YZ7zPeneqmeG/q++UY99dDR3arz/qru+ERdXkOxnUqwp8YUYh/+9eIV+VF4poF7h3kfip4uzfRQPUSBPS9pA95D2xi6EExZBis6ikaKdtDHCPaAuse4iekUvaawCzcB6vBHRfOg89gjdLW5cC83iaUHQ212VSOKBNEYC/zmxQhM050BlOOhkDZmau09Hro/mj5TIsXDK+UKvsyEYyPI8k7UFoKNGCi8cHAyfeZW/C0Lhhe+4g70O7/uGMgvSWdIEhcv6zX2dn3koJwjEoIuitMQsBgSAoMmERHHYGb8zZRcuBp20DZOH/SeFg8R92prKo4Kafn89EYQnGs8v4X);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="85" y="903" width="58" height="61" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="25">
|
||||
<mxCell style="vsdxID=34;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lVfLctswDPwaXTEkwOc5Tf8j0zi1pq6dcZw2+ftSlUiRUARZN5nGavFcUB09vB2fXg8dqrfb9fLr8Ld/vh07+tYh9ufj4drf0lNHjx09vFyuh5/Xy/v5efz9+jRYDk+/L3+GN3yMOOOBcECh+hxPEMj/P/g+2v94v44APf7vECJNCM0g6gPHk4ig7WQ0HRmIZjKipdF0pA04qtlP/bnytkZM3mhQKAAsKN8CCLzfxeABzS5AACsBPBjdAiKouAcQdD6506UEiG4XgAAlwCKtwYEXChcshJYhvcIIhQsIPrQAAiWkNShwngOcEEMCYNv5KdFWAKRGYFnaBLTWLuPXJkuByRBdMFG3o2UJYjtZyQ3KRrQca5qtjERPGoJh9AVT6BEsMvo02b6lr4yoNIARxq4CrAgB97ZC6IXA4DKi4j75zVRxCWx93ZbMLYlVYhliHowSmWrDUm1ICjyrvmrD2RBV1fi2KBT3T7W+xVikoKS9igCLFXfyqxYtVivcqffLCM78jN4GiHxCYpHQTO8M+MjoQ26Xr8fZlFnMTarUunlSMEu7zLngeQjCWkiAEmYRC7QCwAAt9AuFRk+artuAU4YkRfXgIieQ9pSbbxLTGwKQtAkDl4nkopSjgZ+tTgsoXTBcvk5UmzAKSU0M3nGAF5KUm6Ayt8Ie5OauLIQ73UkAJ913bA6vApggMqi2aM6ClotmTAugPBlrNWB3hXTllFZ/WkCuDdrGvJLuBGyumxqShXCWtKw8tmyXz1arBdETNGFjc6SH+Vr/0p9O41dB/T//DEhH4ycEPf4D);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="84" y="903" width="59" height="63" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="26">
|
||||
<mxCell style="vsdxID=35;fillColor=#2d5967;gradientColor=none;shape=stencil(lZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXJi4m+m8Nm0By9k0kwYp5hj8oDdqowGsQEpyRgeKSQEqwLLzQffBL65lPzWZzGr0a56wc5/IHVIc7ArBvmbUknugV3jBH+iPqZ9oEvfiHVnLdz/z96GpxE9CdQI=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="139" y="955" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="27">
|
||||
<mxCell style="vsdxID=36;fillColor=#2d5967;gradientColor=none;shape=stencil(lVjbchshDP0av2pAYrk8p+1/ZBqn8TSNM07SJn9ftruAEAHct/Va4ggdXfdANy8Pt8/HA6qX18v55/HP6e714UBfDoinp4fj5fQanw709UA39+fL8cfl/PZ0t/1+vl0l16df59/rCe+b3uIg4KqF6mN7Exaw/1582+S/v102Bb1rLEC0a2ihot5xF0KwYRfCLOR2pHfapdQuQlKkg00evG2wPdXg6MAtAtyA1zW4tuWshI/gRvAWwiLQFVhXoxtwVIN7D1RjM5n9jXfpoB378fTEaGIKuykerB7Zqg2gMNYRWFMbSxZ0baxbQLBkAhhTW7sK4cBaprEraFAzZk0Q5mrQ+iCZXZywV4EWBn/CbHSX8hNqsYa3CwQR1QYEuKVsD6NWQGM6usds5SmTeesTS8JT0d/oG2JTtiVjFwVeGhsgCHOL1CD/dY3PT8Z8a93AW0FUZCUnVIFXuu8tG28aKn81CtJeF4Bc4y8l/OUDLKY22DggYXAsNij8Ffmivr1cYbeXQI8VjJUK6AcKkULhEZcK9JUKmma1RKnagVHDCMKLDGaZxn0MmrKUHiZmix3zyc+wYyH3c2yEZYjNdVKdaiLdGVCiLKhplqkRLMaW5mtYVWPmmM+Q1OQ2k7n2vq2nnfB06+fgp7AzitvgyoHTgWXhN4K1g0rCFDoduDGzaKT4cGDE7EHYtP8cnb2xJwn0Ci7lwvkhkyLPWw58mMDGkky+Ro4Bbge9aT4c/q+8GD5VJWxEZWx6dBwITO0Iygma0xEBbe2JJROXXOGpnJRGGtBD9gOBZB9IzAfxtpJ7XaZTaoSurkNFheWIiDxmYAKP47SbXly7NOf0GijzaKpQbOjClpw0rZVXvdCPIuPu/cnEz49lE78Ev2ounF6+nQu5V7sjP+enO/NPeWcquo0nbCzEJjD7N5/FO3dpKkQlj7BlJzeinJEdzmWaixoyrgl1AeHhvMvTZIVco1nsRWYpyyGLZkGpiRP17GZ20kJWf8lZlB3b31+5iX1Op5dvo9no1CX7Ww6FtO31t5x4s31+vmrL0XHdG1qqqRCQIpJACU/FbqtF0YtRiiL6P5m/ilTPUy4nWsZnJ6etwTaZz63sbw3N/WdrQ+PfeY/gtJUekRafHFksAPpNooms2t4r8jA+lG9Q96fHx+0TFv9ffrOKr7bvXfT1Lw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="85" y="904" width="53" height="59" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="28">
|
||||
<mxCell style="vsdxID=37;fillColor=#2d5967;gradientColor=none;shape=stencil(lZfRchoxDEW/hleNZdmy/Zwm/5FpSGGaQoaQNvn7artrG2mDmb4txvJBV/LVsqG7t93j63bj3dv5dPy5/bN/Ou829G3j/f6w2572Z3na0P2G7p6Pp+2P0/H98DR/fn2cdk5Pv46/pxM+5rhQoIQpyrvPecWBy/8WHub9399PcwAuEQ6QlwisITiHuA8/r5ADjsumugSYlk00r3gPcVn6XJYycBrBMUDUbFlp5/p6iCfN9tiyrPCwYstvLmUEl+81W6RwQbOdBk/yZg2Wn2LAsUAMIzD1Gi0rXABt0kmjU4JsBMcIHDQ7B0hD9lQkk3ZBYEMnhOA1vzB4NpojONT8kgFpxI/SSabizmk4O4im4HKs1V0ki9HAI3g/gqfcu6QnH1jzs2RqxM8R0Gv+pFrR/MQ3Oq4kQNR8zr2s3ghS6dJQZOh9D7XOjDy8ai2idju16n10mU3ixK0WLXFu9nBx1eIwb+r2UfswQIhGd7lcrPG4rruUgjRdLIOGFpfdCl8gGdVTL3GlS6LGZaTpnGk6qm1wBc6+NkXv+GZoFR4ZQtFwp8mXxk5fO/vL/vBfk+DW5Mjtel8bHZJ71qlNMSY3SrUzu5eJ3RWdH3kgo6xUJA29xKdWoMpPHryZXVIhlzWfU4O14eV6LrXYCHHYV9Kd3thJjJDNpcIEbOxMtA6GL2dlk7/IS0M7mypqzFTEbspez1/sPdr8Exh8V/faGJPR5zVepkuyo2Rdfix9V8/VuqkoEoY3S1TMpPmitS2/XC00V0t2FcPn9RgXdcfySxelcDN/6Ug2pirGkswoT91rmrFg9b5r06zYUfpF9eVCBtt90lcm/WmXmeQ3B8plTO3+BAYvE9cZ9TmCufsiEdpRijDMnWVGG1eVFyRj6TH3TV0OZ1tv7awr57tlrasAeeiv6M/7l5f5Df/ye/tKL0vz3wG6/ws=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="121" y="944" width="14" height="14" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="29">
|
||||
<mxCell style="vsdxID=38;fillColor=#2d5967;gradientColor=none;shape=stencil(nZjJctswDIafxlcM9+WcJu+RaZzaUzfOOE7rvH3BSiIF0oKo3hwZiIAfH5bxTj98HJ7f9zslPq6X88/9n+PL9bDT33ZKHd8O+8vxip92+nGnH17Pl/2Py/nz7WX4+/05WaZPv86/03+4DX7BQ0hOSnwND7SBKP89eRrsT8c3am8UddAQ7bJDtCAccVAGNOPgLThLHDAivWzvHAhqLxVYzzhgRLF2UIy9Bu+JvVg21g6U7jbOWvdFUqTuTLVI3aclfmu21Kq8vpOGnF8nboIaZ3E7jFPZ3IZIChadqRbw+rQsYHfWKrUOU9yWhtScjD4tbrn7O1mWgqG57RPevGlDPpq2z1fSbQfJiqDtqFopWTsMV5hopu0adGIb02JTv/zH7F+xp7slCojUwVoI3AskSAqodRCYigUBqnKI4EjK3z8vQ0xyLCkaTNiNj5zMnXdTo1WAOFmprL0Yi33T2UpOPT4+cgYck6HHfCpi/JTC/QzxrVRDj6IzDPjMeG4TDYZhEgPQNCTvQTJQYoqmapOsw4LoTkFwVHQfqeJYBFkpPivVpDiW13iqeGHgbrRIkKfRJsqYJWvbsZE5vj/oTYm8z0HXcxVDUkxIRoChEGDSWnGK6wDe1opDLbr2ha4iuqhE1xZMpKJjxRXDlFZTF2ZEHEQmQ4XU0m25Qq3EstLOX+kLpaYAOjsPHUTlUPd2LbpCsirM51NjVFiJwnCBP0+gUWEZy3Yv8DtmnEsseTVuedFDfQ6k8cxI2NgX8jsDQvIllwEmWDkg556VfLYBCvrONpLn0Cf0XV5Ok+RYPl9JjuhrppNVM52R/GCYDBtsFX8B4FUY6BskvxLb1ktBcg4WJF0YRYel4eLKpScbhfNwCdN5lkWfVWsSHSuce0bXGNyfhk0nF9CW5m11hwT2zkkbYIt5U9OVeNISqxKoM24WqCyXxox8KnjasrIRvBrmaXtTuZty1/fBFpra80Pmk2fpwJG0OCsdUTbJvOc4h7yrsgMuNPZemS3BPFVwVWqq92yhfhXmPdW7bOoseFrn3Fmej4H52GR4irKeQjiYFTOFNh/mHQ74ofzG9Ho8nYafqObf179J4aPh9yz9+Bc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="114" y="936" width="28" height="28" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Microsoft<br/></font></p></div>" tags="Background" id="30">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=40;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="77" y="970" width="152" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">SQL Server<br/></font></p></div>" tags="Background" id="31">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=41;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="71" y="987" width="169" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">(on-premises)<br/></font></p></div>" tags="Background" id="32">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=42;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="60" y="1004" width="220" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="33">
|
||||
<mxCell style="vsdxID=45;fillColor=#FFFFFF;gradientColor=none;shape=stencil(hZNNEoIwDIVP020nbYSha3/uwShIRwSnguLtBVtpU0V3Tfoe+ZIGhutrlV8KJuHamfZU3PWhqxhumJS6qQqju/HEcMtwXbamOJq2bw42vuSTcjqd29v0hcH6VoorNbkkPGxGALzinZXve2P1whlWPMucQVAHDNImXPhwoVI8RadAqnBhlvJEhVVr3QSQQAGRZ78IgdIBR0XxwhYo8RsvnAohXiiZJBxUVJbWnGc0V/RYGEvwe6N0KF6+MMMY0hvE57vIuREhKah/3eXhRDtDQf+u2Hjw61nqurbbHd7H6zym7K+A2yc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="86" y="156" width="55" height="61" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="34">
|
||||
<mxCell style="vsdxID=46;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lVTRcoMgEPwaXpmDQ5TnNPmPTGOqU6sZY9r076sF5cAhJm+47HJ7xwrD3bU6Xkom4Tr03Wf5U5+GiuEbk7Juq7Kvh3HFcM9wd+768qPvbu3Jfl+OE3NafXXf0wl3q1OGGzOpJPxaRHIs/oGD5b/feisQdl9rrnKnEJEE7tIiJueoHMlBipvMkXBNcpBQXOe0elO3xC1VWKTIeC4e2aWSGcq4VKHfsSnUod9RqGVomA4LY1aiPiLXIqpPTpbzBHVcnpjEFQkT3YfjIoLEeGO3RCFW1yZ9RxiaJQFIjyoOVuh1O4hbwYVHjSnBdRQDCNuCsCWYJ7u0BOyVqAJ7KaYQejNmyePsj3bgIAHAtqY+cxJ1s2L1e/hT4zJLNkd30XA857loev6TyfQCsbogufSSRZe4OR5IW9xI2Ljwj+q5bhr7JtP9+BEeIfuA4/4P);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="86" y="155" width="56" height="63" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="35">
|
||||
<mxCell style="vsdxID=47;fillColor=#2d5967;gradientColor=none;shape=stencil(lVjLctswDPwaXzF8P85p8h+Zxqk9deOMk7Tp3xesRIoAKSq6WTTIBRZYgNJB372dHl+PByXe3m/Xn8c/56f300F/Oyh1fjkdb+d3/HXQ9wd993y9HX/crh8vT9Pz62OyTL9+XX+nEz6nfVKItEeJv/Ozgvh/4WGy/v5xm8wlt58XFPhp4VNNC86DmU3mlXnHp54eTYQYZwtdW6xAagU2UFBBIQXFW1zS9H/dj/FyfqkYoXwED3bkHGMjZvPiG3rvFfWvcDhgJNuswCLJylHo5VQOk3Er5zQ30f1wKTVbxbLPmhZiNKADsXcbpVjvyLRo0Iz/qEAFyoOz4CgPQYEzlAlk2IURvJcQJYOP4CVTg4DoKLwX4FiBdgoArawayiJA9BQ/newovvIQefgxR7bUAZaTbOPXw/gbVSKvlrGPTLPiTymi4JWNLpkPgzKsNsz0mbFIpS2MZ1+R8Vw8RakVCdl9kR1ZvBUgNXV3sVpTqwZhKH598gwWDDiGX3upS9XnHGd8Hj5la1tYe+23hIuVqYd8dJSLe1g6OsI1EgSjo6Nco3OGvq5cY0Ey5XSUaxxItalcPCsOO0dHuelk1jk6yk1emk3lYvxi3Lka5SZiNYVvlYtuey6GRrop9zuUKyOovdJVJu8ZSRexPKuVjnQXq69Ltz55XbrJy23pNvFvabHR1u4N7P6HzBmywUPwI0YUqx1kI7JshLZyIbCu3xHOuIdyxWY3Cyy/ZlkIbbPwLAHD5GML4sUn2SULCbf8eqf4Nas2WrmDdlpk2ZKhl8m5tEirGbhtRNqJGrM+RPcMWgkQimI39V61kPUU40FD4Lp05HKwodipNUYGLxarqjWaNu6NS43hCa8IXW2NmBoG3nbGrYxXO2TZwQL3TZuRoqEdgyw9IF8mh/f0zRaw1562mFR/kdin0a7G9QeC6R0FoVifcXKxyoqw5b1oUIVoNb4hdCZ0ffL6hK69XJ/Q2/E3Ezri7GJDpy3DkPM8KMPxG14zoPFlQewd0F5nlY0GtLeNZtr5XIy+Pp6rc9enc+3i+nRugm+GbdnRJ7fT1R17bU85a19ZLbt5YvoV8xdlFRlby5V5xscfy4ef5/PlMn03qv/nH4pwafrIpO//AQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="87" y="156" width="53" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Other relational<br/></font></p></div>" tags="Background" id="36">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=49;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="54" y="222" width="270" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">databases<br/></font></p></div>" tags="Background" id="37">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=50;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="75" y="239" width="152" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">(on-premises)<br/></font></p></div>" tags="Background" id="38">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=51;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="60" y="256" width="220" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="39">
|
||||
<mxCell style="vsdxID=54;fillColor=#005ba1;gradientColor=#005ba1;shape=stencil(hZPLcoMwDEW/xluNLEGw13n8RyYhxVMCGUPa5O8LtQvIeXQniXvh+CIrXnfV/lIqwq737Wf57Y59pXijiFxTld71Q6V4q3h9an354dtrcwz9ZT8qx+rcfo1vuAVfjoA0ugjvYaJzMPw72QXD4eqDQwcBEWQ6WnTqwRuFEUZFbA1YGwUsBaKNn6xds2BEwWcyIP2ODyWbJTC5ZBtOgFryWQtmJQEzC2QlpMY3mE+ilPIUtChgxUmQ0TGhToMJlEEnoLOGX0QkQWf9k+hTyFms//5kYSTj8hz0uBD8GA+/WLV/A00NQzFv9snVdbgYy+fpTRhG4Rbx9gc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="91" y="320" width="47" height="54" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="40">
|
||||
<mxCell style="vsdxID=55;fillColor=#e8e8e8;gradientColor=none;shape=stencil(lVLLDoMgEPwargR2W/Vu7X+YqpXUikFt8e8rxRck2vS2DDPMDhmCcVumTU6AtZ2Sj/wtsq4keCEAoi5zJbpxIpgQjAup8ruSfZ3Zc5Mappme8mVe0FbHGTMaYIM9nxllwRe5WvqtV5bPfcEEhCGNwEIaFijAiQWeTONqNMkGdDk7zgD0xF3v9dXJhrmuYUQxdH2Z6/kzr5cW+BJt9tzu5a5xkPUw6fb/3DW0/52z43Yv9Dl7WStR/1OFcVhrVIiqsi3c3vu1GyFbWUw+);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="91" y="311" width="47" height="17" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="41">
|
||||
<mxCell style="vsdxID=56;fillColor=#50e6ff;gradientColor=none;shape=stencil(lVLLDoIwEPyaXpuyCwHPiP9BBKQRgRTQ8veCi+kjgehtO53tzDTDMB3qvC8ZiGFU3b18yWKsGZ4ZgGzrUslxmRhmDNOqU+VNdVNb0LnPV+Y6Pbrn+oKmvUCIdQfETOfwxBP8IBeiXydF/MBf2IA45lFEkAYD4cYCb00jAZHg4stBl7OjDMDD2NU2r24ywlW1vaHLwB/zemkXE4EradtyXRxEPQxqf5/rQvu/ORsTkLiqhrMXtZHtP01YBtOiSjYNldC+91u3QNRYzN4=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="96" y="314" width="36" height="11" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="42">
|
||||
<mxCell style="vsdxID=57;fillColor=#198ab3;gradientColor=none;shape=stencil(lZJNcsMgDIVPw1YDCGO0TtJ7ZBqnZuLYGeK0ye0DFfmBhTvdicd7+oQtgatzvz11QsvzHKZD9+N3cy9wLbT2Y98FP8dK4Ebgaj+F7itMl3HH59M2OVN1nL5ThyvnDAG1KaXljRWERv0KH+z/vAQOqHyPIHVOZEmCJVaumhVlQT1ML8llE+ZYNuRjo0AtklNTLMnOQGtLdJrPVGgpS/L7q7NEsblZolsL1JR0IjCqpDsEKuFOA1GJf87zgJsWbLMEj21d9dGVAargaURV0v9+eP2/Bz/+az9i8VquvR8G3s33+3oZo8SLjJs7);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="100" y="320" width="28" height="4" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="43">
|
||||
<mxCell style="vsdxID=58;fillColor=#f2f2f2;gradientColor=#E6E6E6;shape=stencil(pVnLchw3DPyavaJIgs+zY/+Hy5ajrSiSay0n8t8HzA5BTlPDlUs3eUyqB0CjGxid+MOP+8/f707O/Hi+PP119+/56/P9if84OXd+vL+7nJ/lpxN/PPGHb0+Xuz8vTz8fv17//f1zPVl/+vvpn/obXq73sqcc6i1nfl2fxEgm///k0/XCw/lxecESHx9P8tvKe46nQqUcX7DGvOf4bwf7/gv7/NtAvL/AntwuQ19+Xq437HaFKfjtyvaIHV0xzIvbDlnKcTu0PWKjh7hlg7hle3vkMrFdoWt+FdwlCnvwQjHvsV3Ud27ghXwG7EC+rLFdBmxP3iO4LQDOxA7BnQVwR26NbRHbtsoO2LyHtpKuhNAh7qFtbocOsbPbY9tEJULFDTkAT2TtVPEIWbfxRtYrlRLAC82RcDzF7nt+WB8lD/C+leIIPvda9Q4oUHUpRkT8QAXKXumSAF+SuxCk8cbWRsRx9b5V4CK8L1mGbGUyYf+6ph86zpYhv8yV0cQ0bLMHTp3GLXPkgKGeLDA0Ul7WyLUcKmxuN3rIlNIeWYjFSBAy2ByeeCmHomEQsvDeATsNxGwoADVML0gjC1PKa2S90nS4S3NDZrJ+D+7tVOnSkBTcx2Ykx13Z2N3Qfabo9ui1U4BnQTiCqhC0Wg0/MMUlzUU2HNA8SK9g0ePUliFowV66BGXwoRCbNR3hp57Yhp/IgxNVKgDrgmQJ4IdDDb40th7DoxdFSSy2eZqqH92sirELbGs4btJ9nH7IfpS2xegjWkIMZDD5gZIDdHm0Rvd9cGjwSWVa4Z26hOKnSZOrCkDnyam0JJ8U2k3wCeCFwZh7r4nubZ+Q+Vj6vSEMF7Z3SU1LDl6WlRYqjqbFN+hygD7JbppaJFUWUiWnzFonQhsnO7xTMC3VMFo5fUlQKZH5CH6UQrOoI2fgaXZJs0iK5SgHW0KMTtKKH/pLdqasZVLuoDVVFkD2xeAMdooMFDN+hvhFTNbDU70DnSLSGsCe5JSB8vvBQbshAbwPsFy8MoygSvo2Q4zDCMPIzJGgUcZFZXs0bSqwa91ebfa7kKxKOjlpqZY6EDMFGE3FBBjii/M+Itlta0wLUE4FCFBSFZbsljs4fDBjeuUlHXiw8M2DCY3Bt3qbG6NPZTLOPqLMCfCdgjX8QmACInptIOozn1mCi0MHsCBHCRxIuA59ZXVo0nGzEK4ktHQfmY0s9LSZFgIvImf30E5FpkFzadvuEPZ6+5bOcNDQBfdf4UAG7MExFdyRBdu/WXHZ4T3MnGIdBvDrGwHhpfU84Nc1HfXENR080pOiqjhOnSCn41v2qc+BnLHV3ViTrwZ3FD93LnfnNzhzB4Lwk+0EafCZAF3MzC3RvZ2iT7mTqjEPQhcjjdDskjPPe3A5lRdjh3SbtvrGqO1T1qvHqzCWtx+vvZx3x9PS1WTUjdCBSQZSFB5P0AVShgDd/4ruoepDaDddYu8qc2w3h3shK7iKEBNne9l2AqwWkadKVwEsU3h52WRBuhC+eMhErn7V9zhQdckMZtcPX8N6wv0yeq/Td4fvWq8sj93d+3JRYLWpAwr2uL+xVnvu27DVxAYgl0hVxPgtJdA43x8N831Yxi+mkKDLpdYG8Kt8AL4kjmFklt9lwGBuDhX1NwP9RPbQWetbAn51AnczfnHXsLbX7pM6VRRlseaf+2Dbt90AGu/D9KFVltKlxQmxAmiLTJIG4ZNybbBYj1+yin4eHr4nrcMPffEYhipwGGlRFyd4HCnrpO+m6NefO4Of2C959Sg+oX8yGFY46H6Rvvi71e+fR4YBw4LF1R6CfaXOPIBedIF9M/flTgT42lUofXka6CVtDmfaQfjfttu/wSrkh/6ntG/nh4frX+LG/8c/vcmj65/t+ON/);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="97" y="339" width="38" height="19" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Azure SQL<br/></font></p></div>" tags="Background" id="44">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=60;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="74" y="378" width="152" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Database<br/></font></p></div>" tags="Background" id="45">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=61;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="78" y="395" width="135" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="46">
|
||||
<mxCell style="vsdxID=64;fillColor=#FFFFFF;gradientColor=none;shape=stencil(nZBLCoAwDERPk31tjuDnHoLVBmsrtf5ub0sQRdzobiZ5ycAA5pOuRwVSTMG7Xq3UBA1YgJRktfIUogIsAfPWedV5N9uG/VgnMqnBLenDxneZEOlGip09u4pRQ/aG/gTPhFf0Gf8J/otGcdXRkjHc5n3/rC+OuHosDw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="83" y="451" width="61" height="61" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="47">
|
||||
<mxCell style="vsdxID=65;fillColor=#FFFFFF;gradientColor=none;shape=stencil(UzV2Ls5ILEhVNTIoLinKz04tz0wpyVA1dlE1MsrMy0gtyiwBslSNXVWNndPyi1LTi/JL81Ig/IJEkEoQKze/DGRCBUSfpbmemRFIl5FBJUTESM/YAizgBlGfk5mHVz1CBKsGuHHkqifVPZSqRw0fQwMDFNUGuI0mUyHMBqxK0a0nSTG5SoEMRHJJy8zJgaQ2ZHn05AUUgiRNY1cA);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="82" y="451" width="63" height="63" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="48">
|
||||
<mxCell style="vsdxID=66;fillColor=#2d5967;gradientColor=none;shape=stencil(pZrdbqMwFISfhlsLbLDxdX/eo1LTDdo0qdJ0f95+QShq6WFnPOQuDd/Y33EzKqmowt37/ultV/n6/XI+/dz9Hp4v+yrcV94Px/3uPFzGV1V4qMLdy+m8+3E+fRyf55/fniZyevV6+jWt8GfO9a7vppCv/85v5MY18zuPM38Yjl94n24O9BEGjJHKEyHOL0+orZ20fpdv5Mm8xkfliQ/nl+eT/PVy4QaflzcHyMhWSQ4QpYIA6VnvnU9SbdRASjBgjFSeCHGe9Iysb3sj8mRe46PyxIfzrGdkg5XaqAEyslWSA0SpIEB6loJrvVQbNRB7GDBGKk+EOE96Rta3vRF5Mq/xUXniw3nWM7LBSm3UABnZKskBolQQID2Lreuk20A5MH2wlPs6lSdCnCc9I+vb3og8mdf4qDzx4TzrGdlgpTZqgIxsleQAUSoIkJ51nZPuAmW+RrzVEXFoQ3HSMLy6LYyIw1GtjIhDGYqzbuHlV5qi8nDaFR+Vhz6cJ61qo+ulmz490MCANVJ5LMR50i2yvmmLzON5rY/KYx/Os4aRDWxl9AAeeUVJDmClggDpWUguS3+O9IB3uRd6IPNYiPOkZ2R90xuZx/NaH5XHPpxnPSMb2NroATzyipIcwEoFAdIzn10TlNrogRYGrJHKYyHOk56R9U1vZB7Pa31UHvtwnvWMbGBrowfwyCtKcgArFQSWp/QNrp0H3/VC4+KNgYy+/28kiQSBl+cRootBWT0GdxuP5hxtkgJr6gWB5eHE/vqf6sIdsvSLyuUfgNEkSLTmXRBANZIaIcFN58Dd7Ha2uD64Oql0UdMChcWDGQ0RV+qIuxKKzzhvJfFs1kHlpQqC06iXFnX9/3WvFzfBAN0Iwu0hOr74fEblZTgc5kdcvl7//kzL+Nb8PEx4+Ac=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="84" y="452" width="60" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Table storage<br/></font></p></div>" tags="Background" id="49">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=68;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="63" y="518" width="220" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Azure<br/></font></p></div>" tags="Background" id="50">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=69;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="92" y="535" width="84" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">PostgresSQL<br/></font></p></div>" tags="Background" id="51">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=70;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="65" y="552" width="186" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Azure MariaDB<br/></font></p></div>" tags="Background" id="52">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=71;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="56" y="569" width="220" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="53">
|
||||
<mxCell style="vsdxID=74;fillColor=#50e6ff;gradientColor=none;shape=stencil(lZjdUhsxDIWfZm89trz+u6b0PZgSSqaUMCG08Pa1ullbPs46cJds5Hz+0TnSerI3r493L7uJ9OvpePi1+7u/Pz1O9ttEtH9+3B33p/xpsreTvXk4HHc/j4e35/vl+8sdR/Kn34c//A/vyzinlXY8ivTH8sRo/f/79yX8x9txiTfLz3NSzp8HmHaEfqcSo8M55vwoJZXMOcqeo6LydI6yJSrQkB6VAXoe4yzwgwqu45MHflAz4KNKY3you2XKGBcA71WIgM/zdoD3yiXg53kP8V7NBvBBkevw1gA+zwhXL6JsiaJrfNvio1PaAN6oCPgwK4LDt1ZF2+J9xs8jPDkVYfddXKdc+CZPiVq+s+VACl8FwHPQcPVUk8rgkEpXsWNbYBsFG+9I+ThC65KpK9molFqyLidR0EbpuUVrAOdBfghusSz+gFigsvgTUBXFFszaH551XnEAdpZQRDbKnJUfJthtDTJj4dsR3KgZ9puFD3BTk7EKL0KaUyeyHOSHHkNFqh9C9uBwdpWKhFs47D7Ha9DWyrN4bEe3IHEWogd8SXypcPBXfmSGBiO8Q4ieOoOj1OKN8KG6Vsy6siHb/kaQdXWjpb1CcavOIM3dtXBS19gBkq5mmChsKHJTc6Omt/Utu2hgu64F2HddplPgWYBgrFWloqg72PWi/u2OAnNOVwupruIQ3pKdMMDG7TawOR7sHLqYHJASrhetzQmv+OR62btxuTO4qqOuhosDEWXjiwftYKNN5yy5XhGUMJGHtVYWe/5ceucRHrZbqEbUafBUoT9Rp9FXruha/u+68LkroNxL2JaezSfAgXOX0rlaGBbR3P4YLGamePOKj3lGsPHsRyBu7tHgzOfyaIPP3R8sv44pfO4kL9QUOPnSokq8G9YU0fsKPC6f+2isKeAt3J5jNQ3rDLfgte8XtRzUJl4hPoTZQUGpLyeyjXHjra+vPaKHWvvT0kqsL1Cih4J9ryG2hKSh1OuIanhz7BaesGnMrof73i+cbW/Yxcgtrb4X+40nOPRsagSdxIVzZ+u7lnT4mprHJFy/SE3hf1dznv1vjBdiEg6IOe87v2OrIsD3kq9RG3xpJsIEoaJLY+pNcNvx8hMzLjPCSoUJXrB7cBye9wW/B35aZzTwe2rx+UAM+n1+M4OWgvMBVs+Zhvi4vrsOKjzy+1sKVhpeE6Qy8L3Tubwlaa8pnvbPX7nS+WJ4/lBvjx72T0/L5ZP8HW+b8qPlpsre/gM=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="82" y="626" width="17" height="17" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="54">
|
||||
<mxCell style="vsdxID=75;fillColor=#50e6ff;gradientColor=none;shape=stencil(lZfZctswDEW/Rq8YLgKX5zT5j0zjNJ6mccZx2vjvC1YSl8sxXb/ZMugjErgX4GTvPl4e33eTUR+n4+Hn7s/+6fQy2W+TMfu3l91xf5JPk72f7N3z4bj7cTx8vj0t398fU2T69OvwO/3D17KOFSmbVhl1Xp5opf59f1jCv38el3i9/DxHUvO6QLcr1JdZYwKpuMasj2Ikp9cou0Z5slvU+igGikO4IxdbuCwxGvCOLNA9GQZ6Cdrgjoy/Qrca6IqcBzpT+l7jA5PGzVtSoeX7SNEO+Yoit3w/k3ct33oKwPeSZNi+tRRcy3duy9oFvokEh+8MadviDed8bHiWrIYWb6qyWx+xozCP8Hour7w+4jnXw8aPZGH3bMnB5skbgG8xl7ZOHoq++teVoyl0YANp16QBbIjNiKwIwTrndyPLYeKRKwqxRasWPMex1FRLFUlHjVQLIhdFR4cbVqBxCTLDs9bkocxEeAyHLQkBjUuQ9tOVPJegS3Du0BoqTCo8wHHPOtdHLTDItTzyYSjwUkK6sEBgvbtpJmVaegqagb6d2MDdoNTkkLmD47mXdFXGPoO4t7q/xA7ZR84aqyuzpfP4lq1acGpmYGrDXiZSUpBv6GQMXlK9VRGwv2mv4grYP8sJFufwoK0qF7YP+s8c10ug4L+KWRs45VSELVpahbm1uKVVabDvJBvQdZhLjys1h807tepO2GaIlyUe6Lnfl+bhs9orukW6J8cdnofNS8YUrTv+Zk+ZH4jR1sDTJCTA4JAGqTE8koGakzVd54zE6GuhG1wkykPqJYqHjh67wSFpGfaep8hz0Ttj+1TQxTi3vkt+rqCRyQru9g05l5gYr25b3GPmK9tmyLmswTZaJye7Th5iBmmXKDfsZXU1FQNQyK8qsxpccP99zScjG/MrNVVTEyi+EmblflcFn4KGRZ+cpJ/ZsKElV8LTFwe0LV78TsPpFwu85LXlYlJN69vf1E4Pik8vjk2mn2Su3lbSmhZf34IK3kLy04UK6Cbf3aqLWhiOj1Whnys54O5FaJD8pEawvDSq4kUxR6381/3bLbfaG8PlQ7lAP+9fX5f7d/07Xrjl0XJZt/d/AQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="131" y="674" width="14" height="13" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="55">
|
||||
<mxCell style="vsdxID=77;fillColor=#5ea0ef;gradientColor=#0078d4;shape=stencil(jVLbDoIwDP2avZKtDRKfEf/DyJBFBDJA4e9lKYatBMNbL+fs9HQVmHblrdUCZNfb5qk/Ju9LgRcBYOpSW9PPkcBMYFo0Vj9sM9Q55e3NIV30at7uhZF4sXQUkBOlSlJ+Jex9sARW1E6S6KQWggoZcgRWmGBDGpFjMBhjR3aFLwWACM+hrD/aUpKhaMw0/0p6Cj9R5pO59EfCEHHII3PoL22rMPFd73lk/1mZ+vDfz8F6NIWpKro5v8+PbC7RgWL2BQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="91" y="634" width="45" height="45" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="56">
|
||||
<mxCell style="vsdxID=78;fillColor=#f2f2f2;gradientColor=none;shape=stencil(lZPdksIgDIWfhttMSNoC1/68h6PVMtbWwbqrby9d2BHojLN7lx5y+EKSCl7dut21FYS3yY3n9tsepk7wWhDZoWudnXwkeCN4dRxde3LjfTiE7+tuzpyjy/g13/AIvtqApNlF+AyK0aDUj7INhv3dBYeMCQaMjJYoScQgPKgQnlFgBq1iDi/RUeIKNH1iew/n6PRiWiS96UgLOhdwAvz48LTg34dXwJzTqxoameMxR5MBLNgI0qTo3g7JkBpoVDajMr2sFIseSdC6GJAErPMqFUHRI982U+eFLrYjr/QP6/Rvgw/e23u0fR+WPz0vt91L4U/hzQs=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="90" y="653" width="20" height="18" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="57">
|
||||
<mxCell style="vsdxID=79;fillColor=#f2f2f2;gradientColor=none;shape=stencil(lZXbctwgDIafxrcahECg6zR9j0yz6Xq63c1sNm3y9sW1AUs7dqd3WBZ8iF+HgR7ejk+vh8G7t9v18uPwe3y+HQf6Mng/no+H63grq4EeB3p4uVwP36+X9/Pz/P36NHlOq5+XX9MJH/M+dG7a493n/B0Fgvy1fJ3dv71fZ3+0G7Dt8DibPrz1WQwxg9DiQ7NJBMQvXtS8OO6xhYG9plMGDJqeM0TUfBRwrPmJIUTNp2rZwKcAmTXeQ9LwROC9hntANGyEaNgInPfYnAAN24FnDWffz11MTpPLE9eHqGRXddggR4KYNBkhkyYHASJNJhATdojApOEMsht2QJBo4A5c1PSSBGIVD92rysuQTOxYMo73+BSAUfNLYN6ITgQkRvQMlA2fWqF8dtNy/BbfgxPNp5amnV80TJo/XclkvJcm24q/yLbBL8m7CLTmk613BgqGz+CS5iP2WKjJi7v8CNnIHxi8pvu71Iu9CBscMGk2t0fbYJs+xxmSIWOrwEouXYXFZD0k8+q5KLib9bmGWNlyX+tItVk2uEQIJuxS3WhyTkoL+F/NS7Mm02VL6Trz7K3trzLujl7avpovp/G8GkdM/dSNDXddmWsNt+uWCYCmRHKfAE2rANGUSB9ctV/acaiv+8/pWRZ98r6Mp9M8uNf/7aQupnnK0+Mf);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="114" y="641" width="22" height="19" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="58">
|
||||
<mxCell style="vsdxID=80;fillColor=#50e6ff;gradientColor=none;shape=stencil(lZZNctswDIVPoy2GIPi7TtN7ZBqn9tS1M47T2rcvXJGgCI3Y6c6iSX0C8PiAiZ4+9i/vu8maj+vl/GP3+/B63U/0ZbL2cNrvLocr/5roeaKnt/Nl9/1y/jy9zs/vL4+dj18/z78eb7jN53IAR49T1tznFUTw8e/K1/nAt8/LfALLEQvJlyNlicCWlZudV5IDX99blkzZQfNj5NfksqMsWXBuRA6pHWlk6snBQXY92dX3CjwgmNjDA5gx3AGqsKPEKPAIJvTwDD4peIboezja+vINekRA7OlcqKjwnFOXejzvejx3mSeIKvNoII/5flV0PuOy4sdV7nmXaKPAkgFDK375yg1+smBU6TOkSWsOdfRG0ib0AGgVnZNLQ3pqcsFWMaf48kWCJ0jU4zOzgsKz9IbBZwKyPd6i5KPi+c21HpW/yNF29JQhD0ufIKjgvYWslc869z09cPQK77Oo8d58oFRtg+/ySvqJo1eGQxFU8ClKpiueLzkq5WdWHo7wGFfJZwescrg1oeXY89ubW/YhYY9Pvspoy3YgkAp+oekaKjjlOuwXpIJfiPHebHCoe2QXV6kPRhxOYncQVOm5zspx0YNTsfsEOOw0fMYo0/EchLp2vAt7OivGxRXeK891vupjC09yxSvepdocu8pbFb1tXUkqL5tq9HITt/CQde4zkKq8UZpHEXglk3yxaC7Xqm6QuVQq7exA+sLF2jGa4H2rTfP1uiQXjrvm0G847VFfOA5cVz2IuTSzVyMGsrPp686xj+A8g1BcwZ3qNDxRRNXneJdqs5who+lspUOvYy/2us35Fd7ziKbue1JVD1buvxht/sdgx3MBpR4eDSi5J2oNpH5OkjQvupxZXzczTD0nR7d4QjHMmy6yVD23XlTpi6G2tfg++OPh9H9jMP9oQ/Tb4XicZ/Dl/3ro5qV5YKfnPw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="81" y="632" width="65" height="46" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Azure<br/></font></p></div>" tags="Background" id="59">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=82;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="92" y="691" width="84" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Cosmos DB<br/></font></p></div>" tags="Background" id="60">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=83;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="70" y="708" width="152" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="61">
|
||||
<mxCell style="vsdxID=87;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lZPRDoIwDEW/Zq9LWUHCs+J/EAVZRCATFP/eYYdsAzW+td2922mzMtxey6zNmYBrp5pzfpfHrmS4Y0LIusyV7HTEMGW4LRqVn1TT10fK22xUjtGluY03DOSLOEajScCDCknC482rsif9oVdkCEggeIjGEfgWGASVwChMmsQchVGgqzBpEvLQfrWStUUJDuKb+QMhuHgz8ERnteDyTnDWVBzcVTiNvnFnCN/o9Cyi2CUEFy8Ab3xWB+hLfOJVxFnuI3+AnA1L6kEsG/HJB1zOxkNfBf39Hf/V62D++4WsKlod+9zfFV2iPcP0CQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="83" y="764" width="61" height="62" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="62">
|
||||
<mxCell style="vsdxID=88;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lZXRdoIwDIafprc9aUOBXjv3Hp6JgzMGHsQN316whbYBQe9K/INf/iSU4e6SH84Zk3Bpm/on+y+Obc7wg0lZVHnWFG1/YrhnuDvVTfbd1NfqaJ7Ph0E5nH7rv+ENncnTyFENWRJuJiI5po/Ap9F/XRuTIGyG4pG2GYKkQCetKOE4imwo4tJGOpyLbCjmEfp/XhaVD+slTPipWKX1UlwBWhFcryZXQRoTXs8rpKpF4L4cEfJSPeXtXUoJbsJjGeI6v2+ugESGtJ7I8avkOayXsNwMyuoliFmP5ayeGXyHM5co+/IYbM7su/qtnYA3WgzrlqUqtAxCv4CaRYcQQqfWFwYCss1lAUYnT0R08iZ+GxEAbKObo+RZc1S400S+sNGCeOgYKJS3zVMpSDWvrYfTv7YdWvMkpt/JqZsjV8y1CFGJnQsfnXU310a3P7iL4FSUpblH/N/pxdGHzKWD+zs=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="82" y="763" width="63" height="63" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="63">
|
||||
<mxCell style="vsdxID=90;fillColor=#2d5967;gradientColor=none;shape=stencil(lZNLDoMgEIZPw5bAUKuurb2HiVhJqRikr9sXSpoqphR3w8z3zwMYxKqpb0aOgExGqzO/i9b0iB0QgBh6roWxFmI1YlWnND9pdR1afx4bRzrrom4uw8Pr9gXOM6cC8vQeSjGUb8/RC6QYZoIix0t+V2Ia4dcFbAYSETBbf5OAwraO1gX+jLz5jhIEy1cIaPI7NSSTZAFm6TkpibDhXDH2E0zpIf0GYqQ1vh+9E1L6PZnHw8WwLr9UrH4B);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="113" y="779" width="21" height="18" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="64">
|
||||
<mxCell style="vsdxID=91;fillColor=#2d5967;gradientColor=none;shape=stencil(lVTRcoMgEPwaXpnjLhZ9TpP/yDSmMrWaMaaNf18tqByMNH2Ddc/dPQ4E7W/V6VoKhFvftR/ltzn3laBXgWiaquxMP64EHQTtL21XvnftvTnb/fU0MafVZ/s1/eFh6zKYShAGu1VKYvGLHC377d5ZurIEDbLQrkSFNfBAC+VaOmRwCOYSyZEoIjlkV0iVVPdKVj/qhYv7Flc/iosvuSlgbChjIYG4tPdTJ6NwRgaM7VFEeja2V6LidmLsEOOT2cgdHXhtmn+MR3KYINlQlFnOQwEPBDyMVzCHCbJkSUHgYlrLHQYd9CzNHQT4o3+QFPVUlusCQc4FWIbGs0Yh56msK33utpJaB9fEs8Y7vpWVSSbnhDHHxfr6XExd28fL/x6+ViNkXzo6/AA=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="104" y="800" width="18" height="18" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="65">
|
||||
<mxCell style="vsdxID=92;fillColor=#2d5967;gradientColor=none;shape=stencil(lZJNDoMgEIVPw5bAQCuurb2HiVhILRikf7cvlDTVJlXZPWa+N5kJD7FqVM0gEZDRO3uWd916hdgBAWijpNM+KMRqxKrOOnly9mra9B6aSEZ1sbc44ZF8vMR7Hl1AnqkCHNPyXTkmQ6/NxCAoLnYzgyjwAk8Fhhw+e6ENhrWTyf/pZAZSsoB+mpvgrCVW4CC+39vpvk/pmPZ/4xBKKUqsfgE=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="92" y="778" width="20" height="18" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="66">
|
||||
<mxCell style="vsdxID=93;fillColor=#2d5967;gradientColor=none;shape=stencil(pZRRc4IwDMc/TV97bUIFn51+D09x9MbAq7jpt7csDNp0sO18S9Jfwj8JF4GbS7U/lwLUpXPtW/lpj10l8EUA2KYqne28JXArcHNqXfnq2mtzJP+878neem8/+go3ylsbmZs+C9SdIlqpL39HeG2bAM8kLNKHq6Pqmp5hgHVMqxtQYHDvg7vOZV4MBMYEjnqhmNenInELjYxK/o8mEnjTU4JO2/rutIg7nyaD6WLwD5v5dZHx3pHTmdT5fPUE958zZmkIQYYeUwqMp5Cx9a+k1vEYgh8OOfTzHFaxTk5znR4ALjSQMSkzTGvQDSYQzkyJa5VPLeFJ3BvTWTjZuqarEr7zM+JDdIJw+wA=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="84" y="771" width="60" height="54" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="67">
|
||||
<mxCell style="vsdxID=94;fillColor=#2d5967;gradientColor=none;shape=stencil(nZLbDoIwDEC/Zq9ktILwjPAfRIYsIiMDFP9eli5hw1v0re1Ol5O2DLOhKXvBgA+jVmdxk9XYMDwwANk1QstxiRjmDLNaaXHSauoqyvvSkCa6qKv5Yaa+kHPTA/zu5wXBrewc+G80SoIYXfg4abIIfdymsA+ilEoz2JIlwGuYkdJdAJEF0AVeuqWxJ8c/iaWJb8Z9q3V88GyOWwbfTMPX+2klX+AlWDdfy7alw3Hft5eylOjKMH8A);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="84" y="765" width="60" height="4" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">OCI Object<br/></font></p></div>" tags="Background" id="68">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=96;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="73" y="830" width="169" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Storage<br/></font></p></div>" tags="Background" id="69">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=97;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="84" y="847" width="118" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="70">
|
||||
<mxCell style="vsdxID=100;fillColor=#2979ff;gradientColor=none;shape=stencil(jZTRcoMgEEW/htcdYFHkOU3/I9OY6tRqxpg2/ftqgWQXotM3WA9yuOwgcHdpDudaaHmZxuGj/m6PUyPwRWjd9k09ttM8ErgXuDsNY/0+Dtf+6Ofnw0Iuo8/ha/nDza+zGlAtq7T88RX5N3v1cNf2BNYWSrcOv11H/2sV8AIqE3BFeXnTgTCgIhFKCpQOEAYIQWOAYgmcWdeU4PiRjAVZbplKbmkqqCpuKrllkWuSXUOl2Nak5/IVN3sWm4mSvELJ5a5L7mWSqpRJqOQqkTNPZfM+SfBU1c6qJVd9SAQrm4vS4wQvW4K1XDULiss6B5L3aXYVqe7dLcrSG05DjLIml6Vb40r3JcmS4z3v7ixaElvUz2Rp/ryH77mSK0VK/LMBGDwPHk/Mqe06/0LR7+mTNJf8c4b7Xw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="82" y="1063" width="63" height="55" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="71">
|
||||
<mxCell style="vsdxID=101;fillColor=#FFFFFF;gradientColor=none;shape=stencil(jVPLEoIwDPyaXjN98jij/ocjKB0RnAKKfy+Yaikocsumm85muyUiqfP9NSOc1o2pztldp01OxIZwrss8M7rpKyK2RCTHymQnU7Vlivi6H5hDdaluww0dzsUSpBymOH1gh1H6wjukF7oc0RWoYIl9aA3ezvCYg7J05vNpx7Fh4cPCOITYjnTCZ1gYK5DBb4XUkydBySV91FfHgSpfnlvA1/sWNzLEk/tVWxhCGHn6Fsgfp95OR8Ci9fSZTdPV3QCbW+9eY7K+ez8xD5BYkaC/gesLF9ajLgrM+vh8Gu6+hR9DbJ8=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="99" y="1072" width="29" height="36" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="72">
|
||||
<mxCell style="vsdxID=102;fillColor=#b1cfff;gradientColor=none;shape=stencil(nZFRD4IgFIV/Da8OuTl9N/sfLjFYBA7R8N8Hu2bYamu9nXP4zh1wCdSjaAdOGB2dNVd+l50TBI6EMakFt9IFRaAhUPfG8os1k+7QD20ko7qZOU7w2KOxweiSuhOCSuqvYFlk9JDC58ni2HyPr7aqshIw8gyjPM9YsVLPiK41DxhsAOyBjzfc2ssP8J/v3oFBvL61l0rhVtLz9zWECFcIzQM=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="122" y="1072" width="6" height="6" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="73">
|
||||
<mxCell style="vsdxID=103;fillColor=#03a9f4;gradientColor=none;shape=stencil(pVrblhQ3DPyaffXx/fJMyH9wwhL2hLCcZUng76POtC25RLt7krdlkKfaupRK6nkIb75+fPfl8cHbr68vz388/v30/vXjQ/jlwfunzx8fX55e6a+H8PYhvPnw/PL4+8vzt8/vb//+8m6z3P768/mv7Ru+384FZ5LbTnn74/ZJdCa3fz/59Xbg09NnccAVE/6XvXMm+GP7YEKa7aOx8Q77bGpemFvj5+exZmWu3HOn+Yl3LhyY4+Wsncx9NJP1b99ebuYO7fcPfDH15k773d8+as3Eslv54abod6uwW1UT8261fxS8SXWF3oqJccYP0ZQG+Mm0DPjZpAb4lAcN8KuxbonvOdodv41H6vi1mdZm/GhNmuEr5THAU6jc0vmV7lpneDpTA8A7g+j02DN6qaaA84fRAXhJJnsA5+/dkYo3EHn5gB3cKs+fXj1T5PHq7NMdKyfj0wwvw7NjZSrx8HBf4LPjlHY6pXawRIGvgE8hA/xUTXOAf5b4iaosAb4oKT+sArhflmfQVuHnVT+TijwwSDiePG4AdxHtRvW0kKdO58pPnNVMzktwigIUaVGZQvF0M3jqXysTxdcZO/b6P8qTZBwQlDfVATh5B9LEmQL8kEUuhW5klxen4usZ2cFt741coUmRs1XckMHldslK/PADFhgpMnX48WBFEaIP912YiLZCpIUjezfwxgG4CEnPqcCUfTHU1GWwJEUKdXAKdZzBC3YCaoRDclxMceqwIcPFdSMgqwZ0KKowaKPudqjumQ3kgSvscaYw7rOe1UtNg906M2Xj0jJnxBGmpoQtPHXVxK4LxgFBkFWALur8SSehMxbx7eA4UTEJqpRFxYAPTHQjcZY5Syc8MAQX+8AmGoG0qd2pjO3YQZ03TF0KiGqV5xUvF1HRo14GhQnx4hE7LLFLUdRYNDXm3oWPi3VTQfW+exeSANAMhT/9MLJwcRGZjhRY/l4LOLUEJCmRRyzaVD8SKRmGlb032Ysb6mckuygjP6zQ77Ikg7bq+FjsM5fIEzubZGOX7CCP8ICDLUVeq7eUZhzKXO2wbVpc6jwZiq7zSKoAscuodp1JB3W2ALGHda5EpV1CGFUuErVqjeuAmqhMCgSLrNI6WTJTCg93OFxSJeNsSS0CtAQxRPUKfrc6gqfC0LPl+OZelBZFq3xGJsd7L195cHLaqx2c6h/jLiLU0QWVXAr8Js8QXKQTt0RQzJSZAbHTGEou5zydKaDiZDUxPDheFmZQRn2ywYqfKUIcuEQpFwTH3QdmSUMzdZ4XSiM1DvwnT7BLM9QNWUH4ajUeOiuN4RYyt9lOP0fwNM1D9jSvRmOasJHjW1TpQzM1dvZNZi8rZ6s/0MKkuj1cnxIaR5BNdwO87f2M4WtvlwfwlIVjkmR13jVChycZm6C9D6Xb0b1TG6Fuc7SMq7zvwP1cR3aJtx1ePx93cuX4s5uTRnB4c3bpEFDYLWRw+pDP+7qrURfLO6fTacx5sAbcEhOw3fjkcsZbtQuSpTQP1T+YvjIg2xkWy3zmkXkqovbql084P15Rezqr0jG30QSOXbNt4ZaDqRgdeCMCKRF5AOrYYayCRUoAtO9d7ah/K5WdrZptHIQltfHAohRw/ZEqvANQpZBG/McugDQ+aAcqVws9TOz1BA3g1omtjtwe1XZUfjM3TAi6fMgO39TC7fT62/oSmEA6VggliLtVIw51gAzLydPIb70FGqDMKF7BW+gAIjdFAwTtdJrz1FlxopfFxP0342Sr1vLSiJX0VOozLZyrhXvtZzVCQ2icV780VbR1LlZFj9tUA/2YrALokWJHGxjJWNRajly77gx0BtVsrqYAEZCVg1qkQBfQI6QeE3QmslrDE3MBFeQ8ZPuAT6PwRDI2pII4dhQDfryFOcIPyv2agomnY1bwuN7aBAk2gGF1BG8VE8pv7kzYjHcKH2rRDTFx+fJjcynBG/ieBHjGy+ch4gZ6Zll7MfTUBSKIEplTLMgs3l3kZ4ePas90mvl0Bt+6yJri1Qr6XtZn0Fa8T2iLSUee2KklmLpWkOIITy7YN+S1uprKY/O5cBipMrucPGUo+JWCh2KRYe06kqWvyJfxmoGF5Bo+80vYLmLdwBrwhZurH1a4C6ZiiTi6jBn+CL8xvfDkhoOjeIckZHRB2eD0anJYHXGF5yW309/c8YNJGh/F9KaA0P1n9/diNHLasx0/80zM/k+Qfl6QysXwCznmdFqJJQfuhZtat1E3teD90+TfOjCOMaKsuE+j92WJBm3FLyfm4p/ZQp64RC8XlMjdB+BlUuXXKXs8Wq/Gn++XIw/N//EAcbrzxwdIIJd5g11cH6gvHsgR3iXCforU0vw2j9T+4u2fdtK99ic+unCA/uCfn314+vTp9us1+f/4czX66PZTt/D2Hw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="106" y="1081" width="15" height="23" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Azure<br/></font></p></div>" tags="Background" id="74">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=105;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="92" y="1126" width="84" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Blob Storage<br/></font></p></div>" tags="Background" id="75">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=106;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="65" y="1143" width="203" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="76">
|
||||
<mxCell style="vsdxID=109;fillColor=#005ba1;gradientColor=none;shape=stencil(pZXdUsIwEIWfprc7STZ/e436HowU6YiUKaD49iaU9GdrGxzv0vRsvmZ7clLg6rRbH8tCidO5qd/Lr2pz3hX4VChVHXZlU53DqMDnAlfbuinfmvpy2LTPx3VUxtFH/RlXuLZ11oKORUp8txNowcrbzEur31eHJb0EHMlfL027vpwUyFQhTDtzVZ0Gk+g+JcDLuwg7UXy+iTCJDGXYgsZwAegZ3AApDk+kDm7ATeBSLcINGMnhQk3gihh8QhaOk+8NnCNr8IaTJQNrsCa7aw2Go/W8N1CB99xMRs0XiJHYaRD+UTEREM2LyYD2ywW8a2QTvneqEOOuBY11466FddOmU9vITZwaVHbRLaHGuTE91KBjfA+K833aV8/3YInxfTLjHJ+SnXu+B4GMT6CZa8KHa8v41HcJu8Z5zPA9O6qhhp2W7n90cJP8NYQT33w4Dwu2HVY8lmnDitlQiyLMhVrcthx/bS7UYnezoRZEXfjMHu9osAl8OdSiTbKhFozT5cDvoRYdav8WaqFE50ItHo9sqEVbE2cv2OPfN+REHwb9dbyt9vv2Nh++59d3mGqvfnz+AQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="378" y="175" width="47" height="41" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="77">
|
||||
<mxCell style="vsdxID=110;fillColor=#005ba1;gradientColor=#005ba1;shape=stencil(nZTdTsMwDIWfJrdWbOf3emzvMbGOVpR16jrY3p6UdLRJUEHcuc5xvmPVjuDNpd6fK0HyMvTda/XRHIZa8JMgak511TdDiARvBW+OXV+99N31dIjf5/2oHKO37n284RbrtASJYxXJe8ygBPRfmV0seL72sQKjgAjYTCWY18gbxdTi3imjwapJw4XmkVmC2+a0cFoY9QaY1ozK1GTQu9wjmtSjt0AuN6l8ajKILK+CwVHGdoAZHB/uZ7gD7VM4glcZ3IFfhRNom8H93NSEYuDs7wSR1ilcAeZw/0vnCrwp4B5TuAanUjhKmaINWCrQPhnLdDq+b7j/Sy7XmprFWEzy1IC1YHTe07wTXC4b56offf5hPUMwL/exadv4NizP88cgpOJDwttP);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="361" y="159" width="31" height="57" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="78">
|
||||
<mxCell style="vsdxID=111;fillColor=#FFFFFF;gradientColor=none;shape=stencil(hZNBEoIwDEVP0y0TEhVdo97DUZSOCE5FrbeXWh2aFGSXpD/tS5ooym/l7loohFtrmnPx1Ie2VLRWiLouC6PbzlK0UZQfG1OcTHOvD96/7pzSWZfm4W6wPm+ZJYuFy0J4+Qh8vK0XV7oOxCkmROPi/d34q1N/OE/m+FWnoRwsMveFUm+JC0i+P4gHDM1Vlv3DA862miWzJecLCvhGUgBOGLaEuGaQMe63kEtKh5Vx0h5CUv0ww1pIamikP+Kvgbcz6r0E7ROi77cY18JHwFLcHpqcx4nh7Yx+7I+6qvzWhOdyTbqQXzHavAE=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="408" y="200" width="8" height="8" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="79">
|
||||
<mxCell style="vsdxID=112;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lZNBEoIwDEVP0y0TGhFdK96DEZCOCEwBLbcXrEqTysJdkv60L7+twENXpm0uJHS9bq75Q2V9KfAopFR1mWvVT5HAROChaHR+0c1QZzZv01k5R7fmPu9gbN8uDrbx3CVhtBV4ZScrrlTtiEMZIK6Lz4O2W4d2MQoi+VaHrhyMJOkoud4gFSA//yceELRlshU8oGz7TbDZUT5ngHclBKCEriVINT8Zfb+ZnFM6WB/SBYJTfTDdWZBrcMUfdtdA7fS856BLg3f9xsca6RMwHtSX8y8ziXgKlmdfqKqyv8Zd599kKtkvhskT);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="393" y="200" width="8" height="8" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="80">
|
||||
<mxCell style="vsdxID=113;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lZPNEoIgEICfhquzsJp17uc9mtRkMmnQSt8+DQsW4tCNXb6FjwUYbrv6eCuZgK7X6lI+ZdHXDHdMCNnWpZb9NGK4Z7itlC7PWt3bwsS340zOo6t6zCsMpm6dJ6t8rhIwmgy8o4OBG9k6MBcJpnH4dNdmaW4msyTDheYuDoMg4Si+vFgApADa/TGuB0TNniyiB9Rtkybpmvo5B1gyHIAaui1Byvx0DPvt4b6lo/UxtRK+1UfTPQv6DEb649010HYGvfdFbQEPrjPUGukTGAKpr+dfzSTwNLDPvpJNY36NO+9/kyllvhjuXw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="378" y="200" width="8" height="8" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="81">
|
||||
<mxCell style="vsdxID=114;fillColor=#eaeaea;gradientColor=none;shape=stencil(lVJdD4IwDPw1eyWjFabPiP+DCMgiAhmg49/LLF9bgsa39nbt9ZZjGLVF0mQMeNup+p69ZNoVDM8MQFZFpmQ3VgxjhlFeq+ym6r5KqW8SwzTVo36aDZrmfM7NDPCB+sPJw+CDXIh+7RXxfXdgAoTw0CdIwwKFwcQCZ0wjAcG8Bm3CjizAfNcivK6cNLgtKY5eCLaoo/nTrGMVuMeFrbm9yz5jz+hXm9ufs2/Q7kcO6wXCVlwpez5LWf2TgbFY85PLsqT4bd/dvI0QZRXjNw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="361" y="153" width="31" height="11" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="82">
|
||||
<mxCell style="vsdxID=115;fillColor=#50e6ff;gradientColor=none;shape=stencil(lVLRDoIwDPyavS5bK0yeFf+DCMgiAhmg8PeCReaWoPGtvV17vewYHtoiaTIGou1Mfc0eOu0KhkcGoKsiM7qbKoYxw0Nem+xi6r5KqW+SmTlXt/o+bxhoTgoxz4AYqd9FHHYv5ET0c2+IL/2BBVCKy5CgAVYolAsLvLEBCQjea9AlbMgCcIxcYbty0RCupNpzqVxRT/OnWc8qCI7S1QRcodE9wxrlMnB1vzpVIY88p55P+wXvIyTfo6tqOVteS139k4OpsBnKdVlSBD/f/cxNEOUV4yc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="365" y="155" width="24" height="7" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="83">
|
||||
<mxCell style="vsdxID=116;fillColor=#198ab3;gradientColor=none;shape=stencil(jZLRFoIgDIafhlsObiF6XfYentTkZOohK337pFEKF9bdNv7934Ax3N/qvC8ZiNtgukv51MVQMzwwAN3WpdHDHDHMGO6rzpRn093bgvI+t0obXbuHdRipTwrbAmKiFHiUvgtHEp/uhtQRnSNyEbsOV3IGI1AaxTxSTvEpSZ6gU6HXNLl0l3KhtrjWFXxuglz5aDscBmghfLAMyKnisAWOY54qH7x4wneSJPG5q+Ew6Pr7ztYWA/TqJWEZUPrwH1cO/7jR7f8LMQfLKlW6aWgT1+fh6s0lWlvMXg==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="368" y="159" width="19" height="2" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Azure<br/></font></p></div>" tags="Background" id="84">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=118;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="371" y="220" width="84" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Data Factory<br/></font></p></div>" tags="Background" id="85">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=119;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="345" y="237" width="203" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="86">
|
||||
<mxCell style="vsdxID=122;fillColor=#c74634;gradientColor=#c74634;shape=stencil(pZnJchMxEEC/xtcu7csZwn9QEIiLkKScBMLf08NYW7ekUYqbx+5drX4j+aQ/PN99fro9KfH8cnn8cfv7/PXl7qQ/npQ6P9zdXs4v+Omkb076w7fHy+33y+Prw9f9+enzJrl9+vn4a7PwtutZsako8Wd/9A6i/ffNp136y+tlF5e7gFKg41VFUh3xpvavktHro1dg5VVCtxLXR+dBmNrv/fmhirINMgqQsxhFG1+0YH0bX53F9SspRBuhJSEmgYFT78HJ1nExSX0kp3VomsrofrZtZYr4oJA0zqIg+eIonoviizwoEOudNtKjTmv7MioQvlEIEtw0sxBAkdYMCoJucwsGdGhzCxo8WYUgwJg2PVQ0etoBFrwj/i1sz01tBURH/FtwqvXvHMhA/GepgX9nQWjm3xH/zoAgrY+Z0fxrKV2qNPdf6ZT6O7L1tigV8S8hLOSfpUb1F+DJDqwtq7xKyjL/abGTfx/BE/cCXJy2nwajiHuRmzi3nwepW/foK+X6VvZ8TiVFFEBMJ3PEXMnO9kC8466KpPnRrtLEuwZNsscY1bT5Uccblj1tfpSS/kSLT93j1udr7yajZWFYvFthiknjYVqNDiWzygiSBmeVaytBBqz2yeoCJJ1MW2+NkggOadoAO5T0kgGLYSCLrJOyNjtipSs7Z8jKLWk3rhCFJSvoISy3RSLvOh1Y4lonEo2qVERWYEn77V3CR2C1Cvx8snGwWg0xtnXogNUaiGTJOmC1+BI09d8Bq3V5RNVgJYMdpRjYOFiK1DpYa8tjsGJmkYKNgxWrFOb+OVix/hRsHbDiysaF/LPUOlhry2OwopQl+4CD1cq0pdbBijoULR2wWgGacL0DVoNom7nnXDWhTOoxWNGupljnYN1iDFP3CFbLss+Wx2DF4hvCkw5ZUapxf8RJNizerTAF6/SI1aEqOWBRpLIVoGc65MVksBJaqDQG1oiKdCGo6ADVSDYiGCqyyDpQa7MjoGJ8huxOBtQtZzUuEAWqVKnBl4HK5zjn6cHJXIwDnLXXERcxNj/dmh0uKsvmYoeLCs++5D6kw0Xlj16kOBdVAE3fT/iBE6U8GQ0dLhSpdS7WlsdcxMxo/h0uYpXC3D/nItY/kMuMDhdxZeNC/llqnYu15TEXUcqSwcS5qHS6u1jnIuocY3GbQmTkdLCoZCrIMheVgECOEB0uomFNucS5uAU5LX7nwInZ0+bvcBGLT0/7HS6yzX/Euf9XmIJRhgP4YOdLshmLTq6HyeMp33vim3xbjUqmYNJMX9EqldScpciKB5gIlCowHO36YAT7/O5csFuMlltWQTwHduNWC62mHfkAlDiT6G1qFaPiKzO6bqYLPgUbk8YP5cr/2/n+fv/HoP6d/kWAX+1/L+ibvw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="382" y="467" width="43" height="47" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="87">
|
||||
<mxCell style="vsdxID=123;fillColor=#32bedd;gradientColor=#50e6ff;shape=stencil(pZTdbsIwDIWfprdWbMf5uWbsPdAooxqjqMDG3n7pEqAOWjVpd+6pT77YSdzw4rhdHdqGzPE09G/tZ7c+bRt+aoi6/bYdulOKGl42vNj0Q/s69Of9On8fVmPmGL33H+MKl+wTBPSji8xXVrwDlB/lORt23X7eICB+ang5DxmBj5YiOQuCWbpQWYZAbMkqkngQLlmcJTSm5BRBHDg7R48OgtV06yB6TY8GiDWdIwTU9ECAVvM5AMscPyBY0Xx04KPmuwAYNd9othBw0GwDbrbxYwWabICdBlMAW7UdDUTScLJgRMNpFp3WcKTZFIGqM0/bqYq2FmzU7OrAHV139ws6kTU4MPiqauT7oVB1s241B/Cs2TGV4ObYqUapWn733OhsHuhx0pzrzcKbccJHnH+bV8efDf99/bUhBfdhs+l2uzyrpv/r4ZSkPNh4+Q0=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="361" y="450" width="39" height="28" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Oracle Database<br/></font></p></div>" tags="Background" id="88">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=125;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="331" y="518" width="254" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">@Azure<br/></font></p></div>" tags="Background" id="89">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=126;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="363" y="535" width="101" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="90">
|
||||
<mxCell style="vsdxID=129;fillColor=#3e3e3e;gradientColor=none;shape=stencil(jZPdbsMgDIWfhlsLbAhw3bXvUbXpgpYlFU239u2XyGQJSP25MyeffXQIFrS5NPtzLVBehth/1b/hODSCPgRi6Jo6hmGsBG0FbU59rD9jf+2OfD7vJ3KqvvufacKN++TUgfK+Pu0YbEP3EDQIXq3hwzXyWMWABaNTR1JMBeRZuiFLyoKlRCXJONAuUcQS+mUWldQDe62AqsJ/NXk2syCx8De5eaVhlmZz7cHZp9kRpCvMTe7sNPjXyZWUL3Ln/2jh8/N7sHl6oQaszzMpPd/DfywEsnkqB1TcaBHp7SeXgWOxvOhTaFteiPX3cgNGibeHtn8=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="370" y="772" width="23" height="54" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="91">
|
||||
<mxCell style="vsdxID=130;fillColor=#a0a1a2;gradientColor=none;shape=stencil(nVTRcoMgEPwaX2/gAIXnNPmPTGOqU6sZY9r07wsFUc5RO33Dc+92bw8uE4d7db6VGbL70Hfv5Vd9GapMvGSIdVuVfT3YUyaOmThcu75867tHe/Hft7NDutNH9+kqPH0eB1W4JGTfISDB5L+Rk8e/PnqfwAMgwDnFsyf6EJtq4hIkAiggxAptU7czmSzRaAwU6q9gztg6lP8XqjQIsWmTgjx1yqYwnTqFNiRTq5QETawS1hue2iWpA5ReIiChnxUeuRQgEvrYV6TPDWhM6Xe71xIkX7QfKwcyY0WSm6JI73bU8TKN5AgK1+c0z4hiELfUzlN4lCYNccsOy6RqXSIxC0Sq1kKM3CJ3vlByW5aMaryaE7V1gXBPGLHSOLnRLH0pbNOjArRKZWqQxCE59rr18vliojuPf39H2cO04K510/j9OP9PF6IN+WUqjj8=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="394" y="772" width="24" height="54" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="92">
|
||||
<mxCell style="vsdxID=131;fillColor=#3999c6;gradientColor=none;shape=stencil(lVPRcsIgEPwaXm8ODkh4tvofjsaGaZo4GFv9+yY9UoFp1b4dewu7s9wJWp3a7bERCk9jGN6aT78fW0EvQinft03w41QJWgtaHYbQvIbh3O/5fNzOzLl6Hz7mFy58z2rQZr6l8MoIfp82TN6dA7MlN40FR5EeIYkga4YuiiGtwejIipCsABcWMaQcLMpUkv6Ql5NbW8gnD0etCowq1BU4natjLm0BKVXufJ+khFlCtoZK3bOJucXawOOAnANLuUWJhckF+NXjjf1kmLUG90SYCmSZZvLj9DNGNvd6x+mDmfsXeSpuo33wXcebkfbLVZggXiNafwE=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="370" y="799" width="23" height="27" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="93">
|
||||
<mxCell style="vsdxID=132;fillColor=#59b4d9;gradientColor=none;shape=stencil(lZNLcsIwDIZP463GlvxcU7gHA6HJNE2YEFq4fZPaKbEypO1Okn/rky1J0OZS7s+FQHnpu/at+KyOfSnoRSBWTVl0VT9YgraCNqe2K1679toco3/ej8rRem8/xgy3eE9JOd5BeY++9WDCd2QX5XXVrMgNGJqrD9cuZlfxPCDYdCFFFILWMXTDGPKYJMlXDqRPEkplBfAqqYirnrCNA4sMPsucYFqBZ3gJiuFJg87pco2MDoxj5FnSiaMXZAuGkeUvj87bkzdnataTKhU4zYuUeYkElvjnyLxAA+RYjevYoS1B5dwQQCH7nJ9Bm4bELLry0ExT4sHh34f3n7O+kA/GY61OVV3HrZyf8zUcQnGFafsF);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="394" y="799" width="23" height="27" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="94">
|
||||
<mxCell style="vsdxID=133;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lZdLctswDIZPoy2GBPhcp8k9Mo1Te+raGcdp3dsXqsQXZEnWTqIBfcZPAAQ7evrcv37sOlSf18v55+7P4e267+hbh3g47XeXw5WfOnru6On9fNn9uJy/Tm/D+8drb9k//Tr/7r9wG/xMBDS9F6q/w4pW6v/7y2D+/esy2OvsYGl00K2HumG28Xa0QWlDw4JVoBKYHiJ7D3qNHANE3ZJ9zKCbAGWyRejf59nFY1ywGoxu2cUGc4hBr5EXQ55gEcGHFsuymNiChdS8HdG12EUqQ4xpuUJmEWj9r6i1eChMESRHNO7GHLBWfwa4uqOgosAGCNRiayVShkVwE3m1X8zk4+G0peQ2mrcFXdfVaE6pJmakYBcntCg+WYtecxRFXVkV3ZUUY5VPYOw634B363w35RugZb4Dj4KffQrfA3nBr6wSP4DCCd8u8h3rbyb8KErAEWjR2rQFiy3f2QQrfJc69hzfg9x+D9YIvAMnw3cQRWflT6EV+Ny25/q6nuC5i1vR5VxJ61ScGqxv8dzrjcAjqx+X8MFCEOqTymWf+CFOso/CZPdrq9QdWKSwyK98UkJacCL+4CAIvtO5bDOfJRHxu7yVc/zKR0ufwi8dN/Mrq8Ins5HvTanYtGRBJj9OJoqgcqotzBTFagZPXNZiqqi/nHJNaF/9w5TmAfzW0GufeenZyooD/o70vRVu5bvcZTLfgheHIHcZIyqfe5GVk40pxxTlBDWLpad1mdZS6vM04wRfgVCfDwwkgVe5GHPlhZXKr3109tFhgieR+YaFDet8n771OB/vzCB8olDLZ621kP/OjFes7s4VDwwKmx34oVw03g/H43BPqX+XFxNeGi419PwP);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="370" y="763" width="47" height="17" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="95">
|
||||
<mxCell style="vsdxID=134;fillColor=#7fba00;gradientColor=none;shape=stencil(jZHRDoIwDEW/Zq/NWAeTZ4T/IDJkERkZoPj3snRGRmLiW3t6t5O0DIupq0fNBJ9mZ2/6aZq5Y3hmQpih087MW8WwZFi01umrs8vQUD/WPumru334H1Z6x/0LwV/7rqLgZXGUTGiYQqpCOhBMIZeEVkFIclAYUgEpDoGsSCThH+0B/DBLAVkSq7MTqCxWK8A8NqMEGZsP3sjam+G/xWzFd52t6Xu6xn5+XP+G6HRYvgE=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="375" y="772" width="1" height="2" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="96">
|
||||
<mxCell style="vsdxID=135;fillColor=#7fba00;gradientColor=none;shape=stencil(jVLREoIgEPwaXhngNPXZ7D+c1GQydVDL/j7oKIUZs7dj2bu9hSWQDnXel0SwYVTdtXzIYqwJHIkQsq1LJUddEcgIpFWnyovqprbAc58bpqlu3d1MmLGPmQ7BnngKGY3iN3JC8nlSyOZI4JwebIdFYkYDC80CIZHQyJIswpnVmeEjZAngEjZkI0bBlV0mWok4poErut7Mk/nq7hrWY3nkSSc0FK643o95lncM/7SrHzDx/Hpu9T+A/8artcD93C2zjWz/j4IulhBVsmkwg+t7P3QawsBC9gI=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="379" y="773" width="29" height="4" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="97">
|
||||
<mxCell style="vsdxID=136;fillColor=#b8d432;gradientColor=none;shape=stencil(lZbbUgIxDIafZm8zbdLjNep7OAqyI4KzouLbG+xht2FY3LslJP2a9E/ajlYf28f3dYfq4zgcXtff/fNx29Fdh9jvt+uhP/JXR/cdrTaHYf0yHD73z+n3++PZ8/z1dvg6r3BKcQaCPQeh+kmGEMDjn+Uh+T99DilAJwcHpHNEtkSE4JLphHkV0CY7ZUt04HLciZJJK8ACryY1x55G6DaiotnHUMsefUayxWXkCCa25GAgirSJwLuW7S1Y19JNrIGFPnpdq7oDLTKfrlzKrkAJ/nSXGRYiUFyU/TTiWt3Zx/obdWcf5xaRWTZkWjIvoqI8cyWqzmoL8sxVS3YanJ1Xm2rJZqLhImt7UXFSEEjk7UFpkTeLYLbPAoIXjaYJouB7P+qybKmeVcF7ztSI5MuGrtC9qqhCt3WRClegxZFbQKE2x50j4Dx04g2xG2zhNCaVSY7GQZRNWKdDhXNDyEYHPVt3G0FLrZeQCrcBSGSuwAu49WDFfKtO1+AWBHuybGEb0E6yy24qGy8m3GyfWZaIJAss7yQI7M25Nsvk8yKaZYquRl+ldKLW4789LTqa21deXYLJMrM3mAZwVs7j6dTRjRejG0ELNfMwD9iSeZaLVuLrOs/HDN/1+0XX+1J//hjfEpt+t0tPken/8u3BpvRuoftf);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="375" y="766" width="37" height="9" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Azure Data<br/></font></p></div>" tags="Background" id="98">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=138;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="351" y="830" width="169" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Lake Storage<br/></font></p></div>" tags="Background" id="99">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=139;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="344" y="847" width="203" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="100">
|
||||
<mxCell style="vsdxID=142;fillColor=#e6ad10;gradientColor=#c87e0e;shape=stencil(UzV2Ls5ILEhVNTIoLinKz04tz0wpyVA1dlE1MsrMy0gtyiwBslSNXVWNndPyi1LTi/JL81Ig/IJEkEoQKze/DGRCBUSfoYEBSI+RQSWED+G5QZTmZObhUQrjY1VMtlISHECuUiADERxpmTk5kNBElkcPPqAQJOiNXQE=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="642" y="451" width="28" height="62" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="101">
|
||||
<mxCell style="vsdxID=143;fillColor=#000000;gradientColor=none;fillOpacity=20;shape=stencil(nZFNEoIwDIVPky1TGlBYI96DkWI71pYpoHh7qcG/jrJg917ypZn0ARadrFoBnHW9sydxVXUvAXfAuTJSONVPCrAELBrrxNHZwdTk28qTXp3txb8w0lzMmJ/h7EY+jdLNo7AnWiuzQD/9T3g1ugBm2yjJ/sOHwdFxMTXzJMJ8xuOvVSMPL5oL/LVgxBDBNX8U0pN4h9EorSnLz34Y3lSi4LG8Aw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="624" y="466" width="28" height="46" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="102">
|
||||
<mxCell style="vsdxID=144;fillColor=#000000;gradientColor=none;fillOpacity=18;shape=stencil(nZFNEoIwDIVPky1TGlBYI96DkWI71pYpoHh7qcG/jrJg917ypZn0ARadrFoBnHW9sydxVXUvAXfAuTJSONVPCrAELBrrxNHZwdTk28qTXp3txb8w0lzMmJ/h7EY+jdLNo7AnWiuzQD/9T3g1ugBm2yjJ/sOHwdFxMTXzJMJ8xuOvVSMPL5oL/LVgxBDBNX8U0pN4h9EorSnLz34Y3lSi4LG8Aw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="624" y="467" width="28" height="46" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="103">
|
||||
<mxCell style="vsdxID=145;fillColor=#f6d751;gradientColor=#e6ad10;shape=stencil(nZFNEoIwDIVPky1TGlBYI96DkWI71pYpoHh7qcG/jrJg917ypZn0ARadrFoBnHW9sydxVXUvAXfAuTJSONVPCrAELBrrxNHZwdTk28qTXp3txb8w0lzMmJ/h7EY+jdLNo7AnWiuzQD/9T3g1ugBm2yjJ/sOHwdFxMTXzJMJ8xuOvVSMPL5oL/LVgxBDBNX8U0pN4h9EorSnLz34Y3lSi4LG8Aw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="624" y="466" width="28" height="46" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="104">
|
||||
<mxCell style="vsdxID=146;fillColor=#f9e589;gradientColor=#f6d751;shape=stencil(nZHRDoIwDEW/Zq/LaDHAM+J/EBmyiIyMgfj3bumMk0QTebu9PV27XIbl1NWjZCAma/RV3lVjO4ZHBqCGThplnWJYMSxbbeTF6HloqB5rT3p104t/YaU54SdAPOLqRGCvhq9gIn6gr+YuOOd4iOnzbOjeZMsHA3kG5KxATpFyLAIEH9evGJZkPM0DgX9+fR/oxDuCVvU9JRj3t5E5i+LG6gk=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="607" y="482" width="28" height="31" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Power BI<br/></font></p></div>" tags="Background" id="105">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=147;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="605" y="518" width="135" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="106">
|
||||
<mxCell style="vsdxID=148;fillColor=none;gradientColor=none;shape=stencil(nZBNDkIhDIRP0z3SIyDegwSQRgQC+PNu/yCNkRjjwt1M+7XpFFC1YIoDKVqv+eIeZHsAPIKUlIKr1IcC1IDK5+rONd+SZV/MJKe65vvc8OQ5MSek2FZ3YjBSWsCD+Bt9+a/wT3SI9+GeYuTca/8z6Cjxk1Dv);strokeColor=#312d2a;strokeWidth=2;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="152" y="67" width="101" height="729" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="107">
|
||||
<mxCell style="vsdxID=149;fillColor=none;gradientColor=none;shape=stencil(dU9bDoAgDDvN/pEdwcc9TEBZRCCIr9sLWYzGxL92bbcOsF5MHzRIsaToJ72TSgawASnJGR0pZQTYAtaDj3qMfnWKeeiLs6DZb2XDwTlRElKczCrBvGOrJfey3uKPOYPnyEDWcse3/i2VR/wQthc=);strokeColor=#312d2a;strokeWidth=2;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="152" y="339" width="101" height="1" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="108">
|
||||
<mxCell style="vsdxID=150;fillColor=none;gradientColor=none;shape=stencil(dU9bDoAgDDvN/pEdwcc9TEBZRCCIr9sLWYzGxL92bbcOsF5MHzRIsaToJ72TSgawASnJGR0pZQTYAtaDj3qMfnWKeeiLs6DZb2XDwTlRElKczCrBvGOrJfey3uKPOYPnyEDWcse3/i2VR/wQthc=);strokeColor=#312d2a;strokeWidth=2;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="152" y="187" width="101" height="1" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="109">
|
||||
<mxCell style="vsdxID=151;fillColor=#312d2a;gradientColor=none;shape=stencil(pVTRboMwDPyavFqOHUjy3HX/Ua10oDGoKN3o3zcsUUeCAHV7C8fZd7EdC95dysO5EISXvms/iu/q2JeCXwRR1ZRFV/XuJHgveHdqu+K9a6/N0X+fDyNzPH22X2OGwcdZC3oMIrx5IFOg1Q/y6vlv184HSE+QiCEgABmBJA8NlHICoDQYEzg8Uw6IyoDyqXRdNVOrzpmJvBLkcs2qi1A6NouxUctgTWwVE5sMuYl9bsoysElqBMQzZU6ULai0RnNx6aq9UiMDmMf9xBX2JL1HjAb75NUsQkbbd3PN05uXsxp4S98m+o9ZG2je9XQeH9qTWVrSTmq1+VCe5ccPEWNyHqKXcsvsX3zlOrTMxz9z132sc93hd0udqrr2S276P91qDvIbkfd3);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="152" y="484" width="136" height="15" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="110">
|
||||
<mxCell style="vsdxID=152;fillColor=#312d2a;gradientColor=none;shape=stencil(pVTLcsMgDPwarhqQeJhzmvxHpnFqT107Q5w2/fvi4rpAJnjS3uT1il0kIUabc7M/1Qz5eXTDa/3RHsaG0RNDbPumdu3oI0ZbRpvj4OoXN1z6Q/g+7SfmFL0N79MJ15BnLRg9ZSH/DIiSYOQ3sgsJzxcXMkQgCM7nhBlQCAIDdMWcMwPSQFXNHLqVniGpAE2s3bV9bFZBJRKzCBpLXn2G0qlbnjr1DGFSrzzzKcFS6nNVVoK2WZEAKVOOSD8QyLxIt+LCl7tQowqkTBvKC+zo+IBUBqx48G6Wg8L1y/nBMqu3swbIrrR0aVg+kVFTl7bnE7loR8N0Tzsr1vpbeTghfY08JWsoPQYLhP/iSwK6z+d/5pZ9lLk++F1Vx7brwqaL/+erzUNhLdL2Cw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="431" y="485" width="170" height="15" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="111">
|
||||
<mxCell style="vsdxID=153;fillColor=#312d2a;gradientColor=none;shape=stencil(pZTRboMwDEW/Jq9WYieEPHftf1QrHWgMKkq37u8XllTFaQGhvsXhmHvtJBa0OZf7UyFQnvuu/Sx+qkNfCnoTiFVTFl3V+5WgraDNse2Kj669NIcQn/YDOay+2u/hD9eQZzRYPWSh/A07EvA/3gX8/dIFXsUEBIUxIW7JEF4xhNpCnkcCOUGRMIBZJOipal01I5MIGTKPBNrMmZTcIEFmuEfJ/RE4yy2OJG+mQdnZxgASl9VAlss60ElnRkzUUQjSzUvz7hjJeqMA82k4t+AU45fqchIMLhbmr5FdqsxZoHxdU5V8OEqXSN8RfDjtaeH0BiUtXXoVK/HkzWVgGX0r4fnPU9qfRzaNawJ6BV/n5SXaL+5j6VjVdZhq4+/pGPNbYQTS9g8=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="385" y="555" width="15" height="207" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="112">
|
||||
<mxCell style="vsdxID=154;fillColor=#312d2a;gradientColor=none;shape=stencil(pVTLcoMwDPwaXzWy5Qc+p8l/ZBpSmFLIENLSv6+pPQk2g5m0N7GsvCtLFqPdtTpeSibwOvTde/lVn4aK0QsTom6rsq8HFzHaM9qdu75867tbe/Lfl+PEnKKP7nM6YfR51oKZkgR+e0BJMPoXOXj+6633CdwTOGJICIASwKWHRpFyAiANFDpwaKEcEKlAyLl0U7dzq85Z7FWA5jmrLkOa2CzGRi2BNbFVTGwS6MTnpiwBJbKuMlooU6JsQapNcS4AdeaSCkAVNxQz7Nn5HikMWPlkcRZBqe3qHu3LlGcNkN3Qt4n+fdpGsex7OpF37dk0rWknl7X5VJ7lx08RY7IO2Wtnc/UvvnQdWufjn7l5H3muCx576lw3jV9z8//pXnOQ34m0/wE=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="152" y="1083" width="136" height="15" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="113">
|
||||
<mxCell style="vsdxID=155;fillColor=#312d2a;gradientColor=none;shape=stencil(pVTRcoMgEPwaXm8ODkSe0+Q/Mo2pTq1mjGnt3xcLkwCOOGnfznWP3buDY7S71sdLxQRex6F/r76a01gzemFCNF1dDc1oI0Z7RrtzP1RvQ3/rTu77cpyZc/TRf84nTC7PGNBzksBvBygJWv4iB8d/vQ0ugTsCR/QJHlACuHDQJFKOB6SGsvQcWih7RCoQRSjdNl1o1TqLvQooeM6qzZA6NouxUUNgdGwVE5sEReJzU5aAEllbGS2UKVE2INMeLcW57XamRyWgiueJGXZwvENKDebJ0gyCEtu1PYaXKc5ooC19k+jf79okllNP7+NdO7hLa9pJrzYfyrP8+CFiTC589trZXP2LL+2E1vn4Z27eR55rg8eWOjdt65Zc+D/dahZyG5H2Pw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="152" y="924" width="136" height="15" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="114">
|
||||
<mxCell style="vsdxID=156;fillColor=none;gradientColor=none;shape=stencil(dU9bDoAgDDvN/pEdwcc9TEBZRCCIr9sLWYzGxL92bbcOsF5MHzRIsaToJ72TSgawASnJGR0pZQTYAtaDj3qMfnWKeeiLs6DZb2XDwTlRElKczCrBvGOrJfey3uKPOYPnyEDWcse3/i2VR/wQthc=);strokeColor=#312d2a;strokeWidth=2;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="152" y="653" width="101" height="1" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
@@ -0,0 +1,368 @@
|
||||
<svg width="712" height="1112" viewBox="0 0 712 1112" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="data-lake-db-at-azure-process">
|
||||
<rect width="712" height="1112" fill="white"/>
|
||||
<g id="Data Sources">
|
||||
<rect x="0.5" y="0.5" width="215" height="1111" rx="3.5" fill="#F5F4F2"/>
|
||||
<rect x="0.5" y="0.5" width="215" height="1111" rx="3.5" stroke="#9E9892"/>
|
||||
<text id="OCI Region" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="bold" letter-spacing="0em"><tspan x="58.0703" y="21.816">Data Sources</tspan></text>
|
||||
</g>
|
||||
<g id="Data Sources_2">
|
||||
<rect x="264.5" y="0.5" width="215" height="1111" rx="3.5" fill="#F5F4F2"/>
|
||||
<rect x="264.5" y="0.5" width="215" height="1111" rx="3.5" stroke="#9E9892"/>
|
||||
<text id="OCI Region_2" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="bold" letter-spacing="0em"><tspan x="336.883" y="21.816">Data Tier</tspan></text>
|
||||
</g>
|
||||
<g id="Data Sources_3">
|
||||
<rect x="496.5" y="0.5" width="215" height="1111" rx="3.5" fill="#F5F4F2"/>
|
||||
<rect x="496.5" y="0.5" width="215" height="1111" rx="3.5" stroke="#9E9892"/>
|
||||
<text id="OCI Region_3" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="bold" letter-spacing="0em"><tspan x="535.453" y="21.816">Consumption Tier</tspan></text>
|
||||
</g>
|
||||
<g id="Other relational databases">
|
||||
<g id="Services-Enterprise-resource-Planning-Cloud-Service-ERP">
|
||||
<g id="Group 514">
|
||||
<path id="Vector" d="M92.0093 83.148L98.786 79.7514L92.0093 76.3691L94.7771 74.9419H78.7698L78.9268 72.8726C79.1192 70.4761 79.9217 68.1688 81.2577 66.1703C82.5938 64.1718 84.4189 62.5487 86.5595 61.4554C87.0189 61.2188 87.419 60.8816 87.7303 60.469C88.0415 60.0564 88.2557 59.5789 88.3571 59.0721C88.837 56.6085 90.1584 54.3885 92.0949 52.7925C94.0314 51.1965 96.4624 50.3237 98.9715 50.3237C99.3088 50.302 99.6471 50.302 99.9844 50.3237H100.327C100.776 50.3288 101.221 50.24 101.634 50.0631C102.046 49.8861 102.418 49.6249 102.724 49.2961C104.185 47.7348 106.001 46.5492 108.018 45.8402C110.035 45.1313 112.193 44.9198 114.309 45.2238C116.425 45.5278 118.437 46.3383 120.173 47.5865C121.909 48.8346 123.318 50.4835 124.281 52.393C124.508 52.8751 124.842 53.2991 125.257 53.6329C125.672 53.9667 126.158 54.2016 126.677 54.3197C128.198 54.6517 129.647 55.2509 130.957 56.0893C133.868 57.9264 135.974 60.7993 136.85 64.1286C137.727 67.4579 137.308 70.9957 135.68 74.0286L135.138 75.0418H121.784L124.366 76.469L117.59 79.7942L124.423 83.2194L108.074 91.1686L92.0093 83.148Z" fill="white"/>
|
||||
<path id="Vector_2" d="M112.397 45.7577C114.737 45.7481 117.033 46.3957 119.023 47.627C121.013 48.8582 122.617 50.6236 123.653 52.7222C123.933 53.2828 124.334 53.7738 124.828 54.159C125.322 54.5443 125.895 54.814 126.507 54.9485C127.953 55.2744 129.332 55.8439 130.587 56.6326C133.354 58.3654 135.357 61.0872 136.189 64.2446C137.021 67.4019 136.62 70.7578 135.067 73.6299L134.724 74.2721H119.031L122.826 76.3843L115.978 79.738L118.047 80.7656L122.826 83.1489L108.074 90.3846L93.6078 83.1489L98.3301 80.7799L100.384 79.7523L93.6078 76.37L97.7879 74.3006H79.5408L79.6407 72.9876C79.7984 70.7062 80.5365 68.5029 81.785 66.587C83.0335 64.6712 84.7509 63.1065 86.774 62.0414C87.3257 61.7579 87.8068 61.3544 88.182 60.8604C88.5573 60.3665 88.8172 59.7947 88.9426 59.1872C89.2551 57.5854 89.9502 56.0831 90.9688 54.8082C91.9873 53.5334 93.299 52.5239 94.7919 51.8659C96.0794 51.3052 97.468 51.0138 98.8722 51.0096H99.8138H100.228C100.763 51.0023 101.292 50.8873 101.782 50.6716C102.272 50.4558 102.714 50.1437 103.081 49.7537C104.273 48.4799 105.717 47.4672 107.32 46.7795C108.924 46.0917 110.652 45.7438 112.397 45.7577ZM112.397 44.3306C110.471 44.3321 108.566 44.7309 106.801 45.5019C105.036 46.2729 103.449 47.3997 102.139 48.8118C101.9 49.0666 101.61 49.2691 101.288 49.4066C100.967 49.5441 100.62 49.6137 100.27 49.611H99.985C99.6286 49.5897 99.2713 49.5897 98.915 49.611C96.2374 49.6159 93.6442 50.5484 91.5764 52.2501C89.5087 53.9517 88.094 56.3173 87.573 58.9445C87.4917 59.3455 87.3213 59.7231 87.0743 60.0492C86.8274 60.3753 86.5102 60.6416 86.1463 60.8284C83.9103 61.9969 82.0087 63.7159 80.6208 65.8234C79.233 67.9308 78.4047 70.3571 78.214 72.8735L78.1141 74.1865L78 75.7278H91.7531L90.4263 76.3985L92.9658 77.6687L97.2458 79.7809L92.9658 81.893L90.4263 83.1775L92.9658 84.4476L107.432 91.6833L108.074 91.9972L108.702 91.6833L123.454 84.4334L126.036 83.1632L123.454 81.8788L119.174 79.738L123.454 77.6544L125.908 76.4556L124.481 75.6992H135.523L135.923 74.9571L136.265 74.3149C137.321 72.3737 137.912 70.2137 137.991 68.0051C138.07 65.7966 137.635 63.5999 136.721 61.5881C135.807 59.5762 134.438 57.8043 132.722 56.4119C131.007 55.0195 128.991 54.0447 126.835 53.5642C126.432 53.4784 126.053 53.3064 125.723 53.0601C125.393 52.8137 125.12 52.4988 124.923 52.1371C123.775 49.7935 121.992 47.8194 119.778 46.4394C117.563 45.0593 115.006 44.3287 112.397 44.3306Z" fill="white"/>
|
||||
<path id="Vector_3" d="M115.278 82.1214L117.29 83.1347L108.088 87.6445L99.0998 83.149L101.069 82.15L98.3294 80.7799L93.6071 83.149L108.074 90.3846L122.825 83.149L118.046 80.7656L115.278 82.1214Z" fill="#2D5967"/>
|
||||
<path id="Vector_4" d="M108.074 83.6063L122.825 76.3849L118.046 73.9873L115.278 75.3431L117.29 76.3564L108.088 80.8661L99.0998 76.3706L101.069 75.3859L98.3294 74.0158L93.6071 76.3706L108.074 83.6063Z" fill="#2D5967"/>
|
||||
<path id="Vector_5" d="M122.825 69.6053L108.202 62.2983L93.6071 69.5911L108.074 76.8267L122.825 69.6053ZM108.202 65.0385L117.29 69.5768L108.088 74.0866L99.0998 69.5911L108.202 65.0385Z" fill="#2D5967"/>
|
||||
<path id="Vector_6" d="M115.278 75.3431L117.29 76.3564L108.088 80.8661L99.0998 76.3706L101.069 75.3859L98.3294 74.0158L93.6071 76.3706L108.074 83.6063L122.825 76.3849L118.046 73.9873L115.278 75.3431Z" fill="#2D5967"/>
|
||||
<path id="Vector_7" d="M115.278 82.1214L117.29 83.1347L108.088 87.6445L99.0998 83.149L101.069 82.15L98.3294 80.7799L93.6071 83.149L108.074 90.3846L122.825 83.149L118.046 80.7656L115.278 82.1214Z" fill="#2D5967"/>
|
||||
<path id="Vector_8" d="M130.6 56.6328C129.341 55.8426 127.956 55.2731 126.506 54.9487C125.894 54.8142 125.32 54.5445 124.827 54.1592C124.333 53.774 123.932 53.283 123.652 52.7224C122.616 50.6238 121.011 48.8584 119.021 47.6272C117.031 46.3959 114.736 45.7483 112.396 45.7579C110.666 45.7614 108.955 46.1204 107.37 46.8127C105.785 47.505 104.358 48.5159 103.18 49.7825C102.759 50.2308 102.239 50.5751 101.662 50.7881C101.085 51.0011 100.467 51.077 99.8555 51.0098C98.1399 50.8561 96.4131 51.1358 94.8336 51.8233C93.3407 52.4813 92.029 53.4908 91.0105 54.7656C89.992 56.0404 89.2968 57.5428 88.9843 59.1445C88.8589 59.7521 88.599 60.3239 88.2238 60.8178C87.8485 61.3118 87.3674 61.7153 86.8158 61.9988C84.7926 63.0639 83.0752 64.6286 81.8268 66.5444C80.5783 68.4602 79.8401 70.6635 79.6824 72.945L79.5397 74.3008H91.5523V71.8176H82.2789C82.5979 70.2005 83.2764 68.6759 84.2643 67.3567C85.2521 66.0375 86.524 64.9575 87.9856 64.1966C88.8649 63.7409 89.6297 63.0921 90.2226 62.2987C90.8156 61.5054 91.2214 60.588 91.4096 59.6155C91.6482 58.4031 92.1762 57.2663 92.9488 56.3021C93.7214 55.338 94.7155 54.575 95.8466 54.0782C97.0385 53.5524 98.3439 53.3364 99.6415 53.4502C100.624 53.5533 101.616 53.4279 102.542 53.0838C103.467 52.7397 104.301 52.1862 104.977 51.4665C105.926 50.4467 107.074 49.6328 108.35 49.0755C109.626 48.5182 111.003 48.2294 112.396 48.2269C114.277 48.2124 116.125 48.7298 117.725 49.7196C119.325 50.7093 120.613 52.1312 121.441 53.8213C121.889 54.7126 122.53 55.4929 123.317 56.1052C124.104 56.7174 125.018 57.1463 125.992 57.3606C127.166 57.6388 128.282 58.1219 129.288 58.7878C131.413 60.1332 132.981 62.2006 133.704 64.6101C134.428 67.0195 134.258 69.6092 133.225 71.9032H124.665V74.3008H134.738L135.08 73.6586C136.642 70.7838 137.047 67.4212 136.215 64.2571C135.382 61.0931 133.374 58.3661 130.6 56.6328Z" fill="#2D5967"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Icon Text Label">
|
||||
<text id="IconLabel" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="45.3906" y="109.816">Oracle Cloud ERP</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Group 1550">
|
||||
<g id="Data Sources_4">
|
||||
<rect x="272.71" y="257.604" width="199" height="847" rx="3.5" fill="white"/>
|
||||
<rect x="272.71" y="257.604" width="199" height="847" rx="3.5" stroke="#9E9892"/>
|
||||
<text id="Fault Domain" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="600" letter-spacing="0em"><tspan x="337.241" y="278.92">Ingestion</tspan></text>
|
||||
</g>
|
||||
<g id="Microsoft SQL Server">
|
||||
<g id="Database-Action-gear">
|
||||
<g id="Group 309">
|
||||
<path id="Vector_9" d="M117.15 912.736L117.065 911.966C113.58 912.358 110.077 912.558 106.57 912.565C103.911 912.565 80.5455 912.351 80.5455 904.73V862.223C80.5455 854.388 103.911 854.16 106.57 854.16C109.229 854.16 132.609 854.388 132.609 862.223V889.758L134.5 891.667L132.68 893.946L135.524 894.274V902.921L132.68 903.248L134.5 905.528L128.385 911.653L126.465 910.115L126.067 910.243L125.783 912.736H117.15Z" fill="white"/>
|
||||
<path id="Vector_10" d="M106.569 854.872C115.386 854.872 131.896 856.41 131.896 862.222V890.057L133.546 891.709L131.896 893.789V894.573L134.869 894.9V902.293L131.896 902.621V903.405L133.546 905.484L128.341 910.698L126.606 909.273L125.412 909.644L125.156 911.98H117.775L117.69 911.14C114 911.593 110.286 911.831 106.569 911.852C97.8229 911.852 81.2554 910.427 81.2554 904.729V862.222C81.2554 856.41 97.8229 854.872 106.569 854.872ZM106.569 853.447C102.103 853.447 79.8333 853.875 79.8333 862.222V904.729C79.8333 912.892 102.103 913.276 106.569 913.276C109.865 913.27 113.16 913.094 116.438 912.749L116.509 913.447H126.464L126.606 912.179L126.72 911.197L127.488 911.809L128.483 912.607L129.379 911.709L134.598 906.481L135.494 905.584L134.698 904.587L134.086 903.818L135.068 903.704L136.333 903.561V893.59L135.068 893.447L134.044 893.333L134.655 892.564L135.452 891.567L134.556 890.669L133.318 889.43V862.222C133.318 853.875 111.119 853.447 106.569 853.447Z" fill="white"/>
|
||||
<path id="Vector_11" d="M131.498 902.906L131.569 902.721L131.498 902.906Z" fill="#2D5967"/>
|
||||
<path id="Vector_12" d="M110.582 909.216C109.273 909.216 107.936 909.287 106.571 909.287C100.932 909.345 95.3031 908.771 89.7904 907.577C84.7704 906.424 83.647 905.084 83.647 904.728V893.931C88.4679 896.78 99.5318 897.663 106.287 897.677V895.298C100.744 895.349 95.2117 894.79 89.7904 893.631C84.7562 892.435 83.6328 891.082 83.6328 890.711V880.141C88.539 882.99 99.8447 883.888 106.557 883.888C109.259 883.888 112.7 883.745 116.17 883.404H116.341C121.446 882.876 126.594 881.879 129.495 880.17V885.17L129.595 885.255L131.885 887.549V862.791C131.891 862.71 131.891 862.629 131.885 862.549C131.892 862.435 131.892 862.321 131.885 862.207C131.885 857.278 118.759 855.084 106.557 855.084C94.3554 855.084 81.2578 857.278 81.2578 862.207C81.2508 862.321 81.2508 862.435 81.2578 862.549C81.2517 862.629 81.2517 862.71 81.2578 862.791V904.728C81.2578 910.255 97.8253 911.708 106.571 911.708C108.406 911.708 110.567 911.708 112.843 911.495L110.582 909.216ZM106.571 857.421C112.213 857.343 117.844 857.922 123.352 859.144C128.4 860.384 129.51 861.78 129.51 862.207C129.51 862.634 128.4 864.016 123.352 865.255C117.844 866.478 112.213 867.056 106.571 866.979C100.93 867.057 95.2986 866.478 89.7904 865.255C84.7562 864.016 83.647 862.634 83.647 862.207C83.647 861.78 84.7562 860.384 89.7904 859.144C95.2986 857.921 100.93 857.343 106.571 857.421ZM123.352 879.842C117.838 881.022 112.209 881.581 106.571 881.509C100.933 881.581 95.3046 881.022 89.7904 879.842C84.7562 878.646 83.6328 877.292 83.6328 876.908V865.512C87.8991 868.161 97.5124 869.386 106.557 869.386C115.602 869.386 125.172 868.161 129.495 865.512V876.908C129.51 877.292 128.386 878.646 123.352 879.842Z" fill="#2D5967"/>
|
||||
<path id="Vector_13" d="M121.558 892.037C120.264 892.051 119.004 892.448 117.935 893.178C116.866 893.908 116.037 894.938 115.552 896.139C115.066 897.34 114.947 898.659 115.208 899.928C115.469 901.197 116.099 902.36 117.018 903.272C117.938 904.183 119.106 904.801 120.376 905.049C121.645 905.297 122.96 905.162 124.154 904.663C125.348 904.164 126.367 903.323 127.085 902.244C127.802 901.166 128.185 899.899 128.185 898.603C128.185 897.735 128.013 896.875 127.679 896.074C127.345 895.272 126.856 894.545 126.239 893.935C125.623 893.324 124.892 892.842 124.088 892.516C123.285 892.19 122.425 892.027 121.558 892.037ZM121.558 902.777C120.73 902.78 119.919 902.536 119.23 902.077C118.54 901.618 118.002 900.964 117.684 900.199C117.365 899.433 117.281 898.589 117.442 897.776C117.603 896.962 118.002 896.214 118.587 895.628C119.173 895.041 119.919 894.642 120.731 894.481C121.544 894.32 122.386 894.404 123.15 894.723C123.915 895.041 124.567 895.58 125.026 896.271C125.484 896.962 125.727 897.774 125.724 898.603C125.724 899.71 125.285 900.772 124.504 901.555C123.723 902.338 122.663 902.777 121.558 902.777Z" fill="#2D5967"/>
|
||||
<path id="Vector_14" d="M131.598 894.544L131.498 894.288L133.546 891.709L128.341 886.496L125.767 888.547L125.511 888.447L125.156 885.171H117.775L117.419 888.447L117.163 888.547L114.589 886.496L109.385 891.709L111.432 894.288L111.333 894.544L108.062 894.9V902.293L111.333 902.65L111.432 902.906L109.385 905.484L114.589 910.698L117.163 908.647L117.419 908.746L117.775 912.023H125.156L125.511 908.746L125.767 908.647L128.341 910.698L133.546 905.484L131.498 902.906L131.598 902.65L134.869 902.293V894.9L131.598 894.544ZM132.451 900.157L129.806 900.442L129.564 901.182C129.424 901.646 129.238 902.094 129.01 902.521L128.654 903.219L130.332 905.299L128.185 907.578L126.108 905.897L125.341 906.154C124.914 906.383 124.466 906.569 124.004 906.709L123.278 906.952L122.98 909.601H119.908L119.652 906.98L118.913 906.738C118.451 906.595 118.003 906.409 117.576 906.182L116.808 905.826L114.774 907.578L112.542 905.299L114.205 903.219L113.964 902.521C113.735 902.094 113.55 901.646 113.409 901.182L113.096 900.456L110.451 900.171V897.037L113.096 896.752L113.338 896.011C113.481 895.549 113.667 895.1 113.893 894.672L114.248 893.989L112.542 891.909L114.732 889.701L116.808 891.367L117.491 891.011C117.918 890.785 118.365 890.599 118.827 890.456L119.567 890.214L119.851 887.564H122.966L123.264 890.214L123.99 890.456C124.452 890.596 124.9 890.783 125.326 891.011L126.023 891.367L128.185 889.687L130.361 891.909L128.682 894.003L129.038 894.687C129.264 895.115 129.45 895.563 129.593 896.026L129.834 896.766L132.479 897.051L132.451 900.157Z" fill="#2D5967"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Icon Text Label_2">
|
||||
<text id="IconLabel_2" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="73.5703" y="931.263">Microsoft</tspan></text>
|
||||
<text id="IconLabel_3" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="67.8594" y="947.263">SQL Server</tspan></text>
|
||||
<text id="IconLabel_4" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="57.5391" y="963.263">(on-premises)</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Other relational databases_2">
|
||||
<g id="Database">
|
||||
<g id="Group 15">
|
||||
<path id="Vector_15" d="M108.189 206.027C105.518 206.027 82.0462 205.813 82.0462 198.17V155.541C82.0462 147.684 105.518 147.456 108.189 147.456C110.86 147.456 134.346 147.684 134.346 155.541V198.17C134.346 205.813 110.875 206.027 108.189 206.027Z" fill="white"/>
|
||||
<path id="Vector_16" d="M108.19 148.17C117.048 148.17 133.633 149.713 133.633 155.541V198.17C133.633 203.884 116.99 205.313 108.19 205.313C99.3905 205.313 82.7619 203.884 82.7619 198.17V155.541C82.7619 149.713 99.4047 148.17 108.19 148.17ZM108.19 146.741C103.705 146.741 81.3333 147.17 81.3333 155.541V198.17C81.3333 206.355 103.705 206.741 108.19 206.741C112.676 206.741 135.062 206.327 135.062 198.17V155.541C135.062 147.17 112.762 146.741 108.19 146.741Z" fill="white"/>
|
||||
<path id="Vector_17" d="M133.634 155.542C133.634 149.713 117.048 148.17 108.191 148.17C99.3338 148.17 82.7623 149.713 82.7623 155.542V198.17C82.7623 203.885 99.4052 205.313 108.191 205.313C116.977 205.313 133.634 203.885 133.634 198.17V155.542ZM130.777 184.113C130.777 184.37 129.705 185.656 124.805 186.842C119.345 188.005 113.772 188.551 108.191 188.47C102.589 188.546 96.9967 187.99 91.5195 186.813C86.6195 185.628 85.6195 184.342 85.6195 184.085V173.599C90.7338 176.385 101.691 177.228 108.262 177.228C114.834 177.228 125.805 176.385 130.919 173.599L130.777 184.113ZM130.777 170.085C130.777 170.342 129.705 171.642 124.805 172.813C119.345 173.976 113.772 174.522 108.191 174.442C102.589 174.518 96.9967 173.962 91.5195 172.785C86.6195 171.613 85.6195 170.313 85.6195 170.056V159.17C90.7338 162.028 101.691 162.899 108.262 162.899C114.834 162.899 125.805 162.042 130.919 159.17L130.777 170.085ZM91.5338 152.67C97.0041 151.481 102.594 150.93 108.191 151.028C113.796 150.953 119.39 151.528 124.862 152.742C129.905 153.885 130.848 155.313 130.848 155.542C130.848 155.77 129.834 157.17 124.862 158.399C119.39 159.612 113.796 160.187 108.191 160.113C102.592 160.191 97.0019 159.621 91.5338 158.413C86.5623 157.17 85.6195 155.828 85.6195 155.542C85.6195 155.256 86.6338 153.899 91.6052 152.685L91.5338 152.67ZM124.877 200.87C119.395 202.048 113.797 202.604 108.191 202.528C102.589 202.603 96.9967 202.048 91.5195 200.87C86.6195 199.699 85.6195 198.399 85.6195 198.17V187.628C90.7338 190.413 101.691 191.256 108.262 191.256C114.834 191.256 125.805 190.413 130.919 187.628V198.17C130.919 198.428 129.848 199.728 124.948 200.899" fill="#2D5967"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Icon Text Label_3">
|
||||
<text id="IconLabel_5" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="51.7266" y="224.557">Other relational</tspan></text>
|
||||
<text id="IconLabel_6" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="71.3281" y="240.557">databases</tspan></text>
|
||||
<text id="IconLabel_7" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="57.5391" y="256.557">(on-premises)</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Azure SQL Database">
|
||||
<g id="Azure-SQL-Database">
|
||||
<g id="Group">
|
||||
<g id="group1000-1">
|
||||
<g id="group1001-2">
|
||||
<g id="group1002-3">
|
||||
<g id="group1003-4">
|
||||
<g id="group1004-5">
|
||||
<g id="shape1005-6">
|
||||
<path id="Vector_18" fill-rule="evenodd" clip-rule="evenodd" d="M108.835 310.868C96.4151 310.868 86.3333 307.324 86.3333 302.667V346.3C86.3333 350.775 96.2325 354.409 108.506 354.482H108.835C121.254 354.482 131.318 350.939 131.318 346.3V302.667C131.318 307.215 121.254 310.868 108.835 310.868Z" fill="url(#paint0_linear_17642_377913)"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="group1006-10">
|
||||
<g id="shape1007-11">
|
||||
<path id="Vector_19" fill-rule="evenodd" clip-rule="evenodd" d="M131.318 302.683C131.318 307.231 121.254 310.865 108.835 310.865C96.4151 310.865 86.3333 307.322 86.3333 302.683C86.3333 298.026 96.4151 294.482 108.835 294.482C121.254 294.482 131.318 298.026 131.318 302.683Z" fill="#E8E8E8"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="group1008-13">
|
||||
<g id="shape1009-14">
|
||||
<path id="Vector_20" fill-rule="evenodd" clip-rule="evenodd" d="M126.101 302.007C126.101 304.893 118.339 307.23 108.841 307.23C99.3258 307.23 91.5635 304.893 91.5635 302.007C91.5635 299.121 99.3258 296.82 108.841 296.82C118.339 296.82 126.101 299.139 126.101 302.007Z" fill="#50E6FF"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="group1010-16">
|
||||
<g id="shape1011-17">
|
||||
<path id="Vector_21" fill-rule="evenodd" clip-rule="evenodd" d="M108.819 303.322C104.19 303.203 99.5756 303.883 95.1753 305.331C99.58 306.751 104.196 307.394 108.819 307.231C113.457 307.369 118.083 306.676 122.48 305.185C118.061 303.803 113.444 303.174 108.819 303.322Z" fill="#198AB3"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="group1012-19">
|
||||
<g id="shape1013-20">
|
||||
<path id="Vector_22" fill-rule="evenodd" clip-rule="evenodd" d="M122.521 332.955V320.956H119.361V335.531H127.982V332.955H122.521ZM97.4623 327.056C96.8101 326.792 96.2054 326.421 95.6724 325.96C95.5301 325.809 95.4194 325.632 95.3466 325.437C95.2739 325.243 95.2408 325.035 95.2492 324.828C95.2388 324.621 95.2821 324.414 95.3748 324.229C95.4676 324.043 95.6066 323.885 95.7783 323.77C96.2077 323.472 96.7222 323.324 97.2432 323.348C98.4942 323.298 99.7269 323.664 100.75 324.389V321.339C99.6284 320.926 98.4366 320.74 97.2432 320.791C95.8706 320.716 94.5165 321.137 93.426 321.978C92.9493 322.347 92.5666 322.824 92.3094 323.37C92.0521 323.916 91.9278 324.516 91.9466 325.12C91.9466 326.928 93.0607 328.334 95.4533 329.394C96.227 329.721 96.9571 330.145 97.6267 330.654C97.7917 330.793 97.9245 330.966 98.0159 331.161C98.1073 331.357 98.155 331.57 98.1558 331.786C98.157 332.001 98.1067 332.214 98.0091 332.405C97.9115 332.597 97.7694 332.762 97.595 332.887C97.1175 333.164 96.5701 333.296 96.0195 333.266C94.6047 333.257 93.2414 332.731 92.184 331.786V335.074C93.3457 335.674 94.6414 335.963 95.9464 335.914C97.4195 336.002 98.8793 335.59 100.092 334.745C100.517 334.338 100.842 333.838 101.042 333.283C101.241 332.729 101.31 332.135 101.243 331.549C101.263 330.641 100.951 329.757 100.366 329.065C99.5487 328.198 98.5594 327.514 97.4623 327.056ZM115.854 332.681C116.65 331.336 117.049 329.79 117.005 328.225C116.929 326.902 116.534 325.617 115.854 324.481C115.304 323.377 114.448 322.457 113.389 321.832C112.319 321.225 111.11 320.91 109.882 320.919C108.56 320.891 107.255 321.219 106.101 321.869C105.013 322.475 104.119 323.381 103.526 324.481C102.905 325.727 102.592 327.105 102.613 328.499C102.617 329.729 102.905 330.942 103.453 332.042C103.991 333.133 104.835 334.041 105.882 334.654C106.943 335.297 108.151 335.656 109.389 335.695L112.421 339.238H116.658L112.329 335.348C113.786 334.917 115.039 333.969 115.854 332.681ZM112.329 331.786C112.011 332.186 111.604 332.507 111.141 332.722C110.679 332.938 110.172 333.043 109.663 333.028C109.149 333.044 108.639 332.936 108.176 332.714C107.712 332.491 107.307 332.161 106.996 331.75C106.26 330.73 105.904 329.482 105.992 328.225C105.907 326.968 106.263 325.721 106.996 324.7C107.33 324.289 107.751 323.96 108.228 323.735C108.705 323.511 109.227 323.397 109.754 323.403C110.262 323.383 110.768 323.492 111.224 323.718C111.68 323.945 112.072 324.282 112.366 324.7C113.057 325.739 113.391 326.977 113.316 328.225C113.436 329.494 113.085 330.763 112.329 331.786Z" fill="url(#paint1_radial_17642_377913)"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Icon Text Label_4">
|
||||
<text id="IconLabel_8" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="70.0234" y="372.298">Azure SQL</tspan></text>
|
||||
<text id="IconLabel_9" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="74.2422" y="388.298">Database</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Table storage">
|
||||
<g id="Table-3-Column">
|
||||
<g id="Group 468">
|
||||
<path id="Vector_23" d="M137.286 426.938H78.7145V485.509H137.286V426.938Z" fill="white"/>
|
||||
<path id="Vector_24" d="M136.571 427.652V484.795H79.4286V427.652H136.571ZM138 426.224H78V486.224H138V426.224Z" fill="white"/>
|
||||
<path id="Vector_25" d="M84.4862 479.739H95.3433V476.881H84.4862V479.739ZM102.572 479.739H113.429V476.881H102.572V479.739ZM120.658 479.739H131.515V476.881H120.658V479.739ZM84.4862 474.667H95.3433V471.81H84.4862V474.667ZM102.572 474.667H113.429V471.81H102.572V474.667ZM120.658 474.667H131.515V471.81H120.658V474.667ZM84.4862 469.61H95.3433V466.753H84.4862V469.61ZM102.572 469.61H113.429V466.753H102.572V469.61ZM120.658 469.61H131.515V466.753H120.658V469.61ZM84.4862 464.539H95.3433V461.681H84.4862V464.539ZM102.572 464.539H113.429V461.681H102.572V464.539ZM120.658 464.539H131.515V461.681H120.658V464.539ZM84.4862 459.481H95.3433V456.624H84.4862V459.481ZM102.572 459.481H113.429V456.624H102.572V459.481ZM120.658 459.481H131.515V456.624H120.658V459.481ZM84.4862 454.41H95.3433V451.553H84.4862V454.41ZM102.572 454.41H113.429V451.553H102.572V454.41ZM120.658 454.41H131.515V451.553H120.658V454.41ZM84.4862 449.353H95.3433V446.496H84.4862V449.353ZM102.572 449.353H113.429V446.496H102.572V449.353ZM120.658 449.353H131.515V446.496H120.658V449.353ZM84.4862 444.296H95.3433V441.439H84.4862V444.296ZM102.572 444.296H113.429V441.439H102.572V444.296ZM120.658 444.296H131.515V441.439H120.658V444.296ZM82.2862 439.224H97.5147V481.939H82.2862V439.224ZM100.358 439.224H115.6V481.939H100.4L100.358 439.224ZM118.443 439.224H133.715V481.939H118.486L118.443 439.224ZM82.2862 430.51H97.5147V436.339H82.2862V430.51ZM100.4 430.51H115.6V436.339H100.4V430.51ZM118.486 430.51H133.715V436.339H118.486V430.51ZM79.429 484.796H136.572V427.653H79.429V484.796Z" fill="#2D5967"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Icon Text Label_5">
|
||||
<text id="IconLabel_10" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="60.0078" y="504.04">Table storage</tspan></text>
|
||||
<text id="IconLabel_11" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="87.0312" y="520.04">Azure</tspan></text>
|
||||
<text id="IconLabel_12" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="61.4922" y="536.04">PostgresSQL</tspan></text>
|
||||
<text id="IconLabel_13" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="53.7266" y="552.04">Azure MariaDB</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Azure Cosmos DB">
|
||||
<g id="Azure-Cosmos-DB">
|
||||
<g id="Group_2">
|
||||
<g id="group1050-1">
|
||||
<g id="group1051-2">
|
||||
<g id="group1052-3">
|
||||
<g id="group1053-4">
|
||||
<g id="group1054-5">
|
||||
<g id="shape1055-6">
|
||||
<path id="Vector_26" fill-rule="evenodd" clip-rule="evenodd" d="M86.664 608.158C86.5823 608.158 86.5012 608.143 86.4255 608.112C86.3499 608.081 86.2812 608.036 86.2233 607.979C86.1655 607.921 86.1197 607.853 86.0887 607.778C86.0576 607.703 86.0419 607.623 86.0424 607.542C86.0398 605.68 85.2924 603.895 83.9638 602.578C82.6353 601.262 80.8341 600.52 78.9549 600.517C78.7907 600.517 78.6331 600.453 78.5167 600.338C78.4002 600.223 78.3343 600.067 78.3333 599.905C78.3333 599.824 78.3493 599.744 78.3805 599.669C78.4117 599.594 78.4575 599.526 78.5152 599.469C78.573 599.412 78.6415 599.367 78.717 599.336C78.7924 599.305 78.8733 599.289 78.9549 599.289C80.8358 599.284 82.6378 598.539 83.9654 597.219C85.2929 595.899 86.0375 594.111 86.0358 592.247C86.0352 592.166 86.0509 592.086 86.082 592.011C86.113 591.936 86.1588 591.868 86.2166 591.811C86.2745 591.753 86.3432 591.708 86.4188 591.677C86.4945 591.646 86.5756 591.631 86.6573 591.631C86.7391 591.631 86.8202 591.646 86.8958 591.677C86.9715 591.708 87.0402 591.753 87.0981 591.811C87.1559 591.868 87.2016 591.936 87.2327 592.011C87.2637 592.086 87.2795 592.166 87.2789 592.247C87.2803 594.108 88.0259 595.893 89.3523 597.21C90.6787 598.528 92.4779 599.271 94.3562 599.277C94.438 599.277 94.519 599.292 94.5947 599.323C94.6703 599.354 94.7391 599.399 94.7969 599.456C94.8547 599.514 94.9005 599.582 94.9315 599.657C94.9626 599.732 94.9783 599.812 94.9778 599.893C94.9783 599.974 94.9626 600.054 94.9315 600.129C94.9005 600.204 94.8547 600.272 94.7969 600.33C94.7391 600.387 94.6703 600.432 94.5947 600.463C94.519 600.494 94.438 600.509 94.3562 600.509C92.4786 600.513 90.6793 601.254 89.3522 602.57C88.025 603.886 87.2782 605.669 87.2753 607.53C87.2745 607.693 87.2088 607.849 87.0924 607.964C86.976 608.08 86.8183 608.145 86.6537 608.145L86.664 608.158Z" fill="#50E6FF"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="group1056-8">
|
||||
<g id="shape1057-9">
|
||||
<path id="Vector_27" fill-rule="evenodd" clip-rule="evenodd" d="M131.33 650.781C131.198 650.781 131.072 650.729 130.978 650.636C130.885 650.544 130.833 650.418 130.833 650.288C130.834 649.548 130.688 648.814 130.403 648.13C130.118 647.446 129.7 646.824 129.172 646.301C128.644 645.777 128.017 645.362 127.326 645.079C126.636 644.795 125.896 644.65 125.149 644.651C125.018 644.651 124.892 644.599 124.799 644.508C124.706 644.416 124.653 644.292 124.652 644.162C124.652 644.031 124.704 643.906 124.797 643.813C124.891 643.721 125.017 643.669 125.149 643.669C126.654 643.672 128.098 643.084 129.165 642.032C130.232 640.981 130.833 639.553 130.838 638.062C130.838 637.932 130.89 637.806 130.983 637.714C131.077 637.621 131.203 637.569 131.335 637.569C131.467 637.569 131.594 637.621 131.687 637.714C131.78 637.806 131.833 637.932 131.833 638.062C131.833 639.551 132.43 640.978 133.491 642.032C134.552 643.086 135.992 643.679 137.494 643.683C137.56 643.682 137.626 643.693 137.687 643.718C137.749 643.742 137.805 643.778 137.852 643.824C137.899 643.87 137.936 643.925 137.962 643.985C137.988 644.045 138.001 644.11 138.001 644.176C138.001 644.241 137.988 644.306 137.962 644.367C137.936 644.427 137.899 644.482 137.852 644.528C137.805 644.573 137.749 644.61 137.687 644.634C137.626 644.658 137.56 644.67 137.494 644.669C135.99 644.671 134.549 645.263 133.486 646.317C132.422 647.37 131.824 648.798 131.823 650.288C131.821 650.418 131.769 650.543 131.675 650.634C131.582 650.726 131.456 650.777 131.325 650.777L131.33 650.781Z" fill="#50E6FF"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="group1058-11">
|
||||
<g id="group1059-12">
|
||||
<g id="shape1060-13">
|
||||
<path id="Vector_28" d="M107.938 642.607C119.918 642.607 129.63 632.985 129.63 621.116C129.63 609.246 119.918 599.624 107.938 599.624C95.9573 599.624 86.2454 609.246 86.2454 621.116C86.2454 632.985 95.9573 642.607 107.938 642.607Z" fill="url(#paint2_radial_17642_377913)"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="group1061-17">
|
||||
<g id="shape1062-18">
|
||||
<path id="Vector_29" fill-rule="evenodd" clip-rule="evenodd" d="M96.7199 635.525C104.616 635.746 104.633 623.911 96.7199 624.081C96.7539 623.911 96.7539 623.758 96.7539 623.588C96.7199 620.413 94.1049 617.849 90.8956 617.883H86.5656C85.2751 623.554 87.4146 630.771 91.8465 635.525H96.7199Z" fill="#F2F2F2"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="group1063-20">
|
||||
<g id="shape1064-21">
|
||||
<path id="Vector_30" fill-rule="evenodd" clip-rule="evenodd" d="M129.304 617.158C129.304 617.107 129.304 617.056 129.287 617.005C128.59 613.264 126.876 609.783 124.329 606.936C123.993 606.8 123.647 606.692 123.293 606.613C122.366 606.354 121.392 606.307 120.443 606.474C119.495 606.641 118.598 607.02 117.818 607.58C117.039 608.141 116.397 608.869 115.943 609.71C115.488 610.552 115.232 611.484 115.193 612.438C114.957 612.409 114.719 612.392 114.48 612.387C113.032 612.383 111.63 612.887 110.521 613.81C109.413 614.733 108.67 616.014 108.424 617.428C108.177 618.841 108.444 620.296 109.177 621.533C109.909 622.77 111.06 623.711 112.425 624.188C113.031 624.426 113.676 624.547 114.327 624.545H121.493C124.372 622.385 126.992 619.907 129.304 617.158Z" fill="#F2F2F2"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="group1065-23">
|
||||
<g id="shape1066-24">
|
||||
<path id="Vector_31" fill-rule="evenodd" clip-rule="evenodd" d="M136.897 603.129C134.673 599.479 129.494 598.052 122.243 599.122C119.757 599.47 117.299 599.998 114.89 600.701C116.803 601.354 118.619 602.256 120.29 603.384C121.139 603.197 121.988 602.977 122.803 602.858C124.09 602.655 125.389 602.548 126.692 602.535C127.97 602.352 129.273 602.489 130.483 602.934C131.694 603.379 132.772 604.118 133.62 605.082C134.961 607.307 133.824 611.127 130.479 615.559C125.844 621.278 120.164 626.082 113.736 629.721C107.443 633.613 100.467 636.297 93.1725 637.634C87.6538 638.449 83.6974 637.634 82.3559 635.409C80.9975 633.202 82.1352 629.364 85.4803 624.949C85.9049 624.406 85.9898 624.117 86.4652 623.574C86.2418 621.677 86.2703 619.758 86.5501 617.868C85.0503 619.361 83.6707 620.968 82.4239 622.674C78.0599 628.464 76.8712 633.677 79.0957 637.328C80.2638 638.88 81.8226 640.102 83.6164 640.871C85.4102 641.64 87.3761 641.929 89.3179 641.709C90.7965 641.699 92.2722 641.58 93.7328 641.352C101.518 639.947 108.967 637.101 115.689 632.964C122.552 629.073 128.612 623.935 133.552 617.817C137.933 612.01 139.122 606.797 136.897 603.129Z" fill="#50E6FF"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Icon Text Label_6">
|
||||
<text id="IconLabel_14" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="87.0312" y="667.781">Azure</tspan></text>
|
||||
<text id="IconLabel_15" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="66.3672" y="683.781">Cosmos DB</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Object Storage">
|
||||
<g id="Services/Object-Storage">
|
||||
<g id="Group_3">
|
||||
<g id="Group_4">
|
||||
<g id="Group_5">
|
||||
<path id="Vector_32" d="M81.8497 780.992C80.1395 780.992 78.7143 779.563 78.7143 777.849V725.563C78.7143 723.849 80.1395 722.42 81.8497 722.42H134.154C135.864 722.42 137.289 723.849 137.289 725.563V777.992C137.289 779.706 135.864 781.135 134.154 781.135L81.8497 780.992Z" fill="white"/>
|
||||
<path id="Vector_33" d="M134.01 723.135C135.292 723.135 136.432 724.277 136.432 725.563V777.992C136.432 779.277 135.292 780.42 134.01 780.42H81.848C80.5653 780.277 79.4252 779.135 79.4252 777.849V725.563C79.4252 724.277 80.5653 723.135 81.848 723.135H134.01ZM134.01 721.706H81.848C79.7102 721.706 78 723.42 78 725.563V777.992C78 779.992 79.7102 781.706 81.848 781.706H134.152C136.29 781.706 138 779.992 138 777.849V725.563C137.857 723.42 136.147 721.706 134.01 721.706Z" fill="white"/>
|
||||
</g>
|
||||
<g id="Group_6">
|
||||
<g id="Group_7">
|
||||
<path id="Vector_34" d="M121.325 738.278L125.173 744.992L121.325 751.706H113.629L109.781 744.992L113.629 738.278H121.325ZM122.608 736.278H112.346L107.216 745.135L112.346 753.992H122.608L127.738 745.135L122.608 736.278Z" fill="#2D5967"/>
|
||||
</g>
|
||||
<g id="Group_8">
|
||||
<path id="Vector_35" d="M107.5 758.706C111.205 758.706 114.198 761.706 114.198 765.42C114.198 769.135 111.205 772.135 107.5 772.135C103.794 772.135 100.801 769.135 100.801 765.42C100.801 761.706 103.794 758.706 107.5 758.706ZM107.5 756.706C102.654 756.706 98.6635 760.706 98.6635 765.563C98.6635 770.42 102.654 774.42 107.5 774.42C112.345 774.42 116.336 770.42 116.336 765.563C116.336 760.563 112.345 756.706 107.5 756.706Z" fill="#2D5967"/>
|
||||
</g>
|
||||
<g id="Group_9">
|
||||
<path id="Vector_36" d="M97.3817 739.992L103.652 751.278H91.2534L97.3817 739.992ZM97.3817 735.707L87.6905 753.421H107.215L97.3817 735.707Z" fill="#2D5967"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Group_10">
|
||||
<path id="Vector_37" d="M134.01 780.278H81.8485C80.5658 780.278 79.4257 779.135 79.4257 777.85V728.85H136.433V777.85C136.433 779.135 135.293 780.278 134.01 780.278ZM81.5634 730.992V777.992C81.5634 778.135 81.7059 778.278 81.8485 778.278H134.153C134.295 778.278 134.438 778.135 134.438 777.992V730.992H81.5634Z" fill="#2D5967"/>
|
||||
</g>
|
||||
<g id="Group_11">
|
||||
<path id="Vector_38" d="M136.433 727.278H79.4257V725.564C79.4257 724.278 80.5658 723.135 81.8485 723.135H134.153C135.293 723.135 136.433 724.278 136.433 725.564V727.278Z" fill="#2D5967"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Icon Text Label_7">
|
||||
<text id="IconLabel_16" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="69.3672" y="799.522">OCI Object</tspan></text>
|
||||
<text id="IconLabel_17" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="80.1875" y="815.522">Storage</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Azure Blob Storage">
|
||||
<g id="Azure-Blob-Storage">
|
||||
<g id="Group 900">
|
||||
<path id="Vector_39" d="M121.447 1004.52H94.5529C93.4426 1004.52 92.4178 1005.11 91.8666 1006.07L78.4194 1029.37C77.8681 1030.33 77.8681 1031.51 78.4194 1032.47L91.8666 1055.76C92.4178 1056.73 93.4504 1057.32 94.5529 1057.32H121.447C122.558 1057.32 123.582 1056.73 124.134 1055.76L137.581 1032.47C138.132 1031.51 138.132 1030.33 137.581 1029.37L124.134 1006.07C123.582 1005.11 122.558 1004.52 121.447 1004.52Z" fill="#2979FF"/>
|
||||
<path id="Vector_40" d="M120.422 1048H95.5776C94.7235 1048 94.0248 1047.3 94.0248 1046.45V1015.39C94.0248 1014.54 94.7235 1013.84 95.5776 1013.84H115.764L121.975 1020.05V1046.45C121.975 1047.3 121.276 1048 120.422 1048Z" fill="white"/>
|
||||
<path id="Vector_41" d="M115.764 1013.84V1018.5C115.764 1019.35 116.463 1020.05 117.317 1020.05H121.975L115.764 1013.84Z" fill="#B1CFFF"/>
|
||||
<path id="Vector_42" d="M105.306 1030.66H103.233V1024.06L101.199 1024.65V1023.09L105.12 1021.73H105.306V1030.66ZM115.298 1027.01C115.298 1027.65 115.22 1028.21 115.073 1028.68C114.925 1029.16 114.708 1029.55 114.436 1029.86C114.165 1030.17 113.838 1030.4 113.458 1030.55C113.078 1030.69 112.658 1030.77 112.2 1030.77C111.742 1030.77 111.315 1030.69 110.935 1030.55C110.554 1030.4 110.228 1030.17 109.949 1029.86C109.677 1029.55 109.46 1029.15 109.304 1028.68C109.149 1028.21 109.079 1027.65 109.079 1027.01V1025.38C109.079 1024.73 109.157 1024.17 109.304 1023.7C109.452 1023.23 109.669 1022.83 109.941 1022.52C110.213 1022.21 110.539 1021.98 110.919 1021.83C111.3 1021.67 111.719 1021.6 112.177 1021.6C112.635 1021.6 113.054 1021.68 113.435 1021.83C113.815 1021.98 114.149 1022.21 114.421 1022.52C114.693 1022.83 114.91 1023.23 115.057 1023.7C115.205 1024.17 115.29 1024.73 115.29 1025.38V1027.01H115.298ZM113.233 1025.11C113.233 1024.76 113.21 1024.46 113.163 1024.21C113.116 1023.97 113.047 1023.77 112.953 1023.62C112.86 1023.47 112.752 1023.37 112.627 1023.3C112.503 1023.23 112.356 1023.19 112.193 1023.19C112.029 1023.19 111.882 1023.23 111.75 1023.3C111.618 1023.37 111.509 1023.47 111.424 1023.62C111.338 1023.77 111.269 1023.97 111.222 1024.21C111.175 1024.46 111.152 1024.76 111.152 1025.11V1027.26C111.152 1027.63 111.175 1027.93 111.222 1028.18C111.269 1028.43 111.338 1028.62 111.432 1028.77C111.525 1028.92 111.634 1029.03 111.765 1029.1C111.897 1029.17 112.045 1029.2 112.208 1029.2C112.371 1029.2 112.511 1029.17 112.643 1029.1C112.775 1029.03 112.884 1028.92 112.969 1028.77C113.062 1028.62 113.124 1028.42 113.171 1028.18C113.217 1027.93 113.241 1027.63 113.241 1027.26V1025.11H113.233ZM106.929 1039.57C106.929 1040.21 106.851 1040.77 106.703 1041.25C106.556 1041.72 106.338 1042.11 106.067 1042.42C105.795 1042.73 105.469 1042.96 105.088 1043.11C104.708 1043.26 104.289 1043.33 103.831 1043.33C103.373 1043.33 102.946 1043.26 102.565 1043.11C102.185 1042.96 101.859 1042.73 101.579 1042.42C101.307 1042.11 101.09 1041.71 100.935 1041.25C100.779 1040.77 100.71 1040.21 100.71 1039.57V1037.94C100.71 1037.29 100.787 1036.74 100.935 1036.26C101.082 1035.79 101.3 1035.39 101.571 1035.08C101.843 1034.77 102.169 1034.54 102.55 1034.39C102.93 1034.24 103.349 1034.17 103.815 1034.17C104.281 1034.17 104.693 1034.24 105.073 1034.39C105.453 1034.54 105.787 1034.77 106.059 1035.08C106.331 1035.39 106.548 1035.79 106.696 1036.26C106.843 1036.74 106.929 1037.29 106.929 1037.94V1039.57ZM104.863 1037.67C104.863 1037.32 104.84 1037.02 104.793 1036.77C104.747 1036.53 104.677 1036.33 104.584 1036.18C104.491 1036.04 104.382 1035.93 104.258 1035.86C104.134 1035.79 103.986 1035.76 103.823 1035.76C103.66 1035.76 103.512 1035.79 103.38 1035.86C103.248 1035.93 103.14 1036.03 103.054 1036.18C102.969 1036.33 102.899 1036.53 102.852 1036.77C102.806 1037.02 102.783 1037.32 102.783 1037.67V1039.83C102.783 1040.19 102.806 1040.49 102.852 1040.74C102.899 1040.99 102.969 1041.18 103.062 1041.33C103.155 1041.48 103.264 1041.59 103.396 1041.66C103.528 1041.73 103.675 1041.76 103.838 1041.76C104.002 1041.76 104.141 1041.73 104.273 1041.66C104.405 1041.59 104.514 1041.49 104.599 1041.33C104.693 1041.18 104.755 1040.98 104.801 1040.74C104.848 1040.49 104.871 1040.19 104.871 1039.83V1037.67H104.863ZM113.683 1043.22H111.61V1036.62L109.576 1037.22V1035.65L113.497 1034.29H113.683V1043.22Z" fill="#03A9F4"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Icon Text Label_8">
|
||||
<text id="IconLabel_18" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="87.0312" y="1079">Azure</tspan></text>
|
||||
<text id="IconLabel_19" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="62.0078" y="1095">Blob Storage</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Azure Data Factory">
|
||||
<g id="Data-Factory">
|
||||
<g id="Group 1508">
|
||||
<path id="Vector_43" d="M387 180.411V166.612C387.001 166.513 386.973 166.416 386.919 166.333C386.865 166.251 386.787 166.186 386.696 166.148C386.605 166.11 386.504 166.101 386.407 166.12C386.311 166.14 386.222 166.188 386.153 166.259L372.035 180.376L357.353 195.058V205.188H399.988C400.253 205.192 400.517 205.144 400.763 205.044C401.01 204.945 401.233 204.797 401.421 204.609C401.609 204.421 401.757 204.198 401.856 203.951C401.956 203.705 402.004 203.441 402 203.176V166.612C402.001 166.513 401.973 166.416 401.919 166.333C401.865 166.251 401.787 166.186 401.696 166.148C401.605 166.11 401.504 166.101 401.407 166.12C401.31 166.14 401.222 166.188 401.153 166.259L387 180.411Z" fill="#005BA1"/>
|
||||
<path id="Vector_44" d="M357 156.059C348.706 156.059 342 153.624 342 150.482V203.176C341.996 203.441 342.044 203.705 342.144 203.951C342.243 204.198 342.391 204.421 342.579 204.609C342.767 204.797 342.99 204.945 343.237 205.044C343.483 205.144 343.747 205.192 344.012 205.188H372V150.482C372 153.624 365.294 156.059 357 156.059Z" fill="url(#paint3_linear_17642_377913)"/>
|
||||
<path id="Vector_45" d="M392.823 189.2H386.788C386.242 189.2 385.8 189.642 385.8 190.188V196.223C385.8 196.769 386.242 197.211 386.788 197.211H392.823C393.369 197.211 393.812 196.769 393.812 196.223V190.188C393.812 189.642 393.369 189.2 392.823 189.2Z" fill="white"/>
|
||||
<path id="Vector_46" d="M378.918 189.2H372.883C372.337 189.2 371.895 189.642 371.895 190.188V196.223C371.895 196.769 372.337 197.211 372.883 197.211H378.918C379.464 197.211 379.906 196.769 379.906 196.223V190.188C379.906 189.642 379.464 189.2 378.918 189.2Z" fill="white"/>
|
||||
<path id="Vector_47" d="M365.011 189.2H358.976C358.43 189.2 357.987 189.642 357.987 190.188V196.223C357.987 196.769 358.43 197.211 358.976 197.211H365.011C365.557 197.211 365.999 196.769 365.999 196.223V190.188C365.999 189.642 365.557 189.2 365.011 189.2Z" fill="white"/>
|
||||
<path id="Vector_48" d="M372 150.483C372 153.483 365.294 155.918 357 155.918C348.706 155.918 342 153.624 342 150.483C342 147.341 348.706 145.188 357 145.188C365.294 145.188 372 147.624 372 150.483Z" fill="#EAEAEA"/>
|
||||
<path id="Vector_49" d="M368.47 150.165C368.47 152.106 363.317 153.694 356.964 153.694C350.612 153.694 345.459 152.176 345.459 150.165C345.459 148.153 350.823 146.741 357 146.741C363.176 146.741 368.47 148.259 368.47 150.165Z" fill="#50E6FF"/>
|
||||
<path id="Vector_50" d="M357 150.977C353.914 150.916 350.838 151.357 347.894 152.283C350.83 153.248 353.91 153.702 357 153.624C360.089 153.702 363.169 153.248 366.105 152.283C363.161 151.357 360.086 150.916 357 150.977Z" fill="#198AB3"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Icon Text Label_9">
|
||||
<text id="IconLabel_20" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="351.031" y="223.004">Azure</tspan></text>
|
||||
<text id="IconLabel_21" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="326.164" y="239.004">Data Factory</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Oracle Database@Azure">
|
||||
<g id="Oracle-Database@Azure">
|
||||
<g id="Group_12">
|
||||
<path id="Vector_51" d="M381.37 475.952C370.132 475.952 361.022 473.976 361.022 471.54V481.811C361.022 484.248 370.132 486.223 381.37 486.223C392.607 486.223 401.717 484.248 401.717 481.811V471.54C401.717 473.976 392.607 475.952 381.37 475.952ZM398.49 478.043C396.953 478.574 395.36 478.993 393.759 479.288C391.851 479.637 389.898 479.816 387.953 479.816C387.485 479.816 387.103 479.438 387.103 478.97C387.103 478.501 387.482 478.123 387.953 478.123C389.796 478.123 391.645 477.954 393.454 477.622C394.971 477.343 396.478 476.948 397.936 476.443C398.381 476.29 398.862 476.523 399.018 476.968C399.171 477.409 398.938 477.894 398.494 478.047L398.49 478.043ZM381.37 462.742C370.132 462.742 361.022 460.767 361.022 458.33V469.146C361.022 471.583 370.132 473.555 381.37 473.555C392.607 473.555 401.717 471.58 401.717 469.143V458.327C401.717 460.763 392.607 462.739 381.37 462.739V462.742ZM398.49 465.192C396.95 465.723 395.36 466.142 393.759 466.437C391.851 466.786 389.895 466.965 387.953 466.965C387.485 466.965 387.103 466.586 387.103 466.118C387.103 465.65 387.482 465.272 387.953 465.272C389.796 465.272 391.645 465.102 393.454 464.77C394.971 464.492 396.478 464.097 397.936 463.592C398.381 463.439 398.862 463.672 399.018 464.116C399.174 464.561 398.938 465.043 398.494 465.195L398.49 465.192ZM381.37 441.671C370.132 441.671 361.022 443.623 361.022 446.853V455.94C361.022 458.376 370.132 460.348 381.37 460.348C392.607 460.348 401.717 458.373 401.717 455.936V447.182C401.717 443.62 392.607 441.671 381.37 441.671ZM398.49 452.709C396.95 453.241 395.36 453.659 393.759 453.954C391.851 454.303 389.898 454.482 387.953 454.482C387.485 454.482 387.103 454.104 387.103 453.636C387.103 453.168 387.482 452.789 387.953 452.789C389.796 452.789 391.645 452.62 393.454 452.288C394.968 452.009 396.478 451.614 397.936 451.109C398.381 450.956 398.862 451.189 399.018 451.634C399.171 452.075 398.938 452.56 398.494 452.713L398.49 452.709ZM381.37 449.705C371.247 449.705 363.044 447.862 363.044 446.77C363.044 445.429 371.247 443.357 381.37 443.357C391.492 443.357 399.695 445.512 399.695 446.77C399.695 447.912 391.492 449.705 381.37 449.705Z" fill="url(#paint4_linear_17642_377913)"/>
|
||||
<path id="Vector_52" d="M361.022 446.767V446.611C361.022 443.6 368.95 441.701 379.139 441.459C377.967 438.829 375.514 436.881 372.512 436.482C372.257 430.616 367.337 426.048 361.471 426.23C356.803 426.147 352.59 429.019 350.963 433.395C345.98 433.996 342.185 438.152 342.039 443.168C342.262 448.839 347.029 453.257 352.699 453.055C353.015 453.055 353.337 453.042 353.636 453.015H361.019L361.022 446.767Z" fill="url(#paint5_linear_17642_377913)"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Icon Text Label_10">
|
||||
<text id="IconLabel_22" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="313.219" y="504.04">Oracle Database</tspan></text>
|
||||
<text id="IconLabel_23" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="343.016" y="520.04">@Azure</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Azure Data Lake Storage">
|
||||
<g id="azure-data-lake-storage-gen2">
|
||||
<g id="Group 1511">
|
||||
<path id="Vector_53" d="M350.333 730.13V757.332C351.993 759.121 354.238 760.195 356.841 760.195C359.444 760.195 362.893 758.405 364.552 755.77C366.212 758.405 369.043 760.195 372.362 760.195V781.54V737.841C360.42 737.776 350.854 734.425 350.333 730.13Z" fill="#3E3E3E"/>
|
||||
<path id="Vector_54" d="M372.751 737.841C372.621 737.841 372.523 737.841 372.393 737.841V781.54V781.67H372.621V760.195C375.94 760.065 378.771 758.405 380.333 755.77C381.992 758.405 384.953 760.195 388.272 760.195C391.591 760.195 393.38 758.991 395.04 757.201V773.536C395.04 777.798 385.604 781.41 373.825 781.637C385.669 781.442 395.137 777.831 395.137 773.536V730.13C394.649 734.457 384.888 737.841 372.751 737.841Z" fill="#A0A1A2"/>
|
||||
<path id="Vector_55" d="M364.552 755.77C362.893 758.406 360.16 760.195 356.841 760.195C353.522 760.195 351.993 759.121 350.333 757.332V773.568C350.333 777.993 360.16 781.573 372.394 781.67V760.195C369.075 760.195 366.244 758.406 364.585 755.77H364.552Z" fill="#3999C6"/>
|
||||
<path id="Vector_56" d="M395.04 773.568V757.234C393.38 759.024 391.005 760.227 388.272 760.227C385.539 760.227 381.992 758.438 380.333 755.802C378.803 758.438 375.94 760.097 372.621 760.227V781.702C373.012 781.702 373.435 781.702 373.825 781.702C385.604 781.475 395.04 777.863 395.04 773.601V773.568Z" fill="#59B4D9"/>
|
||||
<path id="Vector_57" d="M372.394 737.841C372.524 737.841 372.622 737.841 372.752 737.841C384.889 737.841 394.65 734.458 395.138 730.13C395.138 730 395.138 729.902 395.138 729.772C395.138 725.379 385.051 721.703 372.719 721.703C360.388 721.703 350.333 725.379 350.333 729.772C350.333 734.165 350.333 730 350.333 730.13C350.821 734.425 360.388 737.776 372.362 737.841H372.394ZM372.752 723.948C373.045 723.948 373.37 723.948 373.663 723.948C374.281 723.948 374.867 723.948 375.453 724.013C375.746 724.013 376.038 724.013 376.331 724.045C377.503 724.11 378.609 724.208 379.683 724.371C380.756 724.533 380.203 724.436 380.464 724.468C382.546 724.761 384.401 725.184 385.93 725.672C388.793 726.616 390.55 727.885 390.55 729.284C390.55 730.683 389.249 731.659 386.873 732.603C386.873 732.603 386.808 732.603 386.776 732.603C383.522 733.839 378.446 734.653 372.752 734.653C367.058 734.653 361.982 733.839 358.728 732.603C358.728 732.603 358.663 732.603 358.631 732.603C357.915 732.31 357.264 731.952 356.711 731.627C355.67 730.976 355.084 730.293 354.954 729.544C354.954 729.479 354.954 729.382 354.954 729.317C354.954 726.356 362.893 723.98 372.719 723.98L372.752 723.948Z" fill="white"/>
|
||||
<path id="Vector_58" d="M354.986 729.544C355.084 730.293 355.702 731.009 356.744 731.628C355.735 730.977 355.116 730.261 354.986 729.544Z" fill="#7FBA00"/>
|
||||
<path id="Vector_59" d="M358.729 732.603C361.983 733.839 367.059 734.653 372.753 734.653C378.447 734.653 383.523 733.839 386.777 732.603C383.458 731.301 378.382 730.488 372.753 730.488C367.124 730.488 361.918 731.301 358.729 732.603Z" fill="#7FBA00"/>
|
||||
<path id="Vector_60" d="M356.743 731.627C357.263 731.985 357.914 732.31 358.663 732.603C358.663 732.603 358.728 732.603 358.76 732.603C361.949 731.301 367.025 730.488 372.784 730.488C378.543 730.488 383.489 731.301 386.808 732.603C386.808 732.603 386.873 732.603 386.906 732.603C389.281 731.659 390.582 730.585 390.582 729.284C390.582 727.982 388.825 726.616 385.962 725.672C384.433 725.152 382.578 724.761 380.496 724.468C380.235 724.436 379.975 724.403 379.715 724.371C378.641 724.241 377.535 724.143 376.363 724.045C376.07 724.045 375.778 724.013 375.485 724.013C374.899 724.013 374.281 723.98 373.695 723.948C373.402 723.948 373.077 723.948 372.784 723.948C362.958 723.948 355.018 726.323 355.018 729.284C355.018 732.245 355.018 729.447 355.018 729.512C355.148 730.228 355.767 730.943 356.775 731.594L356.743 731.627Z" fill="#B8D432"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Icon Text Label_11">
|
||||
<text id="IconLabel_24" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="332.164" y="799.522">Azure Data</tspan></text>
|
||||
<text id="IconLabel_25" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="325.258" y="815.522">Lake Storage</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Power BI">
|
||||
<g id="Azure-Power-BI">
|
||||
<g id="Group_13">
|
||||
<g id="group1076-1">
|
||||
<g id="group1077-2">
|
||||
<g id="shape1078-3">
|
||||
<path id="Vector_61" fill-rule="evenodd" clip-rule="evenodd" d="M633.56 426.224V484.999H606.895V426.224H633.56Z" fill="url(#paint6_linear_17642_377913)"/>
|
||||
</g>
|
||||
<g id="shape1079-7">
|
||||
<path id="Vector_62" fill-rule="evenodd" clip-rule="evenodd" d="M616.895 443.618V485.244H590.229V441.166H613.556C615.399 441.166 616.895 442.26 616.895 443.618Z" fill="black" fill-opacity="0.2"/>
|
||||
</g>
|
||||
<g id="shape1080-9">
|
||||
<path id="Vector_63" fill-rule="evenodd" clip-rule="evenodd" d="M616.895 444.597V486.224H590.229V442.146H613.556C615.399 442.146 616.895 443.24 616.895 444.597Z" fill="black" fill-opacity="0.18"/>
|
||||
</g>
|
||||
<g id="shape1081-11">
|
||||
<path id="Vector_64" fill-rule="evenodd" clip-rule="evenodd" d="M616.895 443.373V484.999H590.229V440.921H613.556C615.399 440.921 616.895 442.015 616.895 443.373Z" fill="url(#paint7_linear_17642_377913)"/>
|
||||
</g>
|
||||
<g id="shape1082-15">
|
||||
<path id="Vector_65" fill-rule="evenodd" clip-rule="evenodd" d="M573.562 455.618V484.999H600.228V458.07C600.228 456.712 598.732 455.618 596.89 455.618H573.562Z" fill="url(#paint8_linear_17642_377913)"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Icon Text Label_12">
|
||||
<text id="IconLabel_26" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="572.078" y="504.04">Power BI</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<path id="Vector 57" d="M144 64H240V753.188H144" stroke="#312D2A" stroke-width="2"/>
|
||||
<path id="Vector 58" d="M144 321.188H240" stroke="#312D2A" stroke-width="2"/>
|
||||
<path id="Vector 65" d="M144 176.742H240" stroke="#312D2A" stroke-width="2"/>
|
||||
<path id="Vector 60" d="M272.917 465.896C273.308 465.505 273.308 464.872 272.917 464.481L266.553 458.117C266.163 457.727 265.529 457.727 265.139 458.117C264.748 458.508 264.748 459.141 265.139 459.532L270.796 465.188L265.139 470.845C264.748 471.236 264.748 471.869 265.139 472.26C265.529 472.65 266.163 472.65 266.553 472.26L272.917 465.896ZM144 466.188H272.21V464.188H144V466.188Z" fill="#312D2A"/>
|
||||
<path id="Vector 63" d="M568.707 466.931C569.098 466.54 569.098 465.907 568.707 465.517L562.343 459.153C561.953 458.762 561.319 458.762 560.929 459.153C560.538 459.543 560.538 460.176 560.929 460.567L566.586 466.224L560.929 471.881C560.538 472.271 560.538 472.904 560.929 473.295C561.319 473.685 561.953 473.685 562.343 473.295L568.707 466.931ZM408 467.224L568 467.224L568 465.224L408 465.224L408 467.224Z" fill="#312D2A"/>
|
||||
<path id="Vector 64" d="M372.707 525.731C372.317 525.341 371.683 525.341 371.293 525.731L364.929 532.095C364.538 532.486 364.538 533.119 364.929 533.51C365.319 533.9 365.953 533.9 366.343 533.51L372 527.853L377.657 533.51C378.047 533.9 378.681 533.9 379.071 533.51C379.462 533.119 379.462 532.486 379.071 532.095L372.707 525.731ZM373 721.188L373 526.438L371 526.438L371 721.188L373 721.188Z" fill="#312D2A"/>
|
||||
<path id="Vector 61" d="M272.707 1031.9C273.098 1031.51 273.098 1030.87 272.707 1030.48L266.343 1024.12C265.953 1023.73 265.319 1023.73 264.929 1024.12C264.538 1024.51 264.538 1025.14 264.929 1025.53L270.586 1031.19L264.929 1036.85C264.538 1037.24 264.538 1037.87 264.929 1038.26C265.319 1038.65 265.953 1038.65 266.343 1038.26L272.707 1031.9ZM144 1032.19H272V1030.19H144V1032.19Z" fill="#312D2A"/>
|
||||
<path id="Vector 62" d="M272.707 881.896C273.098 881.505 273.098 880.872 272.707 880.481L266.343 874.117C265.953 873.727 265.319 873.727 264.929 874.117C264.538 874.508 264.538 875.141 264.929 875.532L270.586 881.188L264.929 886.845C264.538 887.236 264.538 887.869 264.929 888.26C265.319 888.65 265.953 888.65 266.343 888.26L272.707 881.896ZM144 882.188H272V880.188H144V882.188Z" fill="#312D2A"/>
|
||||
<path id="Vector 59" d="M144 617.882H240" stroke="#312D2A" stroke-width="2"/>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_17642_377913" x1="86.3333" y1="302.667" x2="131.318" y2="302.667" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#005BA1"/>
|
||||
<stop offset="0.07" stop-color="#0060A9"/>
|
||||
<stop offset="0.36" stop-color="#0071C8"/>
|
||||
<stop offset="0.52" stop-color="#0078D4"/>
|
||||
<stop offset="0.64" stop-color="#0074CD"/>
|
||||
<stop offset="0.82" stop-color="#006ABB"/>
|
||||
<stop offset="1" stop-color="#005BA1"/>
|
||||
</linearGradient>
|
||||
<radialGradient id="paint1_radial_17642_377913" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(109.963 330.01) scale(26.3071 13.4724)">
|
||||
<stop stop-color="#F2F2F2"/>
|
||||
<stop offset="0.58" stop-color="#EEEEEE"/>
|
||||
<stop offset="1" stop-color="#E6E6E6"/>
|
||||
</radialGradient>
|
||||
<radialGradient id="paint2_radial_17642_377913" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(86.2454 599.624) scale(60.7382 60.1766)">
|
||||
<stop offset="0.185" stop-color="#5EA0EF"/>
|
||||
<stop offset="1" stop-color="#0078D4"/>
|
||||
</radialGradient>
|
||||
<linearGradient id="paint3_linear_17642_377913" x1="342" y1="177.906" x2="372" y2="177.906" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#005BA1"/>
|
||||
<stop offset="0.07" stop-color="#0060A9"/>
|
||||
<stop offset="0.36" stop-color="#0071C8"/>
|
||||
<stop offset="0.52" stop-color="#0078D4"/>
|
||||
<stop offset="0.64" stop-color="#0074CD"/>
|
||||
<stop offset="0.81" stop-color="#006ABB"/>
|
||||
<stop offset="0.99" stop-color="#005BA1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint4_linear_17642_377913" x1="361.022" y1="463.947" x2="401.717" y2="463.947" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#C74634"/>
|
||||
<stop offset="0.5" stop-color="#DB897D"/>
|
||||
<stop offset="1" stop-color="#C74634"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint5_linear_17642_377913" x1="360.587" y1="453.062" x2="360.587" y2="426.224" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#32BEDD"/>
|
||||
<stop offset="1" stop-color="#50E6FF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint6_linear_17642_377913" x1="597.485" y1="422.795" x2="619.263" y2="438.182" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#E6AD10"/>
|
||||
<stop offset="1" stop-color="#C87E0E"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint7_linear_17642_377913" x1="570.012" y1="432.896" x2="590.21" y2="450.305" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#F6D751"/>
|
||||
<stop offset="1" stop-color="#E6AD10"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint8_linear_17642_377913" x1="535.083" y1="433.671" x2="549.344" y2="456.203" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#F9E589"/>
|
||||
<stop offset="1" stop-color="#F6D751"/>
|
||||
</linearGradient>
|
||||
<clipPath id="clip0_17642_377913">
|
||||
<rect width="712" height="1112" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 56 KiB |
@@ -0,0 +1,7 @@
|
||||
The diagram you downloaded is available in these formats:
|
||||
- DRAWIO
|
||||
- SVG
|
||||
|
||||
You can customize them for your organization using the associated tools:
|
||||
- For DRAWIO format, use draw.io for Confluence, online at diagrams.net, or the desktop app. Go to diagrams.net for more information.
|
||||
- For SVG format, use an SVG editor such as Inkscape or Sketsa SVG Editor, which are free and available for Windows, macOS, Linux.
|
||||
@@ -0,0 +1,156 @@
|
||||
# Auto-extracted absolute_layout template from
|
||||
# kb/diagram/assets/archcenter-refs/autonomous-database-db-at-azure-diagram-oracle/autonomous-database-db-at-azure-diagram.drawio
|
||||
# Source: Oracle Architecture Center reference (canonical geometry).
|
||||
# Use this as the starting scaffold for a new spec — copy, rename ids,
|
||||
# and replace `type: TODO_identify` on services with the right OCI
|
||||
# type alias (adb_s, drg, fastconnect, etc.). Container coords and
|
||||
# edge waypoints are Oracle's canonical layout; preserve unless the
|
||||
# customer's topology requires a change.
|
||||
absolute_layout:
|
||||
canvas:
|
||||
width: 850
|
||||
height: 1100
|
||||
containers: []
|
||||
services:
|
||||
- id: s2
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1117
|
||||
y: 177
|
||||
w: 63
|
||||
h: 63
|
||||
- id: s1
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1117
|
||||
y: 178
|
||||
w: 62
|
||||
h: 62
|
||||
- id: s3
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1118
|
||||
y: 185
|
||||
w: 60
|
||||
h: 54
|
||||
- id: s11
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 780
|
||||
y: 186
|
||||
w: 63
|
||||
h: 55
|
||||
- id: s10
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 781
|
||||
y: 186
|
||||
w: 61
|
||||
h: 53
|
||||
- id: s12
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 781
|
||||
y: 187
|
||||
w: 60
|
||||
h: 52
|
||||
- id: s19
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 968
|
||||
y: 197
|
||||
w: 78
|
||||
h: 31
|
||||
- id: s20
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 972
|
||||
y: 197
|
||||
w: 88
|
||||
h: 43
|
||||
- id: s8
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 629
|
||||
y: 198
|
||||
w: 30
|
||||
h: 42
|
||||
- id: s7
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 629
|
||||
y: 199
|
||||
w: 30
|
||||
h: 41
|
||||
- id: s9
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 629
|
||||
y: 199
|
||||
w: 29
|
||||
h: 40
|
||||
- id: s4
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 38
|
||||
y: 293
|
||||
w: 60
|
||||
h: 43
|
||||
- id: s17
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 780
|
||||
y: 465
|
||||
w: 63
|
||||
h: 55
|
||||
- id: s16
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 781
|
||||
y: 466
|
||||
w: 61
|
||||
h: 53
|
||||
- id: s18
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 781
|
||||
y: 467
|
||||
w: 60
|
||||
h: 52
|
||||
- id: s6
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 252
|
||||
y: 478
|
||||
w: 63
|
||||
h: 63
|
||||
- id: s13
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 629
|
||||
y: 478
|
||||
w: 30
|
||||
h: 41
|
||||
- id: s14
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 629
|
||||
y: 478
|
||||
w: 30
|
||||
h: 42
|
||||
- id: s15
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 629
|
||||
y: 478
|
||||
w: 29
|
||||
h: 40
|
||||
- id: s5
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 40
|
||||
y: 483
|
||||
w: 63
|
||||
h: 42
|
||||
labels: []
|
||||
connections: []
|
||||
@@ -0,0 +1,790 @@
|
||||
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36" version="24.7.12">
|
||||
<diagram name="autonomous-database-db-at-azure" id="autonomous-database-db-at-azure">
|
||||
<mxGraphModel dx="792" dy="1097" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<UserObject label="" tags="Background" id="2">
|
||||
<mxCell style="vsdxID=2;fillColor=#FFFFFF;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry width="1236" height="609" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="3">
|
||||
<mxCell style="vsdxID=4;fillColor=#e4e1dd;gradientColor=none;shape=stencil(vVNdD4IgFP01POoQtopns//BEpVF4K6U9u/DYOZHrc023+7HgXPPhYNo2lS8FojgxoK5iFbmtkL0iAiRuhIgrYsQzRBNCwOiBHPTuc9r3iP76Gru/Q2dP4f7EwQ/fMZYTNmrcvJgDmfXhQAmMfFwCHgc7xJfmSMCIMGBoIt4J5sIjOVWGj0hVxxKETmqqFC8nLSaVoh6UQ7DKalHStg+PnzkXillGH2xmw3EzMmH6VaKWSxns2eZ/4i/3uTLUjaQ8cMnLng7rJBKeYOO+3NHupJ3M82e);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="1067" width="168" height="608" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="4">
|
||||
<mxCell style="vsdxID=5;fillColor=none;gradientColor=none;shape=stencil(vVNdD4IgFP01POoQtopns//BEpVF4K6U9u/DYOZHrc023+7HgXPPhYNo2lS8FojgxoK5iFbmtkL0iAiRuhIgrYsQzRBNCwOiBHPTuc9r3iP76Gru/Q2dP4f7EwQ/fMZYTNmrcvJgDmfXhQAmMfFwCHgc7xJfmSMCIMGBoIt4J5sIjOVWGj0hVxxKETmqqFC8nLSaVoh6UQ7DKalHStg+PnzkXillGH2xmw3EzMmH6VaKWSxns2eZ/4i/3uTLUjaQ8cMnLng7rJBKeYOO+3NHupJ3M82e);strokeColor=#9e9892;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="1067" width="168" height="608" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#312d2a;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1"><b>OCI Services<br/></b></font></p></div>" tags="Background" id="5">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=6;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="1102" y="7" width="203" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="6">
|
||||
<mxCell style="vsdxID=8;fillColor=#ecf3fb;gradientColor=none;shape=stencil(vVNBDoMgEHwNRxqUpIlna/9BKiopBbPSqr8vFLEqaQ9t4m2ZHZydxUE07xrWcpSSzoC+8l6UpkH0hNJUqIaDMLZCtEA0rzTwGvRdlf7cMsd01U0/3BcGf4+4GykZ/SnLDjR7IWdPZnCxXQjk0CUwBuSYeCSiTIyETBIDZoPoMGjDjNBqJS8Z1BxbMVxJVq9aXc95G8HTeFKohRc7fZhmI/6rm3n4aD872NmKz9P96ibez25PE/0W/73Lh8XsYeR7XmzxTlolpPRBXfa3ybSQTzUtng==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry width="947" height="608" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="7">
|
||||
<mxCell style="vsdxID=9;fillColor=none;gradientColor=none;shape=stencil(vVNBDoMgEHwNRxqUpIlna/9BKiopBbPSqr8vFLEqaQ9t4m2ZHZydxUE07xrWcpSSzoC+8l6UpkH0hNJUqIaDMLZCtEA0rzTwGvRdlf7cMsd01U0/3BcGf4+4GykZ/SnLDjR7IWdPZnCxXQjk0CUwBuSYeCSiTIyETBIDZoPoMGjDjNBqJS8Z1BxbMVxJVq9aXc95G8HTeFKohRc7fZhmI/6rm3n4aD872NmKz9P96ibez25PE/0W/73Lh8XsYeR7XmzxTlolpPRBXfa3ybSQTzUtng==);strokeColor=#0078d7;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry width="947" height="608" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#312d2a;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1"><b>Azure Region<br/></b></font></p></div>" tags="Background" id="8">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=10;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="8" y="7" width="203" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="9">
|
||||
<mxCell style="vsdxID=12;fillColor=#FFFFFF;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="9" y="34" width="930" height="566" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="10">
|
||||
<mxCell style="vsdxID=13;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);dashed=1;dashPattern=1.00 2.00;strokeColor=#0078d7;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="9" y="34" width="930" height="566" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#312d2a;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1"><b>Subscription<br/></b></font></p></div>" tags="Background" id="11">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=14;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="16" y="41" width="203" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="12">
|
||||
<mxCell style="vsdxID=16;fillColor=#dae8fc;gradientColor=none;shape=stencil(vVPREoIgEPwaHnUMdNJnq/9gEpWJxDko7e/DUFOpHmzGt+Nuj709WERSVdKaIRwoDfLCGp7pEpEDwphXJQOuTYTIEZE0l8AKkLcqs+eadsguusp7d0Nr+4KuAwcPe0piP4xfmZMFUzibKgxgP9xbPPQNOz/CNuNABkTQU7QebbnyQGqquaxm9IJCwTxD5uWCFrOSahirnXQ/nuDVREuS+BH5SL5WzTi8s58N5CzJx+nWqnH3s9nTON/iv3f5spgthPz2iwneTsu5ENao0/rSmSZlXU2OTw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="144" y="68" width="786" height="244" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="13">
|
||||
<mxCell style="vsdxID=17;fillColor=none;gradientColor=none;shape=stencil(vVPREoIgEPwaHnUMdNJnq/9gEpWJxDko7e/DUFOpHmzGt+Nuj709WERSVdKaIRwoDfLCGp7pEpEDwphXJQOuTYTIEZE0l8AKkLcqs+eadsguusp7d0Nr+4KuAwcPe0piP4xfmZMFUzibKgxgP9xbPPQNOz/CNuNABkTQU7QebbnyQGqquaxm9IJCwTxD5uWCFrOSahirnXQ/nuDVREuS+BH5SL5WzTi8s58N5CzJx+nWqnH3s9nTON/iv3f5spgthPz2iwneTsu5ENao0/rSmSZlXU2OTw==);strokeColor=#0078d7;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="144" y="68" width="786" height="244" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#312d2a;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1"><b>Availability Zone 1<br/></b></font></p></div>" tags="Background" id="14">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=18;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="466" y="75" width="321" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="15">
|
||||
<mxCell style="vsdxID=20;fillColor=#dae8fc;gradientColor=none;shape=stencil(vVPREoIgEPwaHnUMdNJnq/9gEpWJxDko7e/DUFOpHmzGt+Nuj709WERSVdKaIRwoDfLCGp7pEpEDwphXJQOuTYTIEZE0l8AKkLcqs+eadsguusp7d0Nr+4KuAwcPe0piP4xfmZMFUzibKgxgP9xbPPQNOz/CNuNABkTQU7QebbnyQGqquaxm9IJCwTxD5uWCFrOSahirnXQ/nuDVREuS+BH5SL5WzTi8s58N5CzJx+nWqnH3s9nTON/iv3f5spgthPz2iwneTsu5ENao0/rSmSZlXU2OTw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="144" y="347" width="786" height="244" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="16">
|
||||
<mxCell style="vsdxID=21;fillColor=none;gradientColor=none;shape=stencil(vVPREoIgEPwaHnUMdNJnq/9gEpWJxDko7e/DUFOpHmzGt+Nuj709WERSVdKaIRwoDfLCGp7pEpEDwphXJQOuTYTIEZE0l8AKkLcqs+eadsguusp7d0Nr+4KuAwcPe0piP4xfmZMFUzibKgxgP9xbPPQNOz/CNuNABkTQU7QebbnyQGqquaxm9IJCwTxD5uWCFrOSahirnXQ/nuDVREuS+BH5SL5WzTi8s58N5CzJx+nWqnH3s9nTON/iv3f5spgthPz2iwneTsu5ENao0/rSmSZlXU2OTw==);strokeColor=#0078d7;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="144" y="347" width="786" height="244" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#312d2a;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1"><b>Availability Zone 2<br/></b></font></p></div>" tags="Background" id="17">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=22;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="465" y="354" width="321" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="18">
|
||||
<mxCell style="vsdxID=24;fillColor=#FFFFFF;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="153" y="112" width="260" height="470" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="19">
|
||||
<mxCell style="vsdxID=25;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);dashed=1;dashPattern=1.00 2.00;strokeColor=#706e6f;strokeWidth=2;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="153" y="112" width="260" height="470" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="20">
|
||||
<mxCell style="vsdxID=27;fillColor=#FFFFFF;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="358" y="109" width="47" height="6" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="21">
|
||||
<mxCell style="vsdxID=29;fillColor=#86d633;gradientColor=#5e9624;shape=stencil(jVLtDoIwDHya/SWjDfIAiO9BZMgiMjJA4e1lKYatBMO/ftztel0FZn1ddEqA7Adrnuqjy6EWeBUAuq2V1cMSCcwFZpWx6mHN2JaUd4VDuuhl3u6FiXiJdBSQM6WxpPxG2PtoCRxTO02jC66EOGTICVhhhh1pQo7BYIwD2Q2+FgAiTENZf7S1JEPRhGn+lfQUfqLMJ3Ppj4Qh4pRH5tBf2l5h5rs+8sj+s9Ht6b9fgu1oKt00dHN+nx/ZUqIDxfwL);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="389" y="109" width="5" height="5" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="22">
|
||||
<mxCell style="vsdxID=30;fillColor=#86d633;gradientColor=#5e9624;shape=stencil(lVJBDoIwEHxNr6TdjRLPiP8wAtKIlBRQ+L3UhdCukehtO51hdsoITNry3OQCZNtZc8ufOutKgUcBoOsyt7qbJoGpwKQwNr9a09cZnZuzY7rpbh7uCwPpdjKSyqlAjoQoKd/nE9EvvSW+ous4jvaLQIUKOQADRlhFOHOQc3DZZMt2pc8AQIRxaOuvNkMyNPXTos/44upMDqEvi8qC+lthyPgpJgvpvxt8rsSfeyMm+6uVrv8pwTSsBSp0VVH//HteuAmismL6Ag==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="380" y="109" width="5" height="5" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="23">
|
||||
<mxCell style="vsdxID=31;fillColor=#86d633;gradientColor=#5e9624;shape=stencil(jVLbDoIwDP2avZLRBonPiP9BZMgiMjJA4e9lKQlbCYa3Xs7Z6ekqMOvrolMCZD9Y81JfXQ61wJsA0G2trB6WSGAuMKuMVU9rxrakvCsc0kVv83EvTMRLpKOAnCmNJeV3wj5GS+CY2mkaXXAlxCFDTsAKM+xIE3IMBmMcyG7wtQAQYRrK+qOtJRmKJkzzr6RTuIaizCdz6Y+EIeKUR+bQXxrsR+K7PvLI/rPR7em/X4LtaCrdNHRzfp8f2VKiA8X8Bw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="371" y="109" width="5" height="5" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="24">
|
||||
<mxCell style="vsdxID=32;fillColor=#50e6ff;gradientColor=none;shape=stencil(jZPRksIgDEW/htcMSUoLz677H47WLWO3dbCu7t8vXWiFjnV8C+FecgJB8ObS7M61IHkZXH+qb/YwNII/BJHtmtrZwUeCt4I3x97VX66/doewPu9G5Rh99z/jCffgMxpUNbpI/oaM1qDNf+YzGFrbJQZdARaZAaVM5furCwUwGhRUGA2YO+SdooZAl1FDSw1HDUJBUcMzfInrqP5QlZH6DNErVrngNFConFQuKHm6rJkzqTphQkXrlFgAmQxTroufPBeCUa96mi9y6kozMOddPTTTg5SAmPeVlua3RuWN2fLBYzKPtm3DYKf7y0n2qfALePsH);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="361" y="109" width="14" height="15" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="25">
|
||||
<mxCell style="vsdxID=33;fillColor=#1490df;gradientColor=none;shape=stencil(jZPRcsIgEEW/htcd2E1geVb7H06NDdOYOBhb/XuTQkbAavu2XA7s3eEiaHVqt8dGoDyNfvhsvt1ubAWtBaLr28a7caoEbQSt9oNvPvxw7ndhfdzO5Fwdhq/5hks4xwYI51Mor0FRQPZHeAt85/qEtwy1zXmEOuXfzz40UHFfysgvAgHHKy5YMougQZvI0GPnKCkGqZ97VTVUhdfY51e8AqSMZl6MPhmtGIwrMJgPVoxlLCidj5V0jYrRL1+AJSC/fLHSJivQNrcqc5uT81rlVmVuM80J/ScofwdrKu6p3LuuC6FO98sUT1L4AbS5AQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="361" y="99" width="14" height="15" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="26">
|
||||
<mxCell style="vsdxID=34;fillColor=#50e6ff;gradientColor=none;shape=stencil(lZLRksIgDEW/htcMJNLCs6v/4Wzrltlu62B19e9tN6AUp+v4Fm4uyRm4gtbHZneoBcrj4Pvv+tdVQyPoQyC6rqm9G8ZK0EbQet/7+sv3p67i82E3Oafqpz9PEy58zxSg1HQL5ZUV+Xfasrl1XWK2GgzNzBZKTP2fJ8/TFfeVlMEfBQJjWbpg7omChdUqeOh5c5AQAXGZNRkSWQ0U6l9YA1JnuJHtDqsBywz37glkCkHPWZ9WZ6xAdoZqyjBhgTR71OQTI2f2pIaAKKN8LA2KkaD1MuVbUXlhHotHIveubTnQaT9P8Chx+mlzAw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="389" y="109" width="15" height="15" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="27">
|
||||
<mxCell style="vsdxID=35;fillColor=#1490df;gradientColor=none;shape=stencil(jZJBcsIwDEVP461Gsmxirym9B1NC42maMCa0cHucyh1i05buLPk5eqN8xetjtz20SuNxiuNb+xl2U6f4SWkdhq6NYUonxRvF6/0Y29c4noad1IftTM6n9/Fj/sJZ3vkGaH6k8SIN58D5r86z8H0YFryzYAueEH+nCUxFezBmyb+couiQAJjxXJIDXEnrrEsil2RBu0zw3dTvjs7WP1sSWF9qAvu/LIkBbWmKpWXS8qY0xcoyLbrWrMaWmne/qlk90sRqnY0HqtZ5Y3LDGWh0qbqYzP9KyeNUpcMtkvvQ95Lo5X0d4dSS+PPmCg==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="389" y="99" width="14" height="15" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#706e6f;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1"><b>Application VNet/Subnet<br/></b></font></p></div>" tags="Background" id="28">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=36;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="161" y="120" width="389" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="29">
|
||||
<mxCell style="vsdxID=40;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lZPRDoIwDEW/Zq9LWQeEZ9T/MIqyiEAmKv69I51hnQTj21ruZac3q8DyVu/7Sii4Dba7VE9zHGqBG6GUaevKmsGdBG4FlqfOVmfb3dsj1f1+Uk6na/eY/jCSL5WYTSYFL2oUhcypsyP94W7JkJBASa29I4ktMCpqgVf4ssglKq9ArvBloaUOb21MG1ACQ3TM6RohcDwHjJwuGIHzfuCCVBjuIpxDzzQDhDU6l0WacULgeAlE8QUTYCzB5Uw44iyfkVcjnA0Bdc4xw0Fi8hG/s4nQF0F/P8d/9e4wv/2TaRpanfB7vCuuRXuG2zc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="1117" y="178" width="62" height="62" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="30">
|
||||
<mxCell style="vsdxID=41;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lZXRdoIwDIafprc9bUIpXDv3Hp6JgzMGHsQN335lrdCmCHpX4h/88iehDHeX8nAuGIhL37VfxW917EuGbwygasqiq3pzYrhnuDu1XfHZtdfmaJ/Ph1E5nr7bn/ENg83LkaMas0DcbAQ4Zv+Bd6v/uHY2QboMxZPMZUiSIgZwIj2Fbi6UcMidCGORC6U8Qf/P66rxYb2ECT+Tq7ReylxArgiuV9NcQZYSXs8rpKpFYFMOhLxUT3mNSxRX8xRCXIjMNQVoCGkhMtfwK/0YFqi5tBmUFSJrvR5DVE8EP2DkEmVfHoPNmX1Vv7UT4oUWi3XLMhVaJkK/BDWLDqEInVpfGBGQbS6LYHTyZEInb+J3ESkE2+jmXfKoOSocOyJf2GhJPJwZKJS3zVMpSDXPrcesf2478pxrTb+TUzfvXCnPIUQldi58dNbdXBtdc5gvglNV1/Ye8X+nF4cJ2UsH938=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="1117" y="177" width="63" height="63" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="31">
|
||||
<mxCell style="vsdxID=43;fillColor=#2d5967;gradientColor=none;shape=stencil(tZNNDsIgEIVPw5bA0Eq7rnqPJqWWWEtD69/tBYmx2IiwcDfMvG9mgDzEqqmrR4GATLNWR3GVzdwhtkUAcuiElrOJENshVrVKi4NW56Fx57G2Shud1MV2uDluU2BOLQXk7jKUYiifmb0DejksgILjrPCArMQ0AKwnmBYkADCzQJYCUEhcaT3hx6WTX+kfgP9xPPfU5HtriFYST5jH96QkoOUJ2lcxZof4FwgpTfD2Riv73llrWf/0kkk5H7LdAw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="1148" y="193" width="21" height="18" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="32">
|
||||
<mxCell style="vsdxID=44;fillColor=#2d5967;gradientColor=none;shape=stencil(lVTRcoMgEPwaXpnjiEWf0+Q/MompTK1mjGn17yMFlYORpm+w7rm7xwGT+3t1upUM4d537Wf5oy99xeQ7Q9RNVXa6n1ZMHpjcX9uu/OjaR3Ox+9vJMM3qq/02fxhsXQamBGG0WyE4Fr/I0bLPj87ShSUo4IV0JSKsgQEtlCvukNEhmHN0dYOMSA7ZFVwk1b2S1Y94o+K+xdWPoOJLbhkwNpSx4IBU2vupkxE4IyPG9mREejW2VyLidmLsEOOT2cgdHXitm3+MR3KYINlQ5JmioYAGAhrGFOQ0TJAlSwoCFVOK7zDooGdp7iDAH/2DpKhRCa8LBDkXYBkaz5oMOS9lXelztwVXKrgmnjXa8a2sRDI5J4Q5LdbX56rr2j5e/vfwtZog+9LJwxM=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="1138" y="214" width="18" height="18" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="33">
|
||||
<mxCell style="vsdxID=45;fillColor=#2d5967;gradientColor=none;shape=stencil(lZJNDoMgEIVPw5bAYCqurb2HiVhIKRjE/ty+UNJUm1Rl95j53mQmPMTqUbaDQEBG7+xF3FXnJWJHBKCMFE75oBBrEKt768TZ2cl06T20kYzqam9xwiP5igofILqAPFMFCkyrd+WUDFqZmYFTXC4NvMQrPOUYWAafvdAOw9bJ5P90sgApWUE/zV1w1hIbcBDf7+2V1ikd8/5vHEIpRYk1Lw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="1127" y="192" width="20" height="18" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="34">
|
||||
<mxCell style="vsdxID=46;fillColor=#2d5967;gradientColor=none;shape=stencil(pZTdcoMgEIWfhlsGWBG9TpP3yCSmMjWaIebv7YPFCgvVpu0du3yLZ886S2B1rrenigh27k33Ud30vq8JvBEhdFtXRvf2RGBNYHXoTPVuuku7d/FpO5DD6dhdhxfurq6UVMmhSrCHy3DGPuONwxvdBnhGxSK9uxj3OnfXYoQ5ptlduMQYPsawVFQVIwGYgEmvKOb1MSRuoZFJye/RRELctC/gaVtfnRa4c+8MpIOBFybz4yDx3IGqDNEZ5Wr+9QS3n5NyyYSggk8lBWAXMmxCmVPOsQ3BDwcx9L0POdYZ07FOC4g8EhrI8Mokj8QG7UBKwYxPsVpf8ac5/BO3B78ZDrpp3GIJ7+NNYlNuC8H6CQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="1118" y="185" width="60" height="54" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="35">
|
||||
<mxCell style="vsdxID=47;fillColor=#2d5967;gradientColor=none;shape=stencil(nZLbDoIwDEC/Zq9ktILwjPAfRIYsIiMDFP9eli5hw1v0re1Ol5O2DLOhKXvBgA+jVmdxk9XYMDwwANk1QstxiRjmDLNaaXHSauoqyvvSkCa6qKv5Yaa+kHPTA/zu5wXBrewc+G80SoIYXfg4abIIfdymsA+ilEoz2JIlwGuYkdJdAJEF0AVeuqWxJ8c/iaWJb8Z9q3V88GyOWwbfTMPX+2klX+AlWDdfy7alw3Hft5eylOjKMH8A);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="1118" y="179" width="60" height="4" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Object Storage<br/></font></p></div>" tags="Background" id="36">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=48;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="1092" y="244" width="237" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="37">
|
||||
<mxCell style="vsdxID=51;fillColor=#5ea0ef;gradientColor=#0078d4;shape=stencil(lZXbUhsxDIafZm81Ovh4TeE9mCY0O6QJswRK3h4tXjuRO1naO0eR9pP/37IHuXvdPb5sB8bX03R83v4ZN6fdID8G5vGw207jSVeD3A9y93Sctr+m49thU36/PM6Z8+r38X3+wkepcwJIcxXjuUS8AKevyEMp2I+HqwKfTLZDCLeTCdFkB4bA1+k/36bSDZWEnAErYAn5AFlK6IOXLA3VrCXkCWJYsmTJEshL6LyEXITobrc7V9jdRRBZ7RdBou3XMVSNar/JQ8q2X8ngxPabCNDbfiXBKj4hRLF4jpA6uWIE5yyeYtOm4iNBJosnhBTW+CGAdHbJxYdqjXra4dGi1TzPFo3gVg+K8+CCJSNwR1aRPVkyN8EqXBy4bOGqV1qDs5rXuU4M3MnOHoJYOqkUbPEqWGc66+l2a3g1j9jiOV0+XFkE3Mku2mS0eGV1yuuZy6ubh0AWrl74bu8I5C3bOyCLRssNUo//DbD6my04ShOiWd7GqoITNxvapF2mpkZyPQS3NHeA3aTpLSS+s1xHOFp8uwKb4TrT3ZzprRfM1u219Pcd/d8F31zq/1Cgi8sb8jTu9+UJuv6/f3M0VN4ruf8E);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="38" y="293" width="60" height="43" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="38">
|
||||
<mxCell style="vsdxID=52;fillColor=#767676;gradientColor=none;shape=stencil(jZDdCoMwDIWfJrfSNoztXt17CNY1WFup3d/bryWM1YHi3TnJl3A4gPViulmDEksMftRP6qMBbEApckYHikkBtoD14IO+BX93Pfu5y2RWk3/kDy++E/lCiXfprgxaciVYSVyxZ1ld5DYvxfr11x+CT3tBDifeBpP4FTKQtdxnuf8vMI24fGw/);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="74" y="313" width="27" height="21" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="39">
|
||||
<mxCell style="vsdxID=53;fillColor=#999999;gradientColor=none;shape=stencil(jZBLDsIwDERP423kOqWi61LuUakpiQhJlaZ8bk+CVRFYIHZj+81IY5DdoodZAeESgz+rmxmjBnkAIuO0CiYmBbIH2U0+qFPwqxt5nodMZnXx15xwZ1/bil2dXYQP3uBrOjJsjStg/ACpFg39C1f4I3c7bvC+EtiUeBLvApOxlvuX9+/CacXPkv0T);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="66" y="313" width="7" height="18" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="40">
|
||||
<mxCell style="vsdxID=54;fillColor=#a3a3a3;gradientColor=none;shape=stencil(UzV2Ls5ILEhVNTIoLinKz04tz0wpyVA1dlE1MsrMy0gtyiwBslSNXVWNndPyi1LTi/JL81Ig/IJEkEoQKze/DGRCBUSfAUiHkUElhGdppGdkChZxgyjOycxDUmxogKocxidKsaWemSVu1ahq8RhLkoMJKAYyEOGSlpmTAwlWZHn0cAQKQeLA2BUA);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="86" y="320" width="2" height="9" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="41">
|
||||
<mxCell style="vsdxID=55;fillColor=#a3a3a3;gradientColor=none;shape=stencil(UzV2Ls5ILEhVNTIoLinKz04tz0wpyVA1dlE1MsrMy0gtyiwBslSNXVWNndPyi1LTi/JL81Ig/IJEkEoQKze/DGRCBUSfoYEBSI+RQSWEb6lnZgYWcIOozsnMQ1KNqtaAWIWWRnqmeExFdwOMT5Ri/A4mpBrIQIRMWmZODiRgkeXRQxIoBIkFY1cA);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="81" y="318" width="2" height="9" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="42">
|
||||
<mxCell style="vsdxID=56;fillColor=#a3a3a3;gradientColor=none;shape=stencil(lZHNDsIgEISfZq8Ed2NIz7W+R5NSISI0FP/eXnCjokk13mZ3v5mQAaidTT9pQDmnGPb6bIdkgDaAaL3R0aasgDqgdgxR72I4+oHnqS9kUYdwKgkX9sniQHnlqUGB6r7ZMuysr+BGiXKrDCspl/HH8Zku1HqZfme/xP715B9wFq9mRuscF1vfP5vMK/4F6m4=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="92" y="321" width="2" height="8" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="43">
|
||||
<mxCell style="vsdxID=57;fillColor=#a3a3a3;gradientColor=none;shape=stencil(UzV2Ls5ILEhVNTIoLinKz04tz0wpyVA1dlE1MsrMy0gtyiwBslSNXVWNndPyi1LTi/JL81Ig/IJEkEoQKze/DGRCBUSfAUiHkUElhGdprGdqCBZxgyjOycxDUmxogKocxidKsYWemTlu1ahq8RhLkoMJKAYyEOGSlpmTAwlWZHn0cAQKQeLA2BUA);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="76" y="316" width="2" height="9" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="44">
|
||||
<mxCell style="vsdxID=58;fillColor=#a3a3a3;gradientColor=none;shape=stencil(UzV2Ls5ILEhVNTIoLinKz04tz0wpyVA1dlE1MsrMy0gtyiwBslSNXVWNndPyi1LTi/JL81Ig/IJEkEoQKze/DGRCBUSfoYEBSI+RQSWMr2dqAhZxgyjPycxDUo6q2IBYhZaGeqZmuBVjOgKPySS6mKByIAMROGmZOTmQsEWWRw9MoBAkIoxdAQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="97" y="323" width="2" height="8" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="45">
|
||||
<mxCell style="vsdxID=59;fillColor=#B3B3B3;gradientColor=none;shape=stencil(lZLbDoMgEES/htcNsCr4bO1/mIiV1IpBe/v7Sompl5Tat2U4Q2bJEMz6uugU4bQfrDmruy6HmuCBcK7bWlk9jBPBnGBWGatO1lzb0p+7wpFuupibe+HhfYiQxM7F6dMrKYIUb+XoDY1uZwa6gBmlu1EBUfod3gZhDNLkH8OP5DsMy7+ZlpvwwKpJDBFfwIEgW1gKYAHDOohkgNF+PJA7iI7DpzaVbhrfuvn9umaj5CuK+Qs=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="67" y="316" width="3" height="12" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="46">
|
||||
<mxCell style="vsdxID=60;fillColor=#333132;gradientColor=#5b5a5c;shape=stencil(lZHBDsIgEES/Zq+Esq3Vc63/0aRUiAgNRa1/L7gxFmNqvM3uzryQAbCZVDdKEHwK3p3kTfdBAe5BCG2V9DpEBdgCNoPz8ujdxfY0j11yJnV210SYKVdwnjKC32ne7FiJz82B7Ebbhb3esgqzwAvw1Z6zy4LhClvEc50FVsh/vvunPYp3RYM2hhpe3j8rjSv6Dmwf);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="66" y="328" width="35" height="8" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="47">
|
||||
<mxCell style="vsdxID=61;fillColor=#767676;gradientColor=none;shape=stencil(jZHRDoIwDEW/pq/LbCOGZ8T/IGG4xbmRMVH+3s3GCMSIb7ftuU1zC1QNuukVoBxi8Bd1N23UQEdANE6rYGJSQDVQ1fmgzsHfXMt132Qyq6sf84YH+3ZSZg/KiesDirJ8dU6MW+Nm+BJ+m7+jYr+Af6DrI7AQ9D+9cfImnsQnnc5Yy+HO5+s0U4s/QfUT);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="74" y="330" width="28" height="19" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="48">
|
||||
<mxCell style="vsdxID=62;fillColor=#a3a3a3;gradientColor=none;shape=stencil(lZDdCoMwDIWfJrdSEybs2ul7CNY12LVS637efi1BNgSHuzsn+RIOB6ieTTdpQDXH4Ef94D4aoAsgsjM6cEwKqAGqBx/0NfjF9eKnLpNZ3fw9f3jKncoXqF7iSiW+FdSy20V/gOuXFcXiRMfpc1VU5dEUfwTeoEl8OhnYWqn0e7/tMI2kf2re);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="76" y="334" width="2" height="12" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="49">
|
||||
<mxCell style="vsdxID=63;fillColor=#a3a3a3;gradientColor=none;shape=stencil(UzV2Ls5ILEhVNTIoLinKz04tz0wpyVA1dlE1MsrMy0gtyiwBslSNXVWNndPyi1LTi/JL81Ig/IJEkEoQKze/DGRCBUSfoYEBSI+RQSWEb2mqZ2EGFnGDKM/JzENSjqoYppkIpXgUojvBWM+UeMUE3EtQOZCBCJq0zJwcSMgiy6MHJVAIEg3GrgA=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="81" y="335" width="2" height="11" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="50">
|
||||
<mxCell style="vsdxID=64;fillColor=#a3a3a3;gradientColor=none;shape=stencil(lZDdCoMwDIWfJrfSJezCa3/eQ7DasNpK7Tb39msJsiFs6N05yZdwOEDVYrpZA6olBn/TT+6jAaoBkZ3RgWNSQA1QNfigx+Dvrhc/d5nMavKP/GGVO5UvUL3EXZT4VlDL7if6B9y+bCgVhMfp8logHU1xIvAOTeLTycDWSqXf+32HaST9U/MG);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="86" y="335" width="2" height="9" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="51">
|
||||
<mxCell style="vsdxID=65;fillColor=#a3a3a3;gradientColor=none;shape=stencil(UzV2Ls5ILEhVNTIoLinKz04tz0wpyVA1dlE1MsrMy0gtyiwBslSNXVWNndPyi1LTi/JL81Ig/IJEkEoQKze/DGRCBUSfoYEBSI+RQSWEb2miZ2wEFnGDKM/JzENSjqoYppkIpXgUojvBRM+CeMUE3EtQOZCBCJq0zJwcSMgiy6MHJVAIEg3GrgA=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="92" y="336" width="2" height="8" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="52">
|
||||
<mxCell style="vsdxID=66;fillColor=#a3a3a3;gradientColor=none;shape=stencil(UzV2Ls5ILEhVNTIoLinKz04tz0wpyVA1dlE1MsrMy0gtyiwBslSNXVWNndPyi1LTi/JL81Ig/IJEkEoQKze/DGRCBUSfoYEBSI+RQSWEb2msZ2AJFnGDKM/JzENSjqoYppkIpXgUAq00MkFRbKJnboFbPYlOJqgcyECETlpmTg4kcJHl0UMTKASJCWNXAA==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="97" y="337" width="2" height="6" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="53">
|
||||
<mxCell style="vsdxID=67;fillColor=#999999;gradientColor=none;shape=stencil(UzV2Ls5ILEhVNTIoLinKz04tz0wpyVA1dlE1MsrMy0gtyiwBslSNXVWNndPyi1LTi/JL81Ig/IJEkEoQKze/DGRCBUSfAUiHkUElhGdupmdgDhZxgyjOyczDqdjQXM/CDLdiQwNU5QbEK4XxiXAESS7GUAxkIAImLTMnBxKuyPLoAQkUgkSCsSsA);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="66" y="330" width="7" height="19" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="54">
|
||||
<mxCell style="vsdxID=68;fillColor=#B3B3B3;gradientColor=none;shape=stencil(lZLdDoIwDIWfZrfNWBmya9T3IGHIIjIy8O/t3VxUJnHCXXf6neW0KcFiaMpeEkaH0eijvKpqbAhuCWOqa6RRo60I7ggWtTbyYPS5q/y7Lx3pqpO+uB9u3scEYOZcjN69klslfyp7b2hVNzHQEObAcCmcIGwi8DyKgJyv4f9EX2AIl5PQcAD6+++MQ5IGcAqCreEFBxoJL8Sr/V4njeSZ4xF4xZxR1BafO6tV2/oznfa/79JK/qZx9wA=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="67" y="333" width="3" height="13" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Azure<br/></font></p></div>" tags="Background" id="55">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=70;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="48" y="354" width="84" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Container<br/></font></p></div>" tags="Background" id="56">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=71;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="32" y="371" width="152" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Registry<br/></font></p></div>" tags="Background" id="57">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=72;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="38" y="388" width="135" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="58">
|
||||
<mxCell style="vsdxID=75;fillColor=#0078d4;gradientColor=#5ea0ef;shape=stencil(hZPLEoIwDEW/pttOaHjYNeJ/MIrSEYEp4OPvBQtDU0B2SXrbOb1JGMZNntYZE9C0urpnL3Vpc4ZHJoQq80yrto8YJgzja6Wzm6668mLyOh2UQ/SonsMLb3NPhjyMhlsCPqYCv+xkxIUqLTFyxG3tudPmZc8cetyXo9qz5fAWJP2MqeDCHwVIBWMabJMBwZLBPy6gUDLiUUjBLPKpAkDRLCuQSlb5ljY7chdSHnjgUdCZwYWaKO2voKvBNW8o5SxeMXzRXnCMtPonlp+gPZ/wbF9wd/52hrUP5jG/qqIwW2Kfu2vRl8xKYfIF);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="40" y="483" width="63" height="42" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="59">
|
||||
<mxCell style="vsdxID=76;fillColor=#50e6ff;gradientColor=none;shape=stencil(lZHNCoMwEISfZq+SZkV6t/Y9BKNZTBOJ6Y9vb8IirYJibzObb5ZlAliOuh4USDEG73r1piZowBtISVYrTyEqwAqwbJ1XnXdP27Af6kQm9XCvtOHDuYsQKSPFxJ7dnVFD9gAtiiy/7uNreAmfQBEzzM+f8cfFKzSKbyktGcOd/r5vS4wj/gCsZg==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="71" y="498" width="10" height="18" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="60">
|
||||
<mxCell style="vsdxID=77;fillColor=#c3f1ff;gradientColor=none;shape=stencil(UzV2Ls5ILEhVNTIoLinKz04tz0wpyVA1dlE1MsrMy0gtyiwBslSNXVWNndPyi1LTi/JL81Ig/IJEkEoQKze/DGRCBUSfoYEBSI+RQSWEb2KpZ2EKFnGDKM/JzENSboqqGqYbq1pKDMZjLIkuJqgcyEAETlpmTg4kbJHl0QMTKASJCGNXAA==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="61" y="492" width="21" height="12" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="61">
|
||||
<mxCell style="vsdxID=78;fillColor=#9cebff;gradientColor=none;shape=stencil(UzV2Ls5ILEhVNTIoLinKz04tz0wpyVA1dlE1MsrMy0gtyiwBslSNXVWNndPyi1LTi/JL81Ig/IJEkEoQKze/DGRCBUSfoYEBSI+RQSWEb2ysZ2oMFnGDKM/JzMOjHMbHqhhVqZmZnokFsYrxmEqhizGUAxmIwEnLzMmBhC2yPHpgAoUgEWHsCgA=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="61" y="498" width="10" height="18" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="62">
|
||||
<mxCell style="vsdxID=79;fillColor=#c3f1ff;gradientColor=none;shape=stencil(UzV2Ls5ILEhVNTIoLinKz04tz0wpyVA1dlE1MsrMy0gtyiwBslSNXVWNndPyi1LTi/JL81Ig/IJEkEoQKze/DGRCBUSfAUiHkUElhGdiqWduBBZxgyjOycxDUmxogKrcgHilMD5WxSQ5goBiIAPh17TMnBxIUCHLo4cNUAgSrsauAA==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="61" y="504" width="10" height="12" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="63">
|
||||
<mxCell style="vsdxID=80;fillColor=#9cebff;gradientColor=none;shape=stencil(UzV2Ls5ILEhVNTIoLinKz04tz0wpyVA1dlE1MsrMy0gtyiwBslSNXVWNndPyi1LTi/JL81Ig/IJEkEoQKze/DGRCBUSfoYEBSI+RQSWEb2KpZ24EFnGDKM/JzENSjqrYgFiFMFuwKiXRCQSVAxkI36Zl5uRAAgtZHj10gEKQkDV2BQA=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="71" y="504" width="10" height="12" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="64">
|
||||
<mxCell style="vsdxID=81;fillColor=#cccccc;gradientColor=#707070;shape=stencil(jZTRcoMgEEW/htedBUTZ5zT9j0xjqlOrGWNa8/fBgJHFqekbXhbP5a6r0LtLdTiXQuFl6Luv8rc+DpXQb0Kpuq3Kvh7cSui90LtT15effXdtj/75fJgqp9V39zO9YfTnCEFOhxTevFBYyB7Cuy//uPa+XoZ9BK3DiVlSoI2XRuWlnMAE6RakLIMioEa9rgoSxuymbiOr2pEz5hW3jMblcm0huFIEecGNxtcJrgiI23yZEsgiCckCEWdnkCcZWQlGcbQCqznbGjByCy452bqUORg5lZyRnFMRUHGqxI3WkAvIstYk5SuLiNxk7GG2RUk4yz3mtkQx/zccMs/uPgOKUp/ZUexq3cCZvwzPH99FEtOrYXOLZVBPddP4OY/308F2kv8p6P0d);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="56" y="525" width="31" height="16" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Application<br/></font></p></div>" tags="Background" id="65">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=82;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="28" y="545" width="186" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="66">
|
||||
<mxCell style="vsdxID=85;fillColor=#5e9624;gradientColor=#76bc2d;shape=stencil(lZbRdoIwDIafhtuetoFCr517D8/EyZkTD+qmb79yStM0Hah3WP7wJe2f2AJW5/3m1BZani9D/9X+dtvLvoC3QuvuuG+H7uKeClgXsNr1Q/s59Nfj1v8+bUbl+PTd/4xfuPk4JaQag7S8+4WyFsavvHv9oTsSfXwdAvALk/7jOniAwgirp4hpSQpj/cpNT6JG6GnproOohEkEKKonDQSNNotsK5TibMnZVlSGsVNwJRl2iVm5xEvGTIFO0WTFYlaBqQS8VqyLqLNicQ8DWwvZcLbhbC3ApnB+yqkrbCNsCJixEc/WWgEsW+KUkK5TVXWaLrFKyNep6jLNF70yj7ccH80S8EpKBo9eCfCoSd0yA47y3C+kakwu98xC1Wia+apxO3PXEDxwfLQN4smZZ7751yXj6+BpJMnqRU+7GGPShMfNYS7BbZ7r4SBYmByQguMn54cWTS440XUCG1tZ2ek+ZTM521eebWxhPFZyYNlAxVMlZ8+HzNOeiqOLOLphM5a1EfU8pIqnmoi1EO3KbKCS1lUPi300NsgeqswEt2ygIptMNj5QI3v5n/fVf+rHevcQrwW77nDwtwr6nl8j3JK/gsD6Dw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="252" y="478" width="63" height="63" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="67">
|
||||
<mxCell style="vsdxID=86;fillColor=#b4ec36;gradientColor=none;shape=stencil(lVfZctswDPwavXJEgOdzmvxHpnFqTV074zht+veFKonHMrLsNx273CUJgGDHD+/757ddR/375Xz6ufszvFz2HX/riIbjfnceLvLU8WPHD6+n8+7H+fRxfJne355H5Pj06/R7HOFz4sWgohtZ1P+dvhivtPn/5WkiHIZjQbBa+VAReuV8if/+cZ4UdGJQnBl6odAk0X/SDJJR7AyaP/UzghfE/JvL3yuaJiq2oFkLmqC8BsHsihNofK9kYbb16mjVm+uriU5lPF0bFYrh2myfV5ASKLjabL8oJa9in91VcVAOedCk3DMoR2VQmCwIx2Wg1VkbV2tLALBB7QDaAvJUi2vFtbZgor2mXQRwjlAdam1SDNExhjHX2qQCRMc4kl4PD5Z5L4wVAroVijetXV3bZQk82/jVvvYrKLaN4Tm01vR1Tsysv8yi0I/U6EOAMindys9LuCYvG+FBnlKSJXlSFqefd7DQdx70aUm/dX0MFlKxUV/SJqmzolY9oTihLF+JloIxV2uvbNiyC4kVcw1Lhllp2C1BBUhrQdlQG45xK1pMLoA6cbwFfaMcLJjuodyzzRnINebLxXIyZqwWC+Bo1dlUcBar2QQlTASj5XRmX87lrL51oYQTILDKLVj0fa7p1G4ntyheCRRYrIKxEoqN4YKiE4d0YxjLQE6XbJexZm+loXAMVqEiwbO6wxOjKBZZP9xbhlxQfXtowFkpIG6LsMHdCrmg3lqEhRO/OAQ86EvQYR0qjgpOKEzrjVNLgknXLd/mqSUUFxvDBG1NEcul4VAbFlQa69YzXvJP47FR9A45ly2kV9mG5Fz29/Y3womgX/RNWPNSaxWapi7G5tTY7OpGw21PiZ2doLhtKg20OOX9gBPq2gXh7hvFDQR5yBeY1+FwmO4/5X+88Min6bLEj/8A);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="276" y="484" width="15" height="16" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="68">
|
||||
<mxCell style="vsdxID=87;fillColor=#b4ec36;gradientColor=none;shape=stencil(hZfLctswDEW/xlsOCfC5TpP/yDRO42kaZxynTf++UCW+Li1pJ8sXOiAIgOCB7z5eHt+PB9If18v55/HP6en6cuBvB6LT28vxcrrK04HvD3z3fL4cf1zOn29P8+/3x0k5Pf06/56+8DXbWa+in6xI/53fGBXS/xcPs/719NbotfKuk9uktG313z8vM8BkC+LFwhST5RtftGgWwfLTaaXTouBewUURzCa1RzqjmIFZ/aIiSgTYutxMJsVhPT5jPFNSJm25aoOi3lsxcRAhEXnbuyuqAFGyURnq/RXVNj0qb3q80RrgsgQzwJMDuHjtB3jwW/Rpp28sPvR8UY1rJ9vjReQD4KOKtINPkJxiY4FulPaADyoZwJtcBxUflO2StE+V1mJ+E3TevjV/G5PllU/KxsFhSr3DXiLhBocD5LbPa1/DE2aql0BguCgHvdIleSPQWVlIlqq6Ga4pmqEL12CA/opJiIPDHsIlO64xXKKCTiAqDoPDdrO2xKa0j8rnMPBHvIHKTk0JZrxXabO4xIZxv7wK0AdTTaDC92VzGr7D5Xtl9vilIjPflfbY8APgXW1/PH6Ki4q6bIV0aSzmN+z24xVhu8TGu8HfBO1AVDTuV4q9w2xzrazwS98tdDu0wum7cGyJisxAD0hnFbeLJZWcL3wezqEppyBbRUVjtmC2ikq7nWKJyJdWgtkac81VPimP0ZdzkIEvKl5PF2frybliMHRDvuWwh/QWlTOjw9w7LCrCgJFy23wq40rDtxAwUZUeVPkUgC+GNPB12OHnLlX4ph4zla9x/UZBvshZFBPgZWLbnPCm88sPeI3LN9hdWEZHGvDQXES0c3RDb8mFuu4sDhp19xpfIbXLedt46mGfjHKbdd2MvhmtSwdrJqwIu6TLcdtMWAbObA09eJgu5diAHMXZMt4gayiPaa5NSObN6pCB2QVctoeIiwjYRhmYK9uJvoR864q0f6WSh3ofez69vs7XufZ/vL/Jq/nux/f/AA==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="259" y="501" width="16" height="15" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="69">
|
||||
<mxCell style="vsdxID=88;fillColor=#b4ec36;gradientColor=none;shape=stencil(lZfJctswDIafxlcMSXA9p8l7ZBqn9tSNM47Tpm9fqJK4/Izo9ibDgD4QxKYd370dHl/3O6Perpfz9/2v49P1sOMvO2OOL4f95XiVpx3f7/ju+XzZf7uc31+e5t+vj5Pm9PTj/HN6w8ds5ww5O1kZ9XuWpEQc/0oeZoPT8aUymP52jYHT5BuDr++XGaGzSQiLic420+9J9GFmkVZq0VkETpFfdRh1FoFNlNKIXSx0tuDQkmv/FpGNFHzLrg/OWYv1dqj62MqJ9MhbsTCtu4oY4iShC7H1VpHm1llRYts6q0iFIVtRTAAHsiJrkawCkEXESDZ+RJYrWcJSHdu6Fi5Ky1sqeLAtXJSUbuGatBnC5aZdC9fkNMBj8XBNV0oO4JFcauGG7CA/aoNZwooc3/DWt86KScRQxfUt2VuWMPjOXcgQUVqivk03EfC6XELBQ6xyCq/oQDEAWzJ/WBpi4+GexMZCcYgWR4STix1fxY4/bmLWU0gdf63EzPdke37E83vSPT8Muq5EZ73RDf2u8VEyN93VucPW3kJRSSvhztk07CWaFN4VE9SU5C2gmUxq0aqrKFFyw3pWJQEKOjhkGzy3JWUQrvHcdg3FJjz3Pp1N8hBb4R05WSRjC2UHPbRNj8pgFnh56bDnwlT08v6AMVLQREQJK6mPkSjFYWJWsV/hUg4J4VjGomQ9wjE7RMkP14GSdIWduGVXybuyA2ndsvuiECVjx0Xh8eCh20Wqsi1wC9O96gaMSp9PmqrhbBh80u9i766FWNkiqvz1UMZTv4d+5+M6kLZnTd5gdLbBWqpH6MqXReH2ZBatNIhXN5lToPF4iN14SrE4UtyNcL2i5XEyp248pbzYbO9QjHwReeDLpguzWbQ8Lo8qp3vFD8PCEhunO36C84tWgiUuL+j16tqfPg2TVWxiT8e9yOUdozk9RL/e2qvVfzCc//sb6h8M5KF8sj0fT6f5i6/+Hz/xRDR/HvL9Hw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="293" y="501" width="16" height="15" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="70">
|
||||
<mxCell style="vsdxID=89;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lZbbchoxDIafZm81luXjdZq+R6YhhSmFDCEteftouz5JDBt6twhrP1v69a8nenjbPr1uJmvezqfjr83f3fN5O9G3ydrdYbs57c78NNHjRA8vx9Pm5+n4fnhefr8+zSvnp9/HP/MbLktezpDdnGXNxxKxGYj+Rb4vCT/eT0sGLgvQmJJQApYghyV0seW1EVwsq0oIE5TIhcoiC8GXRSWEDtCuwVOEZCU+g3eSngykLOkekpP0yHSSdAK3evLggJKEIxgr4d4DkoQbSXYesiIbcHmNTAGiOraBHCXZxt7LGmqRCuc8HyQ8AMbVhhNgnlTNVckjeCvRnBVVw7m5SaJnUaQ1NnfST1ptJaXBjTp0BkuSjL18tdcOPK6WHJyTZMpX5AghSLhzENSxuRJZwl2CsCpzPjeqc3sLXtFt6gXt6nOq4xTBqLL7AEmUfb87DKYwZhSJBAirfSIeBJIbDgm82m8Ai3K/Ea/2y5UnVa/owbgv6tVUXUKRa6xEihmULSRbz9XxWIXR8ClUdd/CU7WtPiEGSM9n0Pg8aLl2y4JVpphD1fOt4rMMUeFTl2FXpq5+s/JK993P2oiWNTfY/tqQ+1tt802nLHHcX7WhPl53n5yFgWpK87U/sBSycqexPbXLpnvYvY1n/aCS/SipqjK8+hqO6qQeUp3/Uve8QFd/nKg2ZBI+TCa1DmX9VdAjLz1izGimQqvfkcgp6vPpXVNuK1bvXzM1rGXodwcDJsoNu1Dd8Aaf1UTKJBwCqe8334iSEguxqaLiD/emahz64iQLdsdN678T+KFf7F52+/1yLxz/1xdBDi2XSHr8BA==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="274" y="500" width="19" height="34" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="71">
|
||||
<mxCell style="vsdxID=90;fillColor=#5ea0ef;gradientColor=none;shape=stencil(jVLbDoIwDP2avZLRBonPiP9BZMgiMjJA4e9lKYatBsNbL+fs9HQVmPV10SkBsh+seai3Loda4EUA6LZWVg9LJDAXmFXGqrs1Y1tS3hUO6aKnebkXJuIl0lFAzpTGkvIrYW+jJXBM7TSNTrAS4pAhJ2CFGTZSvGKQYzAYY0d2g68FgAjPoaw/2lqSoWjCNP9KegpfUeaTufRHwhBxyCNz6C/tV2Hmu97zyP6z0e3hv1+C7Wgq3TR0c36fH9lSogPF/AM=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="278" y="504" width="11" height="11" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Azure Load Balancer<br/></font></p></div>" tags="Background" id="72">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=91;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="205" y="545" width="321" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="73">
|
||||
<mxCell style="vsdxID=94;fillColor=#b77af4;gradientColor=#773adc;shape=stencil(lZHdDsIgDIWfhltSfgxwPed7LBkT4oSF4d/bC5LFqXHOu9P2a3PSg1g1mmbQiMIYgz/oi22jQWyLKLXO6GBjUojViFWdD3of/Mm1pR6aTGZ19Od84Vr2uMKK5C0Kt9KBR7UrcG/dDIYXkADe0LWwFFiq7/CnDQILRqbhBAuBiVyPE4U5/8fMgpUfcBLP13e270ty8/l7VKlVYmb1HQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="262" y="294" width="20" height="17" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="74">
|
||||
<mxCell style="vsdxID=95;fillColor=#341a6e;gradientColor=none;shape=stencil(nZPLDoMgEEW/hi1hwAeurf0PE7WSWjFoX39fKGkqGrF0N8OcIXduchHLx7YcakTJOCl5ru+imlrEDohS0be1EpOuECsQyxup6pOS176y/VAa0lQXeTM/POweMRuUPG2XYf7ujxbtRL+J8tTHAnHpT/8T7EH/lrtAXRMiis1sfh14r4swZA6fcpyE8ODl13ogiPar3+ddd3iMObh8gqPt/2OGE+byLIzXfnn0r/UA+NwM1b/P6+Kbp0Z0nY3jfL7Mn36y2WXFCw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="262" y="295" width="10" height="17" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="75">
|
||||
<mxCell style="vsdxID=96;fillColor=#b77af4;gradientColor=#773adc;shape=stencil(jZHNDoMgEISfhitBkApna9/DRCykFAxif96+kI2pNSnxNsN+u5kwiLWz7ieFKJlj8Df1NEPUiJ0RpcZpFUxMCrEOsXb0QV2DX9wAfuozmdXdP/KFF+xxklcoeYMFdwHSGrchf8GKYE6PwqLBQv6H+f50IcU6XOHmhKU4jlcS1/XhJIUcJTKJ73ePxlpoazvf15OeoFrWfQA=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="284" y="295" width="20" height="17" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="76">
|
||||
<mxCell style="vsdxID=97;fillColor=#341a6e;gradientColor=none;shape=stencil(ndNLDoMgEAbg07AlwFDEtbX3MBErqRWD9nX7aknTohFLdzP6MfkhGQRZXxedQoz0gzUnddPlUCPYI8Z0Wyurh7FCkCPIKmPV0ZpLW7q+KyY5VWdznSbc3TkynWDk4boUy1d/cLTR7SqVSchS4ut3/xMO0L/jzqj/CJxhmvi3o8HbAU655xOJRYynQb/MQ6N0OP22919HCkxmXmC+Pn8HWAjfQ5ynPJR/mYfS0PzY/Nt+LD77VOmmcev4/X++f+Mnt7uQPwE=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="284" y="295" width="10" height="17" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="77">
|
||||
<mxCell style="vsdxID=98;fillColor=#b77af4;gradientColor=#773adc;shape=stencil(lZHdDsIgDIWfhltSfgxwPed7LBkT4oSF4d/bC5LFqXHOu9P2a3PSg1g1mmbQiMIYgz/oi22jQWyLKLXO6GBjUojViFWdD3of/Mm1pR6aTGZ19Od84Vr2uMKK5C0Kt9KBR7UrcG/dDIYXkADe0LWwFFiq7/CnDQILRqbhBAuBiVyPE4U5/8fMgpUfcBLP13e270ty8/l7VKlVYmb1HQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="252" y="313" width="20" height="17" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="78">
|
||||
<mxCell style="vsdxID=99;fillColor=#341a6e;gradientColor=none;shape=stencil(nZPdDoMgDIWfhlsCFJFdu+09TMRJ5sSg+3v7ybjY0Ihjd2352pyWHATF0JS9QowMozVnddfV2CDYI8Z01yirxylCcEBQ1MaqkzXXrvJ5XzrSRRdzcxMevo+4DkaePqME83fh6NlWd6uszLFcZymZTya/wxH0f71zNrwDp1iKcD+GRUQyYMkDPt9hlsLTKL/UQ0Vs11T923x4H5lhSRP+PwMsIOR5Gk+z2L5LPZTF7pmqf5ufgo+pat223pPf73MTTiVvYDi8AA==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="252" y="313" width="10" height="17" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="79">
|
||||
<mxCell style="vsdxID=100;fillColor=#b77af4;gradientColor=#773adc;shape=stencil(jZHNCsMgEISfZq9itGJ7TtP3CMRUqdVgTH/evsoSmgYq3mbcb5fBAd7Oup8UMDrH4G/qaYaogZ+BMeO0CiYmBbwD3o4+qGvwixvQT30ms7r7R77wwj1B8wqjb7ToLkha4zbkL9hQImrZoySS/YfF/nIhxDpcYSkJ5fV4cyKH6iCFGCUyie9nj8Za7Go735eTnrBY3n0A);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="274" y="313" width="20" height="17" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="80">
|
||||
<mxCell style="vsdxID=101;fillColor=#341a6e;gradientColor=none;shape=stencil(nZNNDoMgEIVPw5YwgIJr297DRKykVozav9tXSpoWjVi6mwffTN5M8hDLh7roFKJkGHtzUjddjjViO0SpbmvV63GqENsjllemV8feXNrS6a6wpK3O5mon3F0fsR2UPJzKcPrSB4c2ul1FpcBynQXi02/9ExxA/7Y7Q/0jcIoJ+NtBcDuGZebxQmIew0OQX/qBJLRqrP9t3r+PTLAQPp9iuj4/YZjPeBbHAw/tu/QDELpnrP9tfio+iap007hAfv/PEzg9ufSy/RM=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="274" y="313" width="10" height="17" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="81">
|
||||
<mxCell style="vsdxID=102;fillColor=#b77af4;gradientColor=#773adc;shape=stencil(lZHdDsIgDIWfhltSfgxwPed7LBkT4oSF4d/bC5LFqXHOu9P2a3PSg1g1mmbQiMIYgz/oi22jQWyLKLXO6GBjUojViFWdD3of/Mm1pR6aTGZ19Od84Vr2uMKK5C0Kt9KBR7UrcG/dDIYXkADe0LWwFFiq7/CnDQILRqbhBAuBiVyPE4U5/8fMgpUfcBLP13e270ty8/l7VKlVYmb1HQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="295" y="313" width="20" height="17" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="82">
|
||||
<mxCell style="vsdxID=103;fillColor=#341a6e;gradientColor=none;shape=stencil(nZPdDoMgDIWfhlsCBRWv3fYeJuIkc2LU/b39ZFxMMOLYXUu/NueUFLFibMpeIiDjNOiLfKhqahA7IADVNXJQ0xwhdkSsqPUgz4O+dZXN+9KQJrrqu5nwtH3EdAB52YwSnH4eTpZtVbfJigyLbZYSfzL5HQ6g/+v1WXcPHLCpLf1B0B/HNHf4LMc8hqdBfq2HpiGvsfr3eXc/IsGC+v8P2/MThlPm8jyOp0nI71oPhdA+Y/Xv83PwPapata29yWXdP8L5yR4wO74B);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="295" y="313" width="10" height="17" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="83">
|
||||
<mxCell style="vsdxID=104;fillColor=#b77af4;gradientColor=#773adc;shape=stencil(lZHdDsIgDIWfhlvCX2Rcz/keS8aEiLAw/Ht7wWZxapzz7rT92pz0IF6Pph00YmRMMRz0xXbJIL5FjFlvdLQpK8QbxOs+RL2P4eQ7qIe2kEUdw7lcuMKeUFjRssXIDTrkUe0AdtbPYPICUoI5WwtXEsvv7KcLShZ8TMMJlhusqvU4VViIf8wsWPkBZ/H8fG+dg+Dm8/ekcgtS5s0d);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="262" y="332" width="20" height="17" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="84">
|
||||
<mxCell style="vsdxID=105;fillColor=#341a6e;gradientColor=none;shape=stencil(pZPdDoMgDIWfhtuGgoJcu+09TNRJ5tSo+3v7yVgy0Ugku2vL+aCnoYSnQ5V1BWF0GPv2Ujx0PlaEHwhjuqmKXo9TRPiR8LRs++Lct7cmt3mXGaWJru3d3PC0HDUEoy+bIQLln8rJimvdbIoTCVJti5Eu7v7mu8Qe6R8dr8TuLCIG5mxukQH1WYwAlQPIBGQUAqAC4Xlh3RIKUB7DwR52AO6UkhgSdAEBArdfiDkI7gJTRYQAGIPyjHXdEjLv3wz2sAOYgt+Slbqu7Y7Oz5dLOZXsQvPjGw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="262" y="332" width="10" height="17" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="85">
|
||||
<mxCell style="vsdxID=106;fillColor=#b77af4;gradientColor=#773adc;shape=stencil(lZHdDsIgDIWfhltSfgxwPed7LBkT4oSF4d/bC5LFqXHOu9P2a3PSg1g1mmbQiMIYgz/oi22jQWyLKLXO6GBjUojViFWdD3of/Mm1pR6aTGZ19Od84Vr2uMKK5C0Kt9KBR7UrcG/dDIYXkADe0LWwFFiq7/CnDQILRqbhBAuBiVyPE4U5/8fMgpUfcBLP13e270ty8/l7VKlVYmb1HQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="284" y="333" width="20" height="17" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="86">
|
||||
<mxCell style="vsdxID=107;fillColor=#341a6e;gradientColor=none;shape=stencil(nZPbDoMgDIafhlsC1AO7dtt7mIiTzIlBd3r7wcgy0Yhjd/3p1/K3SREUQ1P2AjEyjFqdxV1WY4NgjxiTXSO0HE2E4ICgqJUWJ62uXeV0X1rSRhd1sx0ero7YCkaeTu0wf+ujQ1vZraI8D7GU+PRH/wQH0L/tzlB/CQnDNjedjgXsJphyj845zmJ4GuSXbmgaGjTO/Rbtb4abn6lPZzhZ754CzsDnIY432wrMuvRDaWiXsf63eRN8b6mWbetOcZqf3555cncLhxc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="284" y="333" width="10" height="17" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Azure Kubernetes<br/></font></p></div>" tags="Background" id="87">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=109;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="216" y="354" width="270" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Services<br/></font></p></div>" tags="Background" id="88">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=110;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="252" y="371" width="135" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="89">
|
||||
<mxCell style="vsdxID=112;fillColor=#FFFFFF;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="576" y="111" width="345" height="192" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="90">
|
||||
<mxCell style="vsdxID=113;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);dashed=1;dashPattern=1.00 2.00;strokeColor=#706e6f;strokeWidth=2;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="576" y="111" width="345" height="192" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="91">
|
||||
<mxCell style="vsdxID=115;fillColor=#FFFFFF;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="866" y="107" width="47" height="6" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="92">
|
||||
<mxCell style="vsdxID=117;fillColor=#86d633;gradientColor=#5e9624;shape=stencil(jVLtDoIwDHya/SWjDfIAiO9BZMgiMjJA4e1lKYatBMO/ftztel0FZn1ddEqA7Adrnuqjy6EWeBUAuq2V1cMSCcwFZpWx6mHN2JaUd4VDuuhl3u6FiXiJdBSQM6WxpPxG2PtoCRxTO02jC66EOGTICVhhhh1pQo7BYIwD2Q2+FgAiTENZf7S1JEPRhGn+lfQUfqLMJ3Ppj4Qh4pRH5tBf2l5h5rs+8sj+s9Ht6b9fgu1oKt00dHN+nx/ZUqIDxfwL);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="897" y="108" width="5" height="5" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="93">
|
||||
<mxCell style="vsdxID=118;fillColor=#86d633;gradientColor=#5e9624;shape=stencil(lVJBDoIwEHxNr6TdjRLPiP8wAtKIlBRQ+L3UhdCukehtO51hdsoITNry3OQCZNtZc8ufOutKgUcBoOsyt7qbJoGpwKQwNr9a09cZnZuzY7rpbh7uCwPpdjKSyqlAjoQoKd/nE9EvvSW+ous4jvaLQIUKOQADRlhFOHOQc3DZZMt2pc8AQIRxaOuvNkMyNPXTos/44upMDqEvi8qC+lthyPgpJgvpvxt8rsSfeyMm+6uVrv8pwTSsBSp0VVH//HteuAmismL6Ag==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="888" y="108" width="5" height="5" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="94">
|
||||
<mxCell style="vsdxID=119;fillColor=#86d633;gradientColor=#5e9624;shape=stencil(jVLbDoIwDP2avZLRBonPiP9BZMgiMjJA4e9lKQlbCYa3Xs7Z6ekqMOvrolMCZD9Y81JfXQ61wJsA0G2trB6WSGAuMKuMVU9rxrakvCsc0kVv83EvTMRLpKOAnCmNJeV3wj5GS+CY2mkaXXAlxCFDTsAKM+xIE3IMBmMcyG7wtQAQYRrK+qOtJRmKJkzzr6RTuIaizCdz6Y+EIeKUR+bQXxrsR+K7PvLI/rPR7em/X4LtaCrdNHRzfp8f2VKiA8X8Bw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="879" y="108" width="5" height="5" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="95">
|
||||
<mxCell style="vsdxID=120;fillColor=#50e6ff;gradientColor=none;shape=stencil(jZPRksIgDEW/htcMSUoLz677H47WLWO3dbCu7t8vXWiFjnV8C+FecgJB8ObS7M61IHkZXH+qb/YwNII/BJHtmtrZwUeCt4I3x97VX66/doewPu9G5Rh99z/jCffgMxpUNbpI/oaM1qDNf+YzGFrbJQZdARaZAaVM5furCwUwGhRUGA2YO+SdooZAl1FDSw1HDUJBUcMzfInrqP5QlZH6DNErVrngNFConFQuKHm6rJkzqTphQkXrlFgAmQxTroufPBeCUa96mi9y6kozMOddPTTTg5SAmPeVlua3RuWN2fLBYzKPtm3DYKf7y0n2qfALePsH);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="869" y="108" width="14" height="15" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="96">
|
||||
<mxCell style="vsdxID=121;fillColor=#1490df;gradientColor=none;shape=stencil(jZPRcsIgEEW/htcd2E1geVb7H06NDdOYOBhb/XuTQkbAavu2XA7s3eEiaHVqt8dGoDyNfvhsvt1ubAWtBaLr28a7caoEbQSt9oNvPvxw7ndhfdzO5Fwdhq/5hks4xwYI51Mor0FRQPZHeAt85/qEtwy1zXmEOuXfzz40UHFfysgvAgHHKy5YMougQZvI0GPnKCkGqZ97VTVUhdfY51e8AqSMZl6MPhmtGIwrMJgPVoxlLCidj5V0jYrRL1+AJSC/fLHSJivQNrcqc5uT81rlVmVuM80J/ScofwdrKu6p3LuuC6FO98sUT1L4AbS5AQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="869" y="98" width="14" height="15" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="97">
|
||||
<mxCell style="vsdxID=122;fillColor=#50e6ff;gradientColor=none;shape=stencil(lZLRksIgDEW/htcMJNLCs6v/4Wzrltlu62B19e9tN6AUp+v4Fm4uyRm4gtbHZneoBcrj4Pvv+tdVQyPoQyC6rqm9G8ZK0EbQet/7+sv3p67i82E3Oafqpz9PEy58zxSg1HQL5ZUV+Xfasrl1XWK2GgzNzBZKTP2fJ8/TFfeVlMEfBQJjWbpg7omChdUqeOh5c5AQAXGZNRkSWQ0U6l9YA1JnuJHtDqsBywz37glkCkHPWZ9WZ6xAdoZqyjBhgTR71OQTI2f2pIaAKKN8LA2KkaD1MuVbUXlhHotHIveubTnQaT9P8Chx+mlzAw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="897" y="108" width="15" height="15" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="98">
|
||||
<mxCell style="vsdxID=123;fillColor=#1490df;gradientColor=none;shape=stencil(jZJBcsIwDEVP461Gsmxirym9B1NC42maMCa0cHucyh1i05buLPk5eqN8xetjtz20SuNxiuNb+xl2U6f4SWkdhq6NYUonxRvF6/0Y29c4noad1IftTM6n9/Fj/sJZ3vkGaH6k8SIN58D5r86z8H0YFryzYAueEH+nCUxFezBmyb+couiQAJjxXJIDXEnrrEsil2RBu0zw3dTvjs7WP1sSWF9qAvu/LIkBbWmKpWXS8qY0xcoyLbrWrMaWmne/qlk90sRqnY0HqtZ5Y3LDGWh0qbqYzP9KyeNUpcMtkvvQ95Lo5X0d4dSS+PPmCg==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="897" y="98" width="14" height="15" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#706e6f;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1"><b>Primary Database VNet<br/></b></font></p></div>" tags="Background" id="99">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=124;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="585" y="118" width="355" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="100">
|
||||
<mxCell style="vsdxID=126;fillColor=#FFFFFF;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="584" y="144" width="329" height="151" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="101">
|
||||
<mxCell style="vsdxID=127;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);dashed=1;strokeColor=#706e6f;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="584" y="144" width="329" height="151" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#706e6f;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1"><b>Delegated subnet<br/></b></font></p></div>" tags="Background" id="102">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=128;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="592" y="151" width="270" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="103">
|
||||
<mxCell style="vsdxID=131;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lZRNcsMgDIVPw1YDEr/rNL1HpnFqpq6dcZw2vX1xgdjQjjPdwfOTPpCQGe0u7eHcMOSXaRzemk9/nFpGTwzR920z+imsGO0Z7U7D2LyOw7U/xv35MDvn1fvwMWe4xTjBgeYg5F9RUAak/lGeo//lOsYAEQ0IVqeIpEgHOiW5YZR4cqQtOXAmOSinIZlMSSEOm2AJ2pZgFIAVWCBwLOFBclTBEYwu6QaU2KITgarowF0Jl3pJWxYig1UolSjBAswW12Duxx1MIEUJtgRWlWB7P0pmu1AtV7E1KLdFdxpcRQ/31lgVnVf9RveLvnhyuw3wzZsvEfkBSKCq4uvzJUkJUPTw5uGZq+K1db5fjYXiYHOfytP8aX88Rf/1h8UysiffdXHi19/rEQ9S/D3Q/hs=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="629" y="199" width="30" height="41" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="104">
|
||||
<mxCell style="vsdxID=132;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lZZLctswDIZPoy2GAPhcp8k9Mo1Ta+raGcdp3duXKkVKgGxpvJNhkB/x+smOnz73rx+7jszn5Xz6ufvTv132HX/riPrjfnfuL/mr4+eOn95P592P8+nr+FZ+f7wOnsPXr9PvYYdrWWcTJDesIvO3WAjY/je8FP/vX+eyAMv/LoLlcQW2JVQsVyoW7yH40Wk02dGDy89gwdRtqgloDRwRKEkwGrASHPMmJMHoJDkhYJBkMuDW0MkBkorZS3DykKwEMwFGxfZT8kYTR+C4AU8o4daCS4rPYJLkuxxVkPwYoR688p0DH+b8Q3+cNUjexNTQ9XluLkCEJPwXAB1gABNlfMPJo4zPTgenlgRPMjyGYBfZHRN+B85AKrm5bOQk3IFBCScPRucWkiottTDuwJEgOklH1+pY6RinsKopN36S+HzIpNo6z8Jq4plBdXUeStXXFhupxQ6sRmquItychIzIJtmWnUf9t2TNrCXCmsWImVby6zTOxslMIEQlazmDVQvbgG1UAX0b5grPBVfwXHBSZUAGz5LuAVHCMa0rWx5WLWwOOEi4UbqGrdMqODe6kpU8eBu9v5BUm1VWtb4FZAl32FBNVIGihLtQq3e7m0K9Nqqk5UlZ6b6lBqIxK+4E/qH9k4Eg918EcONSiEGmb56ZeilEiKprhiTrSymBXcrmuNe96hkj6UNT2AW9amSTDlfHdqLzFMnUtHZ1ZGKqV8qkm3kaJD4ysLoyYlvWniGuXSKzeV0dGR8gqvsq64CaV6fSbjYFc6WhNtTsIef8Mb0F3/vDoTwl5//rt2M2lXcnP/8D);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="629" y="198" width="30" height="42" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="105">
|
||||
<mxCell style="vsdxID=133;fillColor=#2d5967;gradientColor=none;shape=stencil(pZZBctswDEVPoy2GJEiCXKfpPTKNU2vq2hnFadPblyoFioDGSjLdKQihR+AD3xrw7uX48HwYnHm5Tpcfh9/j4/U44JfBufF8PEzjtTwNeD/g3dNlOnyfLq/nx/r388N8cn76efk1v+Gt5mULLs1ZzvypERsh0L/I15rw7XWqGbYeSAjJLykcAloib65GyIHnQ0sIAfNyCGskZAgMX0IWdtk+AjnJNhKMCJ4k2IGV3BIhlFyC4PbAVlGtgxwk2UOMClyaGxUaUJHRQMQ9tJFkzJCzJDtIqmSfIQZJtgbQSXQg8KlHn8ZzNxvBQOIMfoe5fXw7Spv369JyhBxlecGCj7I8pq7V+dbFtTqj2kpg9hU1qrEut9licn8/12YnqDHuC+fr6CV6r1X/nyD3OkVAEgkhgMHbhK3YuaywvZ1gA1jcEOx+yyEq5yhYR7LpadBikxK7LeuqdoK8O2nExa97hOBQkVdzYbXLBCu1y+ajUnve6rxbeAQTlIEQOL3GFoKaNovc0tVB0sZCSl/NroVgUSZLPrUbNf8qNhIkPjQvbZZtgIKkt0M34CE1L2qqr+9dSDHysDV4d0PWHcHSJ0unYpdK+b6prHy5kaq9F2iBpQxWDd670pctoiT5/VCx0fjNr1Y/n2w0yFP+8cEvOar5/UIxviy/mrx+Mbn8zlNYe73y0iM+7UIfSCgP68fM03g61W+h/v/646eE6ocT3v8F);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="629" y="199" width="29" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="106">
|
||||
<mxCell style="vsdxID=134;fillColor=#2d5967;gradientColor=none;shape=stencil(pVjbblMxEPyavK5sr6/PBf4DQUsjSotCgfbv2aPEa3us47RC6kNyame8l5lZnwPf/Lr//PP24Myv59PT99u/x6/P9wf+cHDu+Hh/ezo+y6cDfzzwzd3T6fbb6en349fz95+ft5Xbpx9Pf7ZfeDnvy55C3HY583p+wpm2r/L36bzh4fi43OACpdBv+PL7dIawbYu9bLk8cpby+cmLuyziCmteL49sonLZ98KXVabue708sZ44r9BTJi4jupVfiSN88lRG9ESpjODJUBzBA3m3wo6ROI7YTMaP0NGStxA5eR6xQyQbRnBDya7Ag0QJgZsR2cv5IWpDDlLuTYuh5pyYV8jMZBkKTgXCdlFLWRNBzo/Yso0BWqJeplyaJrsR2wZyI7Y8wZRL5BHQt1WQ8+2MQ9JHcvQ7dtg0kYNCGI/rhQnQnUw5jMf1hRKcloobDys9s+4QMwJHpsQjsKECwMmSwQ6hCGlKieKyQ4STELWIhAtQJa8lqei5TJIgPZLsCF+4dv5egxold8Uv0jcgSdL5DuhhjRnRgxmh64I9Tpbavp0YAStjUQ5W2P5wLcV6uLeGncMkR31CK5ht9XRzcSpYaCV8a9VLIQNl79sJc6y60PVlRc9kwAiudnsRCYXoOxa14D1SreMjaz4CaOK7bfP/N4xO7koLb0esMCOyxQANhE1VPlV8TLPvWqJCwY0pEc13QEMrFVlaMwdtPmWDn/yRpUggA9aRAXzvm+dUfOmtZT/61GaONhowiK/4qAenklVoVYEnFZRVMS3VIM5eZbUkil8oY/4lfpD/6Ooc1PC5Fm5vPJGhJ035R6OOScEUXyvb8MXIPOBnWsqRzFNmngu1sE5XQfbFDhmi3xYB+jSWjvzqd1z6zJK9li6GcomRZVCQkCb53mZJcC30jbZkr1edpsHOv1qpEihisroTVqxOKXgn9jFZb9CWd28Y1UvzobZ0NR0F8rHtgQmCRfLHdOQ8MZcbmWs6NqNctq7MPHipyI4CTE92Zq7cRjwObolAOJNoyRLezvDCvzr/KTxX/emtNCJ8UMqplQqX1/hRGVjxg4pNHz4Kt886yWo3+urBFV6uJXad/UIRndw2R2pkKEAGsRIDk8TGK8AXozVuhe9bp+m1Lk1zzKbuMD7KqgDdF5uYKb66654QFb2/9vEDfgqtSWr6/SQGSaZNzH+5kn+5q+MkJeX34FtCIhTCrbFwlJJig2+1eW9/jlXG1pQkPZLi+zbtNi+Z8B3FmX5X8E3rmeplcZqjheoO+k+SPb1UCM0E25Hcsv4yNCeIX4KNEL+kBG+NOVZi9/0XYG7Jae3bMpA4vL0VnaS0/f18jSjKiD0f3JYMM+PoK9ds4n2r5UN7L3Z3fHg4v1br/4/v0eTR+R0cf/wH);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="638" y="203" width="12" height="17" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="107">
|
||||
<mxCell style="vsdxID=135;fillColor=#2d5967;gradientColor=none;shape=stencil(lZTdUsIwEIWfprdnkt38XqO+ByMgHZEyBRTf3mBSyoah6F1ycpovOdluw7P9er5bNqT2h757X361i8O64aeGqN2ul317SKOGnxuerbp++dZ3x+0iz3fzs/M8+ug+zzuc8ndWwYbzV6S+s6J+Zy/ZvGm3V2Zj4PR98+uxz1vrvMiMYIq9SOqinCgrlExcTEVixMHEWdEOyhVTkQK8n4IHUJRszXCSzSBJ1vEWDVuRySFMkZXEphTIS66GC9WVI4KTYDdeoCjGwtMUWStElnSbzm8rekAVuHWDMsDJgyu6jWBBl7WhPdwQ1HCaiVIKDGv+bvcGloX95jg3BUCos3CXTYYsQiojW4VBMF6mERm6fgs/7HUHH/34yEUyBEfVWygl6eyhSNJHTxFYg+0kO1VTxU61rrRkx/Q3V4WgLVRVCcGCg+RH6Em8d9BV9IwqeJd+RiPhSoKvOxM/bE3/6mMPzGkwtstVu9nkbnu9XrfXJOXWzM8/);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="643" y="212" width="2" height="4" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Private<br/></font></p></div>" tags="Background" id="108">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=137;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="618" y="244" width="118" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Endpoint<br/></font></p></div>" tags="Background" id="109">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=138;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="609" y="261" width="135" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="110">
|
||||
<mxCell style="vsdxID=141;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lZbLctswDEW/RlsMCfC5TtP/yDRO7akbZxyndf++cMUnLFHpTqYBHhC8vORED+/7p7fdhOr9cj792P0+PF/2E32ZEA+v+935cOGviR4neng5nXffz6eP1+f599vTLfL29fP06zbDdc4zDpy+ZaH6M49opf79/jqHf/s4z/E6JShQJiXoPkNdcR4gAhdTTBqKEdCnKJqHMIKiFJWGYgBlR3RECKGnRwdker6O4AWeK3I9vgnK9G7hx8Nr06cmeh6wBpxZj1f/FQzY74FVEMOoDwqC7dtgNETbt8EC9V0gA9qKLiBg7NtAw/3XBN736NtGotgBA0HA0YOVW2ABbQ/nopMe1/i83brn60ZbGaZACz4XHoUAbe17rkiDcUMBeiASeAUmCnwscisKBC9WT9x6IcAcswLnDCfgzbT18OE2uzTj02zWjt5kGyDcZBuw8txvwV1R2ADOApPsosvMDkBCcR7CUHDNwcpsAi30xjYaxMIbVSSSRdBixweOw56B2WgXgmWZDkEJZ1Rlglym444IZ2STEL7sMZ+BeiwIzLBJnOOEKzTnLaE8gRLXAvtEVnTBE1jRJfaJ1Lg1PLPkpWSLRRa+AS/5vjSk8BdcYetaChqsXH4oxpr5wVevzUZRPOBaLiFwocdjmWpRKG1GSbCD6ybqaqHCipbvPtXfZoZ1PKrHlqOZE0qXlxNYF309Jmtnpd/tCnQ5Llrsd2DVCrU7DV6L/a6JueE16vN6a2fGeyUP+FTXssbv+9VmpJVuGWibokvXjSxYladUsVAHol5H+W1S7XvLQ22slp/x95e2ZV8NPb4+Len+vUp9zGKvNt+3/FHfxi+H43F+Wrf/y7c0D83vcHr8Cw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="781" y="186" width="61" height="53" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="111">
|
||||
<mxCell style="vsdxID=142;fillColor=#FFFFFF;gradientColor=none;shape=stencil(pVnZcls3DP0avXJIgutzmvxHJnFqTV07ozit8/eFei+3A11SnrxJFMBDYjsAdaIPPx4/f384Wf3j9fLy18O/56+vjyf642Tt+fnx4XJ+5U8n+niiD99eLg9/Xl5+Pn/dvn//fJW8fvr75Z/rDm+bnidlrkpW/9oWrKL0/8KnTfzLz8smb7bfg1be7RoGVPSb3YWiMn4X2pd4ZVd7o31FKxd2oX3JOBXDDJ11UhzRjVcO4KNROo7wJiiTAd+okAE/qBCn+FYZA/hRXJ+lMgF+UskAPinvAT+v7s8CHvCrTsVPXhHgWwaLI35KytGIb7Oyucd/Oj93wZL45+KxbYVK+NyUz2yaMbochhcoOBVoVKjeva1glLGjgim3OjBh5gAeLeiNymBAqxLEL8e9xQCWDmxSxwFUQ8PInVsAVcNN8GUAB31sq168RkAy09N2KqZaPMTxtCErDadlR2o/njaQCLeMzkV8zwdMgB8EvmdvZcDvknIHc0E5sFaTOsB3WmnEl+lOfFnE707ZcgujZXl/ztoM5a63bMlto2wCfCPxOyk68P8YML0GsMVteWXju8Qd7K5VnIZj46riH0k9UVkofQSBaEgFNxqCTGGHA2QmGQuJQFrwDtOHx7qbRN1lqQz4NiyKFpMMBoJla9llIPDBI/AOg2lIRDYJTfH5Gkh70vRsEYO0y6UV4In9DtdvUkeO7+qxkTsXfK4wd+BTqxZ343cZPsF3Cln/BrxTSPpLdO5dwho91g6jg8emh3ItH7UKLXoOTjIP8F4wlovK2xGdfRZGcC7USFi8Yo9LRK+w48BhV/K4v2AYKxhOBvYNgrGCX7pOmkDm9llXnTc06q7Rx7YyoXovautMmAuZ+Q3hRcdz7eAgfLTKQGFMtJC5sl/lADcQPbGE2HHmeORPQZ/k20RT6LMGc5e22LwUmftrRrftpHWQ2LJiLcGpcfExuOxyb4DbRqh3gls5pEjwK1FjsZYtrpW1ckHUuU0QZYna6NVYMWOtrKNPI2pXm6ia0r6E7hG+E9FuZcfYtyCtUcABkSkW+4SV6XnwA7eTvD3P0MBTTvIU+wLKmddw97Ey6KEqeOwopsIeGr9VXzmXv7rS/p5CqmXiOM6qSolxyYrcagXMMDmZsFcNplgqdeE4wRNWly6CW1nV2BBqPaLfmIuKzFGQiT68bVoYM8u6JhOMR8Lk3nnxEBSh4W+8wFB9FKn43TsRSSk6cDzM0J3Gfh674KDU9bsGdeqBs/SU940mi3W4R4ADOxwd4IHEtsGhdmrGTRS4gI254OZTIts1vQ8hYSfj3NToNbrufESS++NgCQq6scGeXdiSCwULbebCRrcUZvWxD4eqME+MFFSEtworH7b4qpCXJoo+PXKviSVh9VTCOgZfZuVTTf9kdjyhshQh8XtoM0Ve0uhzM8/i8hhdpJcPz/Ldrun073Y4BbEUlr3+da8N4POXuP6NrXI9zv9cVwx4Vwvj9oNE4fpjUy3GDv7Q/ln4dn562v6Y6H/HfyJ4afsXgz7+Bw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="780" y="186" width="63" height="55" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="112">
|
||||
<mxCell style="vsdxID=143;fillColor=#2d5967;gradientColor=none;shape=stencil(pVrbctw2DP2afeWIN5B8TtP/yDRO7alrZxyndf6+2llRhHCw4O70bS2DPCCIg5t0ip9+PH75/nAKy4/3t9e/Hv59+vr+eIq/nUJ4enl8eHt6X3+d4udT/PTt9e3hz7fXny9fL39//3KWPP/6+/Wf8w4fl3XJxXxeFJZf24PqyuXJ7xf556cXJu/JNfp/C3J0wViw3CXszv/i8ovQ5o+fb5fz+r6ilm3F9iRtO3yEbYux5/Ykpq7E8hG3Y/lxrO1RXISqEtpHJ6BDGxtvWD4fsUNB7OxSOmJPgMnlcET27Qi7mz0MXQVsV+PXMIENu6oe2xG2jV3DsJowd4MTx+gWceI2uefIrrGfeRHQxfkyha4u1SN0cSZyCmPbbgk4dmK2CbsvC+wcXI1H7MVCzsxMnssP317pRAJWYDKJWzDJu6WZmFSHVl2NI2bxwz+7c0ULtDD2MXIJG5cA9+uTk9hoY29e74odvcDOQGNa/bMK7CyxCX3Lk2nsOi5nYMtzcykLW1LKPjchoaoTyLm5LCwOBlccLNmEUtw6AXIEJ0NkvOoJcmIXdA05JefjEZkgdibGkm7txcZeA0+TfhbBz9YwRyJjrD4u4WMY0SbuUnb05oG546cjeFAcDay+WgOOnu2jhwCJwxdpd4++FjzmSmbFXSEL2yPFlKy1ZtQ9CITdxtLsHl09TjyuyhIhFrhzlv67DwZpdVbX9Sd2nTYvBI+FY2GEk5WKClCgEJwsqMwLNpWaswCq1GgiX2D/ZJpoTRXk71rA8totGhFqZJ/g7juYL4BbDqLc9+YVy/Na0mmkSEmha9rfo8xE+njQDKrHen1vnkn2CtVSPR+7mlgMUZZzNr3J3JuAWNb2xNLVTarTMjLMHpLs2nutCTvE9UZndXYSITRgCC0iigXpIhBAF5ckOJbfFZu8NU/J5FELFAzRW4RsYKtzirT1xSZp1Vcaq7JI0lNQBX2lsfwMXKnp+LY932CfFMoRmdNnb5wMH5+w7chNvxzZsxZTlsM2iLox2IkGouI2EtCl85ggbNLZ3r5Bap11zhXKgIQ1CM+PYbfrzCeGyDWfYHWVx207exP0NxnZS6wD62VIsQiUwVbTgQ6xrDz0VXqiJPSlZRptaAZemRk8btunCixd7MY6IrcIraCV3Bqj5E1OeCeHpuJHhhKrsrcnMqlAG43tBSVws4Jxj25p4WlayYn83bypLJPvkyzRCxUxQGsEHTfLvP3Wq4XKydBRMY8qne9+e3s3QE7OOBZzqhMxCIxNe8ODs6SG87OAMw771AH5zGw5mj8ZfvYLiSgStUsWHt9kNQo+D61iA/LHCuTn5+mWA99QrBTt7hxnIhEnYJF5ELs12SuCd0Q5dYfBCE6UIw4nEqtMDfgCwwnAF70q9EnTkjQVGMqONVzhIrjEpa7bawYfcWCpwAdMqmkBV4kw0bDKFS7epWdze0xqSUS7qIzblKkXGApaGbinNoKkx417zMO0oMBnxVI0GTUmCLmdlzu2ckkNRo34iiabGSYrVYxHQuHMK3sY/YDVs5+MGpWSz8uQq4T7jBWUEsjkDAPcDWNJkm+nRBBLVWEFFppWCcAWbIepEzUTGIkWnMdiqUcR7kcORMl825EjTKH3PcfgXQZ6CkdYwmEkmS6pNIf7nh0DA7w8LeEAdlob8tHAqA1lRc/M2B/NKy6ajJ6VmouU+IPhj8qchzR5c6jwkGDurfCQMPYpPJwdXeEhCWzJQ6zFkYdw2xMelsmEXOFhwf5U4WFpJ3k/koebyO2+UUSgUoZahYAQ8EI5mVPheXN194JZ+1btd77Iz4pdr0LQii9oFI7WWeGtXESVAREZWvGTBqRoncUmhaNVKbyRpFUERoWh04MrFK1YJUiWViVNA02PNz7haJvNRRSSNpxq8qq4d3FZa08kT5scdoCH4nShKS/pCwSJJrOm0r7Kw8/YZ5l2Jr3+GJ9ufXt6fr58+cX/Lz/1Wh9dPhOLn/8D);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="781" y="187" width="60" height="52" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Oracle Autonomous<br/></font></p></div>" tags="Background" id="113">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=145;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="736" y="244" width="287" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Database Primary<br/></font></p></div>" tags="Background" id="114">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=146;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="744" y="261" width="270" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="115">
|
||||
<mxCell style="vsdxID=147;fillColor=#312d2a;gradientColor=none;shape=stencil(pVbbcsIgEP2avO7AAiE8W/sfTo01U5s4UVv79yWFJFwkmOkbrmc5Z6+hYJvLcXeuCySXa9991N/N/nos2EuB2LTHum+u+lSwbcE2h66v3/vu1u7N7/NuQA6nz+5ruOFu/JQCKQYvJD/GIjhI/md5NQ5vt954UAOghFgHaxAIFI3pjiHGGriEqrIYFlNbExeApct9alpXrIASPbE4GhJatQeTvlriK1UcVOlrJYFOnRBfZpaVAxdBjgBZRDyBRhPwMEcRN0UgaiFF1RywZSYL6Pl6Y6gkKLoyNEVAYD42TSVzwSkJrMrQT9UK23Eid2oetuNE7XRSijtIVX5QVjv4o0gAfXw0DWE2gjl0Z8xv5TEP7qSyiJU9FRcf0zTKzBaNQ8kyNRNAeKZkuqorm0WACFvVaUKMQGP/OP2c4o7mxM8RnSPOD+F8eWLCn4hrXhzJsJwNlIoqt9ecKj1epk6lH+9Sp3kSnH5u8jOxFh99/lD5DsxmJXG/pP+Bi9KuvNTKCNSsxS/LyeP1YX4pHJrTyTw03P/Dl4U2mVcJ2/4C);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="413" y="199" width="163" height="15" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="116">
|
||||
<mxCell style="vsdxID=148;fillColor=#312d2a;gradientColor=none;shape=stencil(nVRdc4MgEPw1vt7AHZ/Pafo/Mo2pTq1mjGntvy8WawUmMvYN1112uYMr6HCrTteyQHYb+u6t/KzPQ1XQU4FYt1XZ14NbFXQs6HDp+vK17+7t2X9fTxNzWr13H9MOo9dZC0ZOKmRfHpECtPhBnr3g5d57BfcEztgsmAGJwNFDI8acGRAajJk5lFrPkJCAau3d1O06rAYSQVgEhVtZnYLbMC0Lk1oFVoRZWZRTgTZhzqytAkVRkQApcV5IvxCIuEipOUdgdqNIFhgPO8o22Kv9PWI0WL7zcJaBxPzp3M3S2eNNTTYZ/6Vj8ZVc3Fd9j6/kSOlteuSdlDb3WHYLkucodSAQBPTYgP2bK13lN4NHOfbyt7Pk+W7xN7MuddP4kbf+H884B/n5SMdv);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="844" y="199" width="268" height="15" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="117">
|
||||
<mxCell style="vsdxID=150;fillColor=#dae8fc;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="444" y="200" width="102" height="14" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:14.82px;font-family:Oracle Sans;color:#312d2a;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">VNET Peering<br/></font></p></div>" tags="Background" id="118">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=151;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="449" y="199" width="177" height="17" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="119">
|
||||
<mxCell style="vsdxID=152;fillColor=#312d2a;gradientColor=none;shape=stencil(pVbbcsIgEP2avO7AAiE8W/sfTo01U5s4UVv79yWFJFwkmOkbrmc5Z6+hYJvLcXeuCySXa9991N/N/nos2EuB2LTHum+u+lSwbcE2h66v3/vu1u7N7/NuQA6nz+5ruOFu/JQCKQYvJD/GIjhI/md5NQ5vt954UAOghFgHaxAIFI3pjiHGGriEqrIYFlNbExeApct9alpXrIASPbE4GhJatQeTvlriK1UcVOlrJYFOnRBfZpaVAxdBjgBZRDyBRhPwMEcRN0UgaiFF1RywZSYL6Pl6Y6gkKLoyNEVAYD42TSVzwSkJrMrQT9UK23Eid2oetuNE7XRSijtIVX5QVjv4o0gAfXw0DWE2gjl0Z8xv5TEP7qSyiJU9FRcf0zTKzBaNQ8kyNRNAeKZkuqorm0WACFvVaUKMQGP/OP2c4o7mxM8RnSPOD+F8eWLCn4hrXhzJsJwNlIoqt9ecKj1epk6lH+9Sp3kSnH5u8jOxFh99/lD5DsxmJXG/pP+Bi9KuvNTKCNSsxS/LyeP1YX4pHJrTyTw03P/Dl4U2mVcJ2/4C);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="413" y="478" width="163" height="15" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="120">
|
||||
<mxCell style="vsdxID=154;fillColor=#dae8fc;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="444" y="479" width="102" height="14" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:14.82px;font-family:Oracle Sans;color:#312d2a;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">VNET Peering<br/></font></p></div>" tags="Background" id="121">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=155;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="449" y="478" width="177" height="17" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="122">
|
||||
<mxCell style="vsdxID=157;fillColor=#FFFFFF;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="576" y="390" width="345" height="192" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="123">
|
||||
<mxCell style="vsdxID=158;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);dashed=1;dashPattern=1.00 2.00;strokeColor=#706e6f;strokeWidth=2;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="576" y="390" width="345" height="192" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="124">
|
||||
<mxCell style="vsdxID=160;fillColor=#FFFFFF;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="866" y="387" width="47" height="6" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="125">
|
||||
<mxCell style="vsdxID=162;fillColor=#86d633;gradientColor=#5e9624;shape=stencil(jVLtDoIwDHya/SWjDfIAiO9BZMgiMjJA4e1lKYatBMO/ftztel0FZn1ddEqA7Adrnuqjy6EWeBUAuq2V1cMSCcwFZpWx6mHN2JaUd4VDuuhl3u6FiXiJdBSQM6WxpPxG2PtoCRxTO02jC66EOGTICVhhhh1pQo7BYIwD2Q2+FgAiTENZf7S1JEPRhGn+lfQUfqLMJ3Ppj4Qh4pRH5tBf2l5h5rs+8sj+s9Ht6b9fgu1oKt00dHN+nx/ZUqIDxfwL);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="897" y="387" width="5" height="5" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="126">
|
||||
<mxCell style="vsdxID=163;fillColor=#86d633;gradientColor=#5e9624;shape=stencil(lVJBDoIwEHxNr6TdjRLPiP8wAtKIlBRQ+L3UhdCukehtO51hdsoITNry3OQCZNtZc8ufOutKgUcBoOsyt7qbJoGpwKQwNr9a09cZnZuzY7rpbh7uCwPpdjKSyqlAjoQoKd/nE9EvvSW+ous4jvaLQIUKOQADRlhFOHOQc3DZZMt2pc8AQIRxaOuvNkMyNPXTos/44upMDqEvi8qC+lthyPgpJgvpvxt8rsSfeyMm+6uVrv8pwTSsBSp0VVH//HteuAmismL6Ag==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="888" y="387" width="5" height="5" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="127">
|
||||
<mxCell style="vsdxID=164;fillColor=#86d633;gradientColor=#5e9624;shape=stencil(jVLbDoIwDP2avZLRBonPiP9BZMgiMjJA4e9lKQlbCYa3Xs7Z6ekqMOvrolMCZD9Y81JfXQ61wJsA0G2trB6WSGAuMKuMVU9rxrakvCsc0kVv83EvTMRLpKOAnCmNJeV3wj5GS+CY2mkaXXAlxCFDTsAKM+xIE3IMBmMcyG7wtQAQYRrK+qOtJRmKJkzzr6RTuIaizCdz6Y+EIeKUR+bQXxrsR+K7PvLI/rPR7em/X4LtaCrdNHRzfp8f2VKiA8X8Bw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="879" y="387" width="5" height="5" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="128">
|
||||
<mxCell style="vsdxID=165;fillColor=#50e6ff;gradientColor=none;shape=stencil(jZPRksIgDEW/htcMSUoLz677H47WLWO3dbCu7t8vXWiFjnV8C+FecgJB8ObS7M61IHkZXH+qb/YwNII/BJHtmtrZwUeCt4I3x97VX66/doewPu9G5Rh99z/jCffgMxpUNbpI/oaM1qDNf+YzGFrbJQZdARaZAaVM5furCwUwGhRUGA2YO+SdooZAl1FDSw1HDUJBUcMzfInrqP5QlZH6DNErVrngNFConFQuKHm6rJkzqTphQkXrlFgAmQxTroufPBeCUa96mi9y6kozMOddPTTTg5SAmPeVlua3RuWN2fLBYzKPtm3DYKf7y0n2qfALePsH);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="869" y="387" width="14" height="15" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="129">
|
||||
<mxCell style="vsdxID=166;fillColor=#1490df;gradientColor=none;shape=stencil(jZPRUsMgEEW/htcd2A2wPNf6Hx2bGsaYdGiq7d83ETIC2urbcjmwd4eLoM2p2x1bgfI0hfGt/fT7qRP0JBD90LXBT3MlaCtocxhD+xrG87CP6+NuIZfqffxYbrjEc2yBcDmF8hoVBeS+hOfI937IeMegXckj6Jx/OYfYQKV9KRO/CgScrrhgzayCAWMTQz87J0kxSH3fq9LQVF5Tn1/xBpAKmnk1eme0ajBuwGI5WDWWdaBMOVbWNSnWPHwBloD88MVqm6zAuNKqLG3OzrUqrcrSZp4T+k9Q/g7WXHyn8uD7PoY6369TPEvxB9D2Bg==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="869" y="377" width="14" height="15" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="130">
|
||||
<mxCell style="vsdxID=167;fillColor=#50e6ff;gradientColor=none;shape=stencil(lZLRksIgDEW/htcMJNLCs6v/4Wzrltlu62B19e9tN6AUp+v4Fm4uyRm4gtbHZneoBcrj4Pvv+tdVQyPoQyC6rqm9G8ZK0EbQet/7+sv3p67i82E3Oafqpz9PEy58zxSg1HQL5ZUV+Xfasrl1XWK2GgzNzBZKTP2fJ8/TFfeVlMEfBQJjWbpg7omChdUqeOh5c5AQAXGZNRkSWQ0U6l9YA1JnuJHtDqsBywz37glkCkHPWZ9WZ6xAdoZqyjBhgTR71OQTI2f2pIaAKKN8LA2KkaD1MuVbUXlhHotHIveubTnQaT9P8Chx+mlzAw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="897" y="387" width="15" height="15" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="131">
|
||||
<mxCell style="vsdxID=168;fillColor=#1490df;gradientColor=none;shape=stencil(jZLLEsIgDEW/hm0mIcXC2sd/OFotY20drFr/3lZQC46PXUgP5Ex6BU+P5fJQCInH1jW74mLXbSl4JqS0dVk42/aV4Lng6aZxxdY1p3rtz4flQA7VvjkPL3T+nsmBhksSr76hNWhz7yw8X9l6xGsFKuIJ8TNNkCW0eXQCvzo5r0MewICHI2nA8EInYyIcSYHUgeC3qY+OBPXFkkCZWBPYfLMkfmpdY/HupWWy2BQTy37RqWYyNtZ8+1X55JcmJuvMDdAkEcVkoTqDXMaqo8n8V0p+p6ovXpHc2KryiR5/TyPct3z8eX4D);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="897" y="377" width="14" height="15" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#706e6f;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1"><b>Primary Database VNet<br/></b></font></p></div>" tags="Background" id="132">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=169;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="585" y="398" width="355" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="133">
|
||||
<mxCell style="vsdxID=172;fillColor=#FFFFFF;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="584" y="423" width="329" height="151" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="134">
|
||||
<mxCell style="vsdxID=173;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);dashed=1;strokeColor=#706e6f;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="584" y="423" width="329" height="151" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#706e6f;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1"><b>Delegated subnet<br/></b></font></p></div>" tags="Background" id="135">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=174;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="592" y="431" width="270" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="136">
|
||||
<mxCell style="vsdxID=177;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lZRNcsMgDIVPw1YDEr/rNL1HpnFqpq6dcZw2vX1xgdjQjjPdwfOTPpCQGe0u7eHcMOSXaRzemk9/nFpGTwzR920z+imsGO0Z7U7D2LyOw7U/xv35MDvn1fvwMWe4xTjBgeYg5F9RUAak/lGeo//lOsYAEQ0IVqeIpEgHOiW5YZR4cqQtOXAmOSinIZlMSSEOm2AJ2pZgFIAVWCBwLOFBclTBEYwu6QaU2KITgarowF0Jl3pJWxYig1UolSjBAswW12Duxx1MIEUJtgRWlWB7P0pmu1AtV7E1KLdFdxpcRQ/31lgVnVf9RveLvnhyuw3wzZsvEfkBSKCq4uvzJUkJUPTw5uGZq+K1db5fjYXiYHOfytP8aX88Rf/1h8UysiffdXHi19/rEQ9S/D3Q/hs=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="629" y="478" width="30" height="41" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="137">
|
||||
<mxCell style="vsdxID=178;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lZZLctswDIZPoy2GAPhcp8k9Mo1Ta+raGcdp3duXKkVKgGxpvJNhkB/x+smOnz73rx+7jszn5Xz6ufvTv132HX/riPrjfnfuL/mr4+eOn95P592P8+nr+FZ+f7wOnsPXr9PvYYdrWWcTJDesIvO3WAjY/je8FP/vX+eyAMv/LoLlcQW2JVQsVyoW7yH40Wk02dGDy89gwdRtqgloDRwRKEkwGrASHPMmJMHoJDkhYJBkMuDW0MkBkorZS3DykKwEMwFGxfZT8kYTR+C4AU8o4daCi4rPYJLkuxxVkPwYoR688p0DH+b8Q3+cNUjexNTQ9XluLkCEJPwXAB1gABNlfMPJVXx2Oji1JHiS4TEEu8jumPA7cAZSyc1lIyfhDgxKOHkwOreQVGmphXEHjgTRSTq6VsdKxziFVU258ZPE50Mm1dZ5FlYTzwyqq/NQqtAtNlKLHViN1FxFuDkJGZFNsi07j/pvyZpZS4Q1ixEzreTXaZxrcloZILKqgm1a2AZsowrowSldywVX8FxwUmVABq/oHhAlHNO6suVh1cLmgIOEG6Vr2DqtgnOjK1nJg7fR+wtJtVllVetbQJZwhw3VRBUoSrgLtXq3uynUa6NKWp6Ule5baiAas+JO4B/aPxkIcv9FADcuhRhk+uaZqZdChKi6ZkiyvpQS2KVsjnvdq54xkj40hV3Qq0Y26XB1bCc6T5FMTWtXRyameqVMupmnQeIjA6srI7Zl7Rni2iUym9fVkfEBorqvsg6oeXUq7WZTMFcaakPNHnLOH9Nb8L0/HMpTcv6/fjtmU3l38vM/);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="629" y="478" width="30" height="42" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="138">
|
||||
<mxCell style="vsdxID=179;fillColor=#2d5967;gradientColor=none;shape=stencil(pZZBctswDEVPoy2GJEiCXKfpPTKNU2vq2hnFadPblyoFioDGSjLdKQihR+AD3xrw7uX48HwYnHm5Tpcfh9/j4/U44JfBufF8PEzjtTwNeD/g3dNlOnyfLq/nx/r388N8cn76efk1v+Gt5mULLs1ZzvypERsh0L/I15rw7XWqGbYeSAjJLykcAloib65GyIHnQ0sIAfNyCGskZAgMX0IWdtk+AjnJNhKMCJ4k2IGV3BIhlFyC4PbAVlGtgxwk2UOMClyaGxUaUJHRQMQ9tJFkzJCzJDtIqmSfIQZJtgbQSXQg8KlHn8ZzNxvBQOIMfoe5fXw7Spv369JyhBxlecGCj7I8pq7V+dbFtTqj2kpg9hU1qrEut9licn8/12YnqDHuC+fr6CV6r1X/nyD3OkVAEgkhgMHbhK3YuaywvZ1gA1jcEOx+yyEq5yhYR7LpadBikxK7LeuqdoK8O2nExa97hOBQkVdzYbXLBCu1y+ajUnve6rxbeAQTlIEQOL3GFoKaNovc0tVB0sZCSl/NroVgUSZLPrUbNf8qNhIkPjQvbZZtgIKkt0M34CE1L2qqr+9dSDHysDV4d0PWHcHSJ0unYpdK+b6prHy5kaq9F2iBpQxWDd670pctoiT5/VCx0fjNr1Y/n2w0yFP+8cEvOar5/UIxviy/mrx+Mbn8zlNYe73y0iM+7UIfSCgP68fM03g61W+h/v/646eE6ocT3v8F);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="629" y="478" width="29" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="139">
|
||||
<mxCell style="vsdxID=180;fillColor=#2d5967;gradientColor=none;shape=stencil(pVjbblMxEPyavK5sr6/PBf4DQUsjSotCgfbv2aPEa3us47RC6kNyame8l5lZnwPf/Lr//PP24Myv59PT99u/x6/P9wf+cHDu+Hh/ezo+y6cDfzzwzd3T6fbb6en349fz95+ft5Xbpx9Pf7ZfeDnvy55C3HY583p+wpm2r/L36bzh4fi43OACpdBv+PL7dIawbYu9bLk8cpby+cmLuyziCmteL49sonLZ98KXVabue708sZ44r9BTJi4jupVfiSN88lRG9ESpjODJUBzBA3m3wo6ROI7YTMaP0NGStxA5eR6xQyQbRnBDya7Ag0QJgZsR2cv5IWpDDlLuTYuh5pyYV8jMZBkKTgXCdlFLWRNBzo/Yso0BWqJeplyaJrsR2wZyI7Y8wZRL5BHQt1WQ8+2MQ9JHcvQ7dtg0kYNCGI/rhQnQnUw5jMf1hRKcloobDys9s+4QMwJHpsQjsKECwMmSwQ6hCGlKieKyQ4STELWIhAtQJa8lqei5TJIgPZLsCF+4dv5egxold8Uv0jcgSdL5DuhhjRnRgxmh64I9Tpbavp0YAStjUQ5W2P5wLcV6uLeGncMkR31CK5ht9XRzcSpYaCV8a9VLIQNl79sJc6y60PVlRc9kwAiudnsRCYXoOxa14D1SreMjaz4CaOK7bfP/N4xO7koLb0esMCOyxQANhE1VPlV8TLPvWqJCwY0pEc13QEMrFVlaMwdtPmWDn/yRpUggA9aRAXzvm+dUfOmtZT/61GaONhowiK/4qAenklVoVYEnFZRVMS3VIM5eZbUkil8oY/4lfpD/6Ooc1PC5Fm5vPJGhJ035R6OOScEUXyvb8MXIPOBnWsqRzFNmngu1sE5XQfbFDhmi3xYB+jSWjvzqd1z6zJK9li6GcomRZVCQkCb53mZJcC30jbZkr1edpsHOv1qpEihisroTVqxOKXgn9jFZb9CWd28Y1UvzobZ0NR0F8rHtgQmCRfLHdOQ8MZcbmWs6NqNctq7MPHipyI4CTE92Zq7cRjwObolAOJNoyRLezvDCvzr/KTxX/emtNCJ8UMqplQqX1/hRGVjxg4pNHz4Kt886yWo3+urBFV6uJXad/UIRndw2R2pkKEAGsRIDk8TGK8AXozVuhe9bp+m1Lk1zzKbuMD7KqgDdF5uYKb66654QFb2/9vEDfgqtSWr6/SQGSaZNzH+5kn+5q+MkJeX34FtCIhTCrbFwlJJig2+1eW9/jlXG1pQkPZLi+zbtNi+Z8B3FmX5X8E3rmeplcZqjheoO+k+SPb1UCM0E25Hcsv4yNCeIX4KNEL+kBG+NOVZi9/0XYG7Jae3bMpA4vL0VnaS0/f18jSjKiD0f3JYMM+PoK9ds4n2r5UN7L3Z3fHg4v1br/4/v0eTR+R0cf/wH);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="638" y="483" width="12" height="17" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="140">
|
||||
<mxCell style="vsdxID=181;fillColor=#2d5967;gradientColor=none;shape=stencil(lZTdUsIwEIWfprdnkt38XqO+ByMgHZEyBRTf3mBSyoah6F1ycpovOdluw7P9er5bNqT2h757X361i8O64aeGqN2ul317SKOGnxuerbp++dZ3x+0iz3fzs/M8+ug+zzuc8ndWwYbzV6S+s6J+Zy/ZvGm3V2Zj4PR98+uxz1vrvMiMYIq9SOqinCgrlExcTEVixMHEWdEOyhVTkQK8n4IHUJRszXCSzSBJ1vEWDVuRySFMkZXEphTIS66GC9WVI4KTYDdeoCjGwtMUWStElnSbzm8rekAVuHWDMsDJgyu6jWBBl7WhPdwQ1HCaiVIKDGv+bvcGloX95jg3BUCos3CXTYYsQiojW4VBMF6mERm6fgs/7HUHH/34yEUyBEfVWygl6eyhSNJHTxFYg+0kO1VTxU61rrRkx/Q3V4WgLVRVCcGCg+RH6Em8d9BV9IwqeJd+RiPhSoKvOxM/bE3/6mMPzGkwtstVu9nkbnu9XrfXJOXWzM8/);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="643" y="492" width="2" height="4" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Private<br/></font></p></div>" tags="Background" id="141">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=183;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="618" y="524" width="118" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Endpoint<br/></font></p></div>" tags="Background" id="142">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=184;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="609" y="541" width="135" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="143">
|
||||
<mxCell style="vsdxID=187;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lZbLctswDEW/RlsMCfC5TtP/yDRO7akbZxyndf++cMUnLFHpTqYBHhC8vORED+/7p7fdhOr9cj792P0+PF/2E32ZEA+v+935cOGviR4neng5nXffz6eP1+f599vTLfL29fP06zbDdc4zDpy+ZaH6M49opf79/jqHf/s4z/E6JShQJiXoPkNdcR4gAhdTTBqKEdCnKJqHMIKiFJWGYgBlR3RECKGnRwdker6O4AWeK3I9vgnK9G7hx8Nr06cmeh6wBpxZj1f/FQzY74FVEMOoDwqC7dtgNETbt8EC9V0gA9qKLiBg7NtAw/3XBN736NtGotgBA0HA0YOVW2ABbQ/nopMe1/i83brn60ZbGaZACz4XHoUAbe17rkiDcUMBeiASeAUmCnwscisKBC9WT9x6IcAcswLnDCfgzbT18OE2uzTj02zWjt5kGyDcZBuw8txvwV1R2ADOApPsosvMDkBCcR7CUHDNwcpsAi30xjYaxMIbVSSSRdBixweOw56B2WgXgmWZDkEJZ1Rlglym444IZ2STEL7sMZ+BeiwIzLBJnOOEKzTnLaE8gRLXAvtEVnTBE1jRJfaJ1Lg1PLPkpWSLRRa+AS/5vjSk8BdcYetaChqsXH4oxpr5wVevzUZRPOBaLiFwocdjmWpRKG1GSbCD6ybqaqHCipbvPtXfZoZ1PKrHlqOZE0qXlxNYF309Jmtnpd/tCnQ5Llrsd2DVCrU7DV6L/a6JueE16vN6a2fGeyUP+FTXssbv+9VmpJVuGWibokvXjSxYladUsVAHol5H+W1S7XvLQ22slp/x95e2ZV8NPb4+Len+vUp9zGKvNt+3/FHfxi+H43F+Wrf/y7c0D83vcHr8Cw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="781" y="466" width="61" height="53" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="144">
|
||||
<mxCell style="vsdxID=188;fillColor=#FFFFFF;gradientColor=none;shape=stencil(pVnZcls3DP0avXJIgutzmvxHJnFqTV07ozit8/eFei+3A11SnrxJFMBDYjsAdaIPPx4/f384Wf3j9fLy18O/56+vjyf642Tt+fnx4XJ+5U8n+niiD99eLg9/Xl5+Pn/dvn//fJW8fvr75Z/rDm+bnidlrkpW/9oWrKL0/8KnTfzLz8smb7bfg1be7RoGVPSb3YWiMn4X2pd4ZVd7o31FKxd2oX3JOBXDDJ11UhzRjVcO4KNROo7wJiiTAd+okAE/qBCn+FYZA/hRXJ+lMgF+UskAPinvAT+v7s8CHvCrTsVPXhHgWwaLI35KytGIb7Oyucd/Oj93wZL45+KxbYVK+NyUz2yaMbochhcoOBVoVKjeva1glLGjgim3OjBh5gAeLeiNymBAqxLEL8e9xQCWDmxSxwFUQ8PInVsAVcNN8GUAB31sq168RkAy09N2KqZaPMTxtCErDadlR2o/njaQCLeMzkV8zwdMgB8EvmdvZcDvknIHc0E5sFaTOsB3WmnEl+lOfFnE707ZcgujZXl/ztoM5a63bMlto2wCfCPxOyk68P8YML0GsMVteWXju8Qd7K5VnIZj46riH0k9UVkofQSBaEgFNxqCTGGHA2QmGQuJQFrwDtOHx7qbRN1lqQz4NiyKFpMMBoJla9llIPDBI/AOg2lIRDYJTfH5Gkh70vRsEYO0y6UV4In9DtdvUkeO7+qxkTsXfK4wd+BTqxZ343cZPsF3Cln/BrxTSPpLdO5dwho91g6jg8emh3ItH7UKLXoOTjIP8F4wlovK2xGdfRZGcC7USFi8Yo9LRK+w48BhV/K4v2AYKxhOBvYNgrGCX7pOmkDm9llXnTc06q7Rx7YyoXovautMmAuZ+Q3hRcdz7eAgfLTKQGFMtJC5sl/lADcQPbGE2HHmeORPQZ/k20RT6LMGc5e22LwUmftrRrftpHWQ2LJiLcGpcfExuOxyb4DbRqh3gls5pEjwK1FjsZYtrpW1ckHUuU0QZYna6NVYMWOtrKNPI2pXm6ia0r6E7hG+E9FuZcfYtyCtUcABkSkW+4SV6XnwA7eTvD3P0MBTTvIU+wLKmddw97Ey6KEqeOwopsIeGr9VXzmXv7rS/p5CqmXiOM6qSolxyYrcagXMMDmZsFcNplgqdeE4wRNWly6CW1nV2BBqPaLfmIuKzFGQiT68bVoYM8u6JhOMR8Lk3nnxEBSh4W+8wFB9FKn43TsRSSk6cDzM0J3Gfh674KDU9bsGdeqBs/SU940mi3W4R4ADOxwd4IHEtsGhdmrGTRS4gI254OZTIts1vQ8hYSfj3NToNbrufESS++NgCQq6scGeXdiSCwULbebCRrcUZvWxD4eqME+MFFSEtworH7b4qpCXJoo+PXKviSVh9VTCOgZfZuVTTf9kdjyhshQh8XtoM0Ve0uhzM8/i8hhdpJcPz/Ldrun073Y4BbEUlr3+da8N4POXuP6NrXI9zv9cVwx4Vwvj9oNE4fpjUy3GDv7Q/ln4dn562v6Y6H/HfyJ4afsXgz7+Bw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="780" y="465" width="63" height="55" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="145">
|
||||
<mxCell style="vsdxID=189;fillColor=#2d5967;gradientColor=none;shape=stencil(pVrbctw2DP2afeWIN5B8TtP/yDRO7alrZxyndf6+2llRhHCw4O70bS2DPCCIg5t0ip9+PH75/nAKy4/3t9e/Hv59+vr+eIq/nUJ4enl8eHt6X3+d4udT/PTt9e3hz7fXny9fL39//3KWPP/6+/Wf8w4fl3XJxXxeFJZf24PqyuXJ7xf556cXJu/JNfp/C3J0wViw3CXszv/i8ovQ5o+fb5fz+r6ilm3F9iRtO3yEbYux5/Ykpq7E8hG3Y/lxrO1RXISqEtpHJ6BDGxtvWD4fsUNB7OxSOmJPgMnlcET27Qi7mz0MXQVsV+PXMIENu6oe2xG2jV3DsJowd4MTx+gWceI2uefIrrGfeRHQxfkyha4u1SN0cSZyCmPbbgk4dmK2CbsvC+wcXI1H7MVCzsxMnssP317pRAJWYDKJWzDJu6WZmFSHVl2NI2bxwz+7c0ULtDD2MXIJG5cA9+uTk9hoY29e74odvcDOQGNa/bMK7CyxCX3Lk2nsOi5nYMtzcykLW1LKPjchoaoTyLm5LCwOBlccLNmEUtw6AXIEJ0NkvOoJcmIXdA05JefjEZkgdibGkm7txcZeA0+TfhbBz9YwRyJjrD4u4WMY0SbuUnb05oG546cjeFAcDay+WgOOnu2jhwCJwxdpd4++FjzmSmbFXSEL2yPFlKy1ZtQ9CITdxtLsHl09TjyuyhIhFrhzlv67DwZpdVbX9Sd2nTYvBI+FY2GEk5WKClCgEJwsqMwLNpWaswCq1GgiX2D/ZJpoTRXk71rA8totGhFqZJ/g7juYL4BbDqLc9+YVy/Na0mmkSEmha9rfo8xE+njQDKrHen1vnkn2CtVSPR+7mlgMUZZzNr3J3JuAWNb2xNLVTarTMjLMHpLs2nutCTvE9UZndXYSITRgCC0iigXpIhBAF5ckOJbfFZu8NU/J5FELFAzRW4RsYKtzirT1xSZp1Vcaq7JI0lNQBX2lsfwMXKnp+LY932CfFMoRmdNnb5wMH5+w7chNvxzZsxZTlsM2iLox2IkGouI2EtCl85ggbNLZ3r5Bap11zhXKgIQ1CM+PYbfrzCeGyDWfYHWVx207exP0NxnZS6wD62VIsQiUwVbTgQ6xrDz0VXqiJPSlZRptaAZemRk8btunCixd7MY6IrcIraCV3Bqj5E1OeCeHpuJHhhKrsrcnMqlAG43tBSVws4Jxj25p4WlayYn83bypLJPvkyzRCxUxQGsEHTfLvP3Wq4XKydBRMY8qne9+e3s3QE7OOBZzqhMxCIxNe8ODs6SG87OAMw771AH5zGw5mj8ZfvYLiSgStUsWHt9kNQo+D61iA/LHCuTn5+mWA99QrBTt7hxnIhEnYJF5ELs12SuCd0Q5dYfBCE6UIw4nEqtMDfgCwwnAF70q9EnTkjQVGMqONVzhIrjEpa7bawYfcWCpwAdMqmkBV4kw0bDKFS7epWdze0xqSUS7qIzblKkXGApaGbinNoKkx417zMO0oMBnxVI0GTUmCLmdlzu2ckkNRo34iiabGSYrVYxHQuHMK3sY/YDVs5+MGpWSz8uQq4T7jBWUEsjkDAPcDWNJkm+nRBBLVWEFFppWCcAWbIepEzUTGIkWnMdiqUcR7kcORMl825EjTKH3PcfgXQZ6CkdYwmEkmS6pNIf7nh0DA7w8LeEAdlob8tHAqA1lRc/M2B/NKy6ajJ6VmouU+IPhj8qchzR5c6jwkGDurfCQMPYpPJwdXeEhCWzJQ6zFkYdw2xMelsmEXOFhwf5U4WFpJ3k/koebyO2+UUSgUoZahYAQ8EI5mVPheXN194JZ+1btd77Iz4pdr0LQii9oFI7WWeGtXESVAREZWvGTBqRoncUmhaNVKbyRpFUERoWh04MrFK1YJUiWViVNA02PNz7haJvNRRSSNpxq8qq4d3FZa08kT5scdoCH4nShKS/pCwSJJrOm0r7Kw8/YZ5l2Jr3+GJ9ufXt6fr58+cX/Lz/1Wh9dPhOLn/8D);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="781" y="467" width="60" height="52" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Oracle Autonomous<br/></font></p></div>" tags="Background" id="146">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=191;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="736" y="524" width="287" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Database Standby<br/></font></p></div>" tags="Background" id="147">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=192;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="742" y="541" width="270" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="148">
|
||||
<mxCell style="vsdxID=193;fillColor=#312d2a;gradientColor=none;shape=stencil(pVTRdsIgDP0aXnMggQLPTv/DM+vKWdd6at3c348O1MK0Xbe3NL0395JAGK2O1fZQMuTHvmtfyw+36ytGTwzRNVXZud5HjNaMVvu2K1+69tTswvdhOyCH6K19HyqcA08qwGJgIf8MGWuhMN+ZTSA8n7rAEJGiwZhIiSnBeUicMSQUgsCIwRxDESNBy4ihB9q1a0ZmrQYyqVkJEqfMXlUvVj1DpF5vkJiwBMqkXsfKdEWhmpL2Slpn4giWUnXLQWWdGqOimNFgxYx+2ivF00bpS827aIHAbUqYPR5IM3s6f7to9nAIBS7sbT7U0cQwReCPsT9WzS9T2qNfPJXFhOwxElCC5xPFc6yvHUd4/z4UoP+FX+Llz1gf3DbV3tV1WHTj//lm86mwFWn9BQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="803" y="296" width="15" height="128" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="149">
|
||||
<mxCell style="vsdxID=195;fillColor=#FFFFFF;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="968" y="197" width="78" height="31" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align: center; margin: 0px; text-indent: 0px; vertical-align: middle; direction: ltr;"><font style="font-size:14.82px;font-family:Oracle Sans;color:#312d2a;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Automatic </font><font style="font-size:14.82px;font-family:Oracle Sans;color:#312d2a;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">backup<br></font></p></div>" tags="Background" id="150">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=196;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="972" y="197" width="88" height="43" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="151">
|
||||
<mxCell style="vsdxID=198;fillColor=#FFFFFF;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="723" y="322" width="175" height="14" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="<div style="font-size: 1px"><p style="text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;"><font style="font-size:14.82px;font-family:Oracle Sans;color:#312d2a;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1">Autonomous Data Guard<br/></font></p></div>" tags="Background" id="152">
|
||||
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=199;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="728" y="322" width="311" height="17" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="153">
|
||||
<mxCell style="vsdxID=200;fillColor=#312d2a;gradientColor=none;shape=stencil(pZVRc4MgDMc/Da85SFTkuWu/R2+105vTnrVb9+2HQ63gCcf5hvEX8k8ChNHhXp5vBUN+77v2s/ipLn3J6I0hVk1ZdFWvV4yOjA7Xtis+uvbRXMz37TyQw+qr/R52eBo/DpQNTsh/jUEgUPJvORm+rhovzyFTHn4HHKtkL29XRinIHQeCVCwd3h+d8RBTelMGYg6RS2N6ostMBgE5jgytQ9NMCbmdnJKQSkusrnTq06o9ErLVclupJtCWyh2ZErgjMxg1A4VOjQCVE3gBjaa5Vb7gCMpzuHRRRcx5WQYY9xcgI5NbCvdkR0AqnF4CPPHGfzVMzC5Zvurq3HdcU7Q+T1vhV+UNXZdoB/epkmjz41XauO4uHXgedsBxOvbQocfb36BM7KEDb3fsYIjRHoD14jXfrlVdm/G4/O/OQ20ys5SOfw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="282" y="228" width="294" height="63" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="154">
|
||||
<mxCell style="vsdxID=201;fillColor=#312d2a;gradientColor=none;shape=stencil(pZvZdtNAEES/xq99ZpFmeYbwHzkQiA8hyXESlr9ngpAcdYNK5XlznLrqqrKszdIhvnu6vX68OQT39Hx6+Hrz4/jp+fYQ3x9CON7f3pyOz+3VIV4d4rvPD6ebL6eHl/tP09+P16/K11ffHr6/LuHnxDmJ5RUK7tf0Rqky+D/vfJj0d8f7LX11UuKG/nIx66Rbv26mVinjGigK+Phymgg/CbybE/iFqGl662fQmrDYKLMm2tFxaW4rXM0ypHXVLd24ZbYh0a/tLt5ms03jytruWTM7S1KjMgtnJ8llPbsWKVVNf6M6G6oVz29tDBtlVXHrssCq83bEX8DPa9P+hGVZ+bcS5rrM2kjYVDGDT9ep+bk1HMznu6wDwaqiXbn+N980jL47NKC3W3mtd1vffKUNkuverRCjZTxcrAU9FLVigkX7KHXjg3SXi0kjnXLQiq8yJmYNGcWPe5NSYtZJtx40E9s7W7tko08Sw96wnJh10qsHzQxe6ubxhNZn2b0WUFrWR68e9DJGcVubRKMvkra+2h1i1kmvHjSTBgnMdzUte70dYTkx66RXD5rJ4+YRmd28e3H7TxQYMeukW4/210nS1ibS6MFZToeYddKrR2eiy7H+P5fvxccuPToZZc90Sf9Yv+4nSKLyDmQ/Rg/yGj+sHvjB+nU/o6SBWX4W36cHeY0fVg/8YP26n0Iu37v5qPZiACQ2jlg9MIT164a8l8QljmxFBgCRrSUaQJYwoFoaJCVqQhLfCaDQxhINIEsYUC1ldkIVn/sAFNpYogFkCQNqn+YkUaHbXoFryQJoN2Us0QCyhAHVUpzPifZOGMV3Aii0sUQDyBIGVEuJnVDE1z4AhTaWaABZwoBqqUqiQkdPtmQBFNpYogHUEgbWLcXAttTOh7v0ILI1RAPIEQZUR6NQm72YyYq0HiXWflg98gP1qp8i2TMDBiehE0CRjSUaQCVhYN3S4NmWogRqPbIACG0t0QCyhAHV0iCZC53YlgyAQhtLNIAsYUC1lOcL/HsnVAmdAAptLNEAsoQBdZ3EkRPGIIG7MmEAdOnDWKIBZAkDqqUomQs9si0ZAIU2lmgAWcKAaimZi7xgQpHQCaDQxhINIEsYUC1VckLy868rFwMotLFEA6glDKxbSkEyF3pgWzIACG0t0QCyhAHVUjsKpQ5bUzuM7gRQaGOJBpAlDKiWCjkhO7IlC6DQxhINoJYwsG4p+/PdZ/tCt0PpTgCEtpZoAFnCgGppYCe0Q2nq1NsCKLSxRAPIEgZUS3m+T27vhMq2ZAAU2liiAWQJA+o3uGaAGVCCUIe5Ro9+UdN+WD3yA/Wqn0gufzzfv3ohgBJrR6weGYJ61VCSwiUubEUGQJGNJRpAljCgWqrLTcz7JlQ/36h4MYBCG0s0gFrCgHrCIbAtDRKp7ZEFQGhriQaQJQyolsbltv2dEzLbkgFQaGOJBpAlDKiWihTqWkOtMlI7Wwug0MYSDSBLGGgvzo9efT7e3U1Pbr39v35Uq701PeYVr34D);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="295" y="390" width="281" height="74" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="155">
|
||||
<mxCell style="vsdxID=202;fillColor=#312d2a;gradientColor=none;shape=stencil(pVTRcoMgEPwaXm/wDgSe0+Q/MompTK1mjGmTv68WNGBGaaZv3LLH7sFxjDaXcn8uGPJL1zYfxbc9diWjN4Zo67JobdevGG0ZbU5NW7y3zbU+uvi8H5jD6rP5Gk64uTwOaIYk5HcHCAmY/yI7xz9cW5eQ+QxP96FQoLWDbhgzfCgRMvQMelL1iBSgRChb2TqwKYGLyKZRQHrNpgSi2GnGeexTgo6dPhjeVQ585jOpm4/7k67pS1OxckDyiOEgMSWuFZhs+ZIy0Cq6JMmXycHpPhtH5O+VgdCpwvp2olRdCDmuv+VM+Okhp7eOW3CUDNpnQTK+nPSveJUf/7qp0UY6Aa2drvE/dJmDWumamZfX2OtWUux+8RhMJ1tVbq6F+/NB1kNuCNL2Bw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="105" y="322" width="141" height="15" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="156">
|
||||
<mxCell style="vsdxID=203;fillColor=#312d2a;gradientColor=none;shape=stencil(nVTRcoMgEPwaXm/gDgWe0+Q/MompTq1mjGmTvy8WNYATafqG6y673MEx2lzK/blgyC99134U39WxLxm9McSqKYuu6u2K0ZbR5tR2xXvXXpuj+z7vB+aw+my/hh1uTmcMKDGokN8dkklQ8hfZOcHh2jmFcATB+SgYgQxBoINuGHNGQCrQeuTQ0nqEZAaY+9511fhhJZg8CIuQ41pWq8hVmJaHSS0Dw6g8iklgophJV5oIjxoBUmTskSYIZFyjpblA4GalRhoEhQ3lK2xvf4doNSF/P5zhkGH6dPZiqeTxjALSiZZG9vNl83o6dz2+kLO1d5eeWUe1Sj+VlwWLxyh0IJAE9NyA/5ub5aBWg0c5XuWvZ0nz7eIxsU5VXbuB5/+PJ5yF3HSk7Q8=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="106" y="502" width="141" height="15" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
<UserObject label="" tags="Background" id="157">
|
||||
<mxCell style="vsdxID=204;fillColor=#312d2a;gradientColor=none;shape=stencil(pZTRboMwDEW/Jq9WYgeSPHfdf1QrHWgMKkq39u8blkzFaQGhviXmmHvtJBa0OZW7YyFQnvqu/Sp+q31fCnoTiFVTFl3V+5WgraDNoe2Kz649N/uwP+4Gclh9tz/DHy4hL9Ng9JCF8hoiEjT9Bd4D/3HuQoKKGQgKY0YMybC9YNhqA9ZGAjlBkcgA80jQc9m6akY2EXJkLg1onHMpuUPvSHOTkhu0kGnucSRJ/4wzs50BJC7rIFH1gaQzdySqKATp5oV5bzLJOoNg8mnYGnCK8UtVOQkZLpXlb5FZqMsZILuuoUomxzg6JUwRfDjpaeH09iQNXXwTa3n+5jQBMVwBqunfP+Kx5udmcjCv0CutvIb7xX0wHaq6DnNt/D0dZD4UhiBtbw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
|
||||
<mxGeometry x="263" y="390" width="15" height="96" as="geometry" />
|
||||
</mxCell>
|
||||
</UserObject>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
|
After Width: | Height: | Size: 131 KiB |
@@ -0,0 +1,396 @@
|
||||
<svg width="1168" height="576" viewBox="0 0 1168 576" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="autonomous-database-db-at-azure-diagram">
|
||||
<rect width="1168" height="576" fill="white"/>
|
||||
<g id="OCI Section Boxes">
|
||||
<rect x="1008.5" y="0.5" width="159" height="575" rx="3.5" fill="#E4E1DD"/>
|
||||
<rect x="1008.5" y="0.5" width="159" height="575" rx="3.5" stroke="#9E9892"/>
|
||||
<text id="Availability Domain" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="600" letter-spacing="0em"><tspan x="1041.63" y="21.816">OCI Services</tspan></text>
|
||||
</g>
|
||||
<g id="Azure Cloud boxes">
|
||||
<rect x="0.5" y="0.5" width="895" height="575" rx="3.5" fill="#ECF3FB"/>
|
||||
<rect x="0.5" y="0.5" width="895" height="575" rx="3.5" stroke="#0078D7"/>
|
||||
<text id="Azure Region" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="bold" letter-spacing="0em"><tspan x="8" y="21.816">Azure Region</tspan></text>
|
||||
</g>
|
||||
<g id="Availability Zone">
|
||||
<rect x="8.5" y="32.5" width="879" height="535" fill="white"/>
|
||||
<rect x="8.5" y="32.5" width="879" height="535" stroke="#0078D7" stroke-dasharray="2 2"/>
|
||||
<text id="Subscription" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="600" letter-spacing="0em"><tspan x="16" y="53.816">Subscription</tspan></text>
|
||||
</g>
|
||||
<g id="Subscription_2">
|
||||
<rect x="136.5" y="64.5" width="743" height="231" rx="3.5" fill="#DAE8FC"/>
|
||||
<rect x="136.5" y="64.5" width="743" height="231" rx="3.5" stroke="#0078D7"/>
|
||||
<text id="Availability Zone_2" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="600" letter-spacing="0em"><tspan x="441.102" y="85.816">Availability Zone 1</tspan></text>
|
||||
</g>
|
||||
<g id="Subscription_3">
|
||||
<rect x="136.5" y="328.5" width="743" height="231" rx="3.5" fill="#DAE8FC"/>
|
||||
<rect x="136.5" y="328.5" width="743" height="231" rx="3.5" stroke="#0078D7"/>
|
||||
<text id="Availability Zone_3" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="600" letter-spacing="0em"><tspan x="440.047" y="349.816">Availability Zone 2</tspan></text>
|
||||
</g>
|
||||
<g id="Azure VNet">
|
||||
<rect x="145" y="106" width="246" height="445" fill="white"/>
|
||||
<rect x="145" y="106" width="246" height="445" stroke="#706E6F" stroke-width="2" stroke-dasharray="4 4"/>
|
||||
<g id="VNet icon">
|
||||
<rect id="White Vnet BG" x="339" y="103" width="45" height="6" fill="white"/>
|
||||
<g id="Icon Master">
|
||||
<g id="Azure_VNet">
|
||||
<g id="Group">
|
||||
<g id="Group_2">
|
||||
<path id="Vector" d="M370.294 108.545C371.725 108.545 372.884 107.386 372.884 105.955C372.884 104.524 371.725 103.365 370.294 103.365C368.863 103.365 367.704 104.524 367.704 105.955C367.704 107.386 368.863 108.545 370.294 108.545Z" fill="url(#paint0_linear_16122_355283)"/>
|
||||
<path id="Vector_2" d="M362.125 108.545C363.555 108.545 364.715 107.386 364.715 105.955C364.715 104.524 363.555 103.365 362.125 103.365C360.694 103.365 359.534 104.524 359.534 105.955C359.534 107.386 360.694 108.545 362.125 108.545Z" fill="url(#paint1_linear_16122_355283)"/>
|
||||
<path id="Vector_3" d="M353.955 108.545C355.386 108.545 356.545 107.386 356.545 105.955C356.545 104.524 355.386 103.365 353.955 103.365C352.525 103.365 351.365 104.524 351.365 105.955C351.365 107.386 352.525 108.545 353.955 108.545Z" fill="url(#paint2_linear_16122_355283)"/>
|
||||
<path id="Vector_4" d="M355.748 116.316L354.154 117.91C353.955 117.91 353.557 117.91 353.357 117.711L342.398 106.752C342 106.354 342 105.556 342.398 104.959L343.993 103.564L355.748 115.32C355.948 115.519 355.948 115.918 355.748 116.316Z" fill="#50E6FF"/>
|
||||
<path id="Vector_5" d="M354.154 94.1992L355.748 95.7933C355.948 95.9925 355.948 96.391 355.748 96.5903L343.993 108.346L342.399 106.752C341.801 106.154 341.801 105.357 342.399 104.959L353.158 94.1992C353.357 94 353.756 94 354.154 94.1992Z" fill="#1490DF"/>
|
||||
<path id="Vector_6" d="M380.057 103.365L381.452 104.76C382.05 105.357 382.05 106.154 381.452 106.553L370.493 117.512C370.294 117.711 369.895 117.711 369.497 117.512L367.903 115.918C367.704 115.718 367.704 115.32 367.903 114.921L380.057 103.365Z" fill="#50E6FF"/>
|
||||
<path id="Vector_7" d="M381.651 106.752L380.057 108.346L368.501 96.7895C368.301 96.5903 368.301 96.1918 368.501 95.7933L369.895 94.1992C370.095 94 370.493 94 370.892 94.1992L381.651 104.959C382.05 105.357 382.05 106.154 381.651 106.752Z" fill="#1490DF"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<text id="VNet" fill="#706E6F" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="600" letter-spacing="0em"><tspan x="153" y="127.816">Application VNet/Subnet</tspan></text>
|
||||
</g>
|
||||
<g id="Icon Master_2">
|
||||
<g id="Services/Object-Storage">
|
||||
<g id="Group_3">
|
||||
<g id="Group_4">
|
||||
<g id="Group_5">
|
||||
<path id="Vector_8" d="M1059.35 227.286C1057.64 227.286 1056.21 225.857 1056.21 224.143V171.857C1056.21 170.143 1057.64 168.714 1059.35 168.714H1111.65C1113.36 168.714 1114.79 170.143 1114.79 171.857V224.286C1114.79 226 1113.36 227.429 1111.65 227.429L1059.35 227.286Z" fill="white"/>
|
||||
<path id="Vector_9" d="M1111.51 169.429C1112.79 169.429 1113.93 170.571 1113.93 171.857V224.286C1113.93 225.571 1112.79 226.714 1111.51 226.714H1059.35C1058.07 226.571 1056.93 225.429 1056.93 224.143V171.857C1056.93 170.571 1058.07 169.429 1059.35 169.429H1111.51ZM1111.51 168H1059.35C1057.21 168 1055.5 169.714 1055.5 171.857V224.286C1055.5 226.286 1057.21 228 1059.35 228H1111.65C1113.79 228 1115.5 226.286 1115.5 224.143V171.857C1115.36 169.714 1113.65 168 1111.51 168Z" fill="white"/>
|
||||
</g>
|
||||
<g id="Group_6">
|
||||
<g id="Group_7">
|
||||
<path id="Vector_10" d="M1098.82 184.572L1102.67 191.286L1098.82 198H1091.13L1087.28 191.286L1091.13 184.572H1098.82V184.572ZM1100.11 182.572H1089.85L1084.72 191.429L1089.85 200.286H1100.11L1105.24 191.429L1100.11 182.572Z" fill="#2D5967"/>
|
||||
</g>
|
||||
<g id="Group_8">
|
||||
<path id="Vector_11" d="M1085 205C1088.7 205 1091.7 208 1091.7 211.714C1091.7 215.429 1088.7 218.429 1085 218.429C1081.29 218.429 1078.3 215.429 1078.3 211.714C1078.3 208 1081.29 205 1085 205ZM1085 203C1080.15 203 1076.16 207 1076.16 211.857C1076.16 216.714 1080.15 220.714 1085 220.714C1089.85 220.714 1093.84 216.714 1093.84 211.857C1093.84 206.857 1089.85 203 1085 203Z" fill="#2D5967"/>
|
||||
</g>
|
||||
<g id="Group_9">
|
||||
<path id="Vector_12" d="M1074.88 186.286L1081.15 197.572H1068.75L1074.88 186.286ZM1074.88 182L1065.19 199.715H1084.72L1074.88 182Z" fill="#2D5967"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Group_10">
|
||||
<path id="Vector_13" d="M1111.51 226.572H1059.35C1058.07 226.572 1056.93 225.429 1056.93 224.144V175.144H1113.93V224.144C1113.93 225.429 1112.79 226.572 1111.51 226.572ZM1059.06 177.286V224.286C1059.06 224.429 1059.21 224.572 1059.35 224.572H1111.65C1111.8 224.572 1111.94 224.429 1111.94 224.286V177.286H1059.06Z" fill="#2D5967"/>
|
||||
</g>
|
||||
<g id="Group_11">
|
||||
<path id="Vector_14" d="M1113.93 173.572H1056.93V171.858C1056.93 170.572 1058.07 169.429 1059.35 169.429H1111.65C1112.79 169.429 1113.93 170.572 1113.93 171.858V173.572Z" fill="#2D5967"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Icon Text Label">
|
||||
<text id="IconLabel" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="1032.12" y="245.816">Object Storage</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Azure Container Registries">
|
||||
<g id="Azure-Container-Registries">
|
||||
<g id="Group 1494">
|
||||
<path id="Vector_15" d="M61.2802 299.272L69.9149 294.025L94.1114 303.134C93.5831 300.783 92.3717 298.641 90.6295 296.977L90.5962 296.81C88.5625 294.845 85.981 293.543 83.1922 293.075C83.0101 288.742 81.1171 284.659 77.9284 281.72C74.7397 278.782 70.5157 277.228 66.1829 277.4C62.6882 277.336 59.2598 278.357 56.3692 280.322C53.4786 282.287 51.2677 285.099 50.0407 288.372C46.3653 288.821 42.9742 290.578 40.4877 293.321C38.0013 296.065 36.5857 299.612 36.5 303.314C36.665 307.481 38.4733 311.413 41.5295 314.25C44.5857 317.088 48.6411 318.6 52.8089 318.455H61.2802V299.272Z" fill="url(#paint3_linear_16122_355283)"/>
|
||||
<path id="Vector_16" d="M70.0844 295.874L70.1178 310.148L96.4988 315.751V305.812L70.0844 295.874Z" fill="#767676"/>
|
||||
<path id="Vector_17" d="M70.0856 295.874L62.9484 300.209V313.483L70.1189 310.148" fill="#999999"/>
|
||||
<path id="Vector_18" d="M82.1255 310.348L84.5268 311.015V303.244L82.1255 302.41V310.348Z" fill="#A3A3A3"/>
|
||||
<path id="Vector_19" d="M79.7244 301.643L77.3231 300.776V309.08L79.7244 309.747V301.643Z" fill="#A3A3A3"/>
|
||||
<path id="Vector_20" d="M86.9279 311.648L89.2625 312.282L89.3292 304.878L86.9279 304.078V311.648Z" fill="#A3A3A3"/>
|
||||
<path id="Vector_21" d="M72.5532 307.847L74.9545 308.447V300.009L72.5532 299.208V307.847Z" fill="#A3A3A3"/>
|
||||
<path id="Vector_22" d="M94.0975 306.512L91.6961 305.679V312.916L94.0975 313.583V306.512Z" fill="#A3A3A3"/>
|
||||
<path id="ef0d1b54-a1e7-4cb9-a4e5-8a8518e7c127" d="M65.3818 309.914L64.1811 310.615V301.176L65.3818 300.543V309.914ZM67.7497 299.175L66.5157 299.976V309.147L67.7497 308.48V299.175Z" fill="#B3B3B3"/>
|
||||
<path id="Vector_23" d="M96.5 315.751L89.2961 318.219L62.9484 313.483L70.1189 310.147L96.5 315.751Z" fill="url(#paint4_linear_16122_355283)"/>
|
||||
<path id="Vector_24" d="M96.4995 325.923L69.9851 330.959L70.1185 312.315L96.4995 317.218V325.923Z" fill="#767676"/>
|
||||
<path id="Vector_25" d="M72.5532 327.891V316.051L74.9545 316.351V327.49L72.5532 327.891Z" fill="#A3A3A3"/>
|
||||
<path id="Vector_26" d="M79.7244 326.69L77.3231 327.124V316.651L79.7244 317.018V326.69Z" fill="#A3A3A3"/>
|
||||
<path id="Vector_27" d="M82.1255 326.323V317.251L84.5268 317.552V325.89L82.1255 326.323Z" fill="#A3A3A3"/>
|
||||
<path id="Vector_28" d="M89.2959 325.056L86.9279 325.49V317.852L89.2959 318.219V325.056Z" fill="#A3A3A3"/>
|
||||
<path id="Vector_29" d="M94.1642 324.289L91.6961 324.722V318.452L93.9974 318.752L94.1642 324.289Z" fill="#A3A3A3"/>
|
||||
<path id="b9f25eb4-4c88-45c2-bc4d-f992757d7e0e" d="M62.9484 326.694V315.821L70.1523 312.486V331.163L62.9484 326.694Z" fill="#999999"/>
|
||||
<path id="eb9200a7-4693-4427-bdae-b33ce90ff7f2" d="M65.2158 326.657L64.1486 326.123V316.918L65.2158 316.418V326.657ZM67.7839 315.15L66.5165 315.784V327.39L67.7505 328.024V315.15H67.7839Z" fill="#B3B3B3"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Icon Text Label_2">
|
||||
<text id="IconLabel_2" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="45.5312" y="349.816">Azure</tspan></text>
|
||||
<text id="IconLabel_3" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="31.0156" y="365.816">Container</tspan></text>
|
||||
<text id="IconLabel_4" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="36.8438" y="381.816">Registry</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Icon Master_3">
|
||||
<g id="Azure-service-Virtual-Machine">
|
||||
<g id="Group 836">
|
||||
<path id="Vector_30" d="M95.9337 456.537H39.9337C38.8291 456.537 37.9337 457.433 37.9337 458.539V494.582C37.9337 495.688 38.8291 496.585 39.9337 496.585H95.9337C97.0382 496.585 97.9337 495.688 97.9337 494.582V458.539C97.9337 457.433 97.0382 456.537 95.9337 456.537Z" fill="url(#paint5_linear_16122_355283)"/>
|
||||
<path id="Vector_31" d="M77.9337 470.72V482.368L67.9337 488.241V476.561L77.9337 470.72Z" fill="#50E6FF"/>
|
||||
<path id="Vector_32" d="M77.9337 470.72L67.9337 476.594L57.9337 470.72L67.9337 464.88L77.9337 470.72Z" fill="#C3F1FF"/>
|
||||
<path id="Vector_33" d="M67.9337 476.594V488.241L57.9337 482.368V470.72L67.9337 476.594Z" fill="#9CEBFF"/>
|
||||
<path id="Vector_34" d="M57.9337 482.368L67.9337 476.561V488.241L57.9337 482.368Z" fill="#C3F1FF"/>
|
||||
<path id="Vector_35" d="M77.9337 482.368L67.9337 476.561V488.241L77.9337 482.368Z" fill="#9CEBFF"/>
|
||||
<path id="Vector_36" d="M79.9671 508.7C74.0337 507.765 73.8004 503.493 73.8004 496.585H62.0337C62.0337 503.493 61.8337 507.765 55.9004 508.7C55.0813 508.79 54.3249 509.182 53.777 509.798C53.2292 510.414 52.9287 511.212 52.9337 512.037H82.9337C82.9387 511.212 82.6383 510.414 82.0905 509.798C81.5426 509.182 80.7861 508.79 79.9671 508.7Z" fill="url(#paint6_linear_16122_355283)"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Icon Text Label_3">
|
||||
<text id="IconLabel_5" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="27.0781" y="529.816">Application</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Azure load balancer">
|
||||
<g id="Azure-icon-service-Load-Balancers">
|
||||
<path id="Vector_37" d="M239.1 480.566L267.067 452.6C267.253 452.408 267.476 452.256 267.722 452.152C267.968 452.048 268.233 451.995 268.5 451.995C268.767 451.995 269.032 452.048 269.278 452.152C269.524 452.256 269.747 452.408 269.933 452.6L297.9 480.566C298.092 480.753 298.244 480.976 298.348 481.222C298.452 481.468 298.505 481.733 298.505 482C298.505 482.267 298.452 482.532 298.348 482.778C298.244 483.024 298.092 483.247 297.9 483.433L269.9 511.433C269.526 511.8 269.024 512.005 268.5 512.005C267.977 512.005 267.474 511.8 267.1 511.433L239.1 483.433C238.908 483.247 238.756 483.024 238.652 482.778C238.548 482.532 238.495 482.267 238.495 482C238.495 481.733 238.548 481.468 238.652 481.222C238.756 480.976 238.908 480.753 239.1 480.566V480.566Z" fill="url(#paint7_linear_16122_355283)"/>
|
||||
<path id="Vector_38" d="M275.833 465.333L268.767 458.3C268.693 458.235 268.598 458.198 268.5 458.198C268.402 458.198 268.307 458.235 268.233 458.3L261.167 465.333C261.102 465.377 261.054 465.442 261.032 465.518C261.011 465.593 261.016 465.674 261.048 465.745C261.08 465.817 261.136 465.875 261.206 465.91C261.277 465.944 261.357 465.952 261.433 465.933H265.567C265.615 465.933 265.662 465.943 265.707 465.961C265.751 465.98 265.792 466.007 265.826 466.041C265.86 466.075 265.887 466.115 265.905 466.16C265.924 466.204 265.933 466.252 265.933 466.3V472.967C265.933 473.064 265.972 473.157 266.041 473.226C266.109 473.295 266.203 473.333 266.3 473.333H270.7C270.797 473.333 270.89 473.295 270.959 473.226C271.028 473.157 271.067 473.064 271.067 472.967V466.3C271.067 466.252 271.076 466.204 271.095 466.16C271.113 466.115 271.14 466.075 271.174 466.041C271.208 466.007 271.249 465.98 271.293 465.961C271.337 465.943 271.385 465.933 271.433 465.933H275.567C275.643 465.952 275.723 465.944 275.793 465.91C275.864 465.875 275.92 465.817 275.952 465.745C275.984 465.674 275.989 465.593 275.968 465.518C275.946 465.442 275.898 465.377 275.833 465.333V465.333Z" fill="#B4EC36"/>
|
||||
<path id="Vector_39" d="M251.833 474.033L244.833 481.133C244.77 481.201 244.735 481.29 244.735 481.383C244.735 481.476 244.77 481.565 244.833 481.633L251.833 488.667C251.885 488.721 251.951 488.758 252.024 488.774C252.098 488.789 252.174 488.782 252.243 488.753C252.312 488.724 252.37 488.675 252.41 488.612C252.45 488.548 252.47 488.475 252.467 488.4V484.3C252.467 484.203 252.505 484.109 252.574 484.041C252.643 483.972 252.736 483.933 252.833 483.933H259.5C259.547 483.933 259.593 483.924 259.636 483.905C259.679 483.886 259.717 483.859 259.748 483.824C259.78 483.79 259.804 483.749 259.818 483.704C259.833 483.66 259.838 483.613 259.833 483.567V479.167C259.861 479.12 259.877 479.067 259.88 479.013C259.883 478.958 259.872 478.904 259.849 478.855C259.826 478.805 259.791 478.762 259.748 478.73C259.705 478.697 259.654 478.675 259.6 478.667H252.933C252.887 478.671 252.84 478.666 252.796 478.651C252.751 478.637 252.71 478.613 252.676 478.582C252.641 478.55 252.614 478.512 252.595 478.469C252.576 478.426 252.566 478.38 252.567 478.333V474.3C252.602 474.203 252.597 474.095 252.554 474.002C252.51 473.908 252.431 473.835 252.333 473.8C252.236 473.764 252.129 473.769 252.035 473.813C251.941 473.857 251.869 473.936 251.833 474.033Z" fill="#B4EC36"/>
|
||||
<path id="Vector_40" d="M285.433 488.667L292.533 481.6C292.597 481.532 292.632 481.443 292.632 481.35C292.632 481.257 292.597 481.168 292.533 481.1L285.433 474.033C285.381 473.99 285.317 473.962 285.25 473.953C285.182 473.943 285.113 473.953 285.051 473.981C284.988 474.009 284.935 474.053 284.897 474.109C284.858 474.166 284.836 474.232 284.833 474.3V478.467C284.834 478.513 284.824 478.56 284.805 478.602C284.786 478.645 284.759 478.684 284.724 478.715C284.69 478.746 284.649 478.77 284.604 478.785C284.56 478.8 284.513 478.805 284.467 478.8H277.8C277.753 478.8 277.707 478.809 277.664 478.828C277.621 478.847 277.583 478.875 277.552 478.909C277.52 478.944 277.496 478.984 277.482 479.029C277.467 479.073 277.462 479.12 277.467 479.167V483.567C277.462 483.613 277.467 483.66 277.482 483.704C277.496 483.749 277.52 483.79 277.552 483.824C277.583 483.859 277.621 483.886 277.664 483.905C277.707 483.924 277.753 483.934 277.8 483.933H284.467C284.564 483.933 284.657 483.972 284.726 484.041C284.795 484.109 284.833 484.203 284.833 484.3V488.433C284.842 488.499 284.868 488.561 284.908 488.612C284.949 488.664 285.003 488.704 285.064 488.728C285.125 488.752 285.192 488.759 285.257 488.748C285.322 488.737 285.383 488.709 285.433 488.667V488.667Z" fill="#B4EC36"/>
|
||||
<path id="Vector_41" d="M277.8 482C277.811 480.266 277.336 478.564 276.431 477.085C275.525 475.606 274.223 474.41 272.674 473.632C271.124 472.853 269.388 472.524 267.661 472.681C265.933 472.837 264.285 473.473 262.9 474.518C261.516 475.562 260.451 476.973 259.825 478.59C259.2 480.208 259.04 481.968 259.362 483.672C259.685 485.376 260.477 486.955 261.65 488.233C262.823 489.51 264.33 490.434 266 490.9V494.067C264.865 494.653 263.96 495.604 263.43 496.767C262.9 497.929 262.776 499.236 263.078 500.477C263.38 501.719 264.09 502.823 265.094 503.612C266.099 504.402 267.339 504.831 268.617 504.831C269.894 504.831 271.135 504.402 272.139 503.612C273.144 502.823 273.854 501.719 274.155 500.477C274.457 499.236 274.333 497.929 273.803 496.767C273.273 495.604 272.368 494.653 271.233 494.067V490.734C273.115 490.166 274.766 489.013 275.947 487.442C277.128 485.872 277.777 483.965 277.8 482V482Z" fill="white"/>
|
||||
<path id="e99c3387-15c3-4f28-bd4b-cb209b430e06" d="M268.533 487.367C271.516 487.367 273.933 484.949 273.933 481.967C273.933 478.985 271.516 476.567 268.533 476.567C265.551 476.567 263.133 478.985 263.133 481.967C263.133 484.949 265.551 487.367 268.533 487.367Z" fill="#5EA0EF"/>
|
||||
</g>
|
||||
<g id="Icon Text Label_4">
|
||||
<text id="IconLabel_6" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="194.266" y="529.816">Azure Load Balancer</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Azure Kubernetes Services">
|
||||
<g id="Azure-Kubernetes-Services">
|
||||
<g id="Azure-Kubernetes-Services_2">
|
||||
<path id="Vector_42" d="M257.747 278.733L248.256 280.492V293.434L257.747 295.459L267.272 291.642V281.985L257.747 278.733Z" fill="url(#paint8_linear_16122_355283)"/>
|
||||
<path id="Vector_43" d="M248.256 280.492V293.434L257.847 295.459V278.866L248.256 280.492ZM252.305 292.439L249.617 291.908V281.952L252.305 281.521V292.439ZM256.486 293.202L253.4 292.704V281.321L256.486 280.791V293.202Z" fill="#341A6E"/>
|
||||
<path id="Vector_44" d="M278.29 278.899L268.799 280.658V293.6L278.29 295.625L287.781 291.775V282.151L278.29 278.899Z" fill="url(#paint9_linear_16122_355283)"/>
|
||||
<path id="Vector_45" d="M268.799 280.658V293.6L278.323 295.625V279.032L268.799 280.658ZM272.815 292.605L270.127 292.074V282.118L272.815 281.687V292.605ZM276.996 293.368L273.91 292.87V281.487L276.996 280.923V293.368Z" fill="#341A6E"/>
|
||||
<path id="Vector_46" d="M248.024 296.587L238.533 298.346V311.288L248.024 313.313L257.548 309.496V299.839L248.024 296.587Z" fill="url(#paint10_linear_16122_355283)"/>
|
||||
<path id="Vector_47" d="M238.5 298.346V311.189L248.091 313.213V296.62L238.5 298.346ZM242.515 310.326L239.827 309.762V299.806L242.515 299.341V310.326ZM246.73 311.189L243.644 310.691V299.175L246.73 298.644V311.189Z" fill="#341A6E"/>
|
||||
<path id="Vector_48" d="M268.5 296.454L259.009 298.213V311.155L268.5 313.213L277.991 309.363V299.706L268.5 296.454Z" fill="url(#paint11_linear_16122_355283)"/>
|
||||
<path id="Vector_49" d="M259.009 298.213V311.189L268.566 313.213V296.62L259.009 298.213ZM263.024 310.193L260.336 309.629V299.673L263.024 299.209V310.193ZM267.206 310.923L264.119 310.425V299.043L267.206 298.512V310.923Z" fill="#341A6E"/>
|
||||
<path id="Vector_50" d="M288.976 296.62L279.485 298.379V311.321L288.976 313.346L298.5 309.529V299.872L288.976 296.62Z" fill="url(#paint12_linear_16122_355283)"/>
|
||||
<path id="Vector_51" d="M279.485 298.379V311.189L289.076 313.213V296.62L279.485 298.379ZM283.534 310.359L280.846 309.795V299.839L283.534 299.375V310.359ZM287.715 311.089L284.629 310.591V299.209L287.715 298.678V311.089Z" fill="#341A6E"/>
|
||||
<path id="Vector_52" d="M257.515 314.64L248.024 316.366V329.308L257.515 331.366L267.04 327.516V317.892L257.515 314.64Z" fill="url(#paint13_linear_16122_355283)"/>
|
||||
<path id="Vector_53" d="M248.024 316.366V329.308L257.615 331.366V314.507L248.024 316.366ZM252.073 328.346L249.385 327.782V317.826L252.073 317.361V328.346ZM256.254 329.109L253.168 328.611V317.195L256.254 316.664V329.109Z" fill="#341A6E"/>
|
||||
<path id="Vector_54" d="M278.024 314.773L268.533 316.532V329.474L278.024 331.499L287.548 327.682V318.025L278.024 314.773Z" fill="url(#paint14_linear_16122_355283)"/>
|
||||
<path id="Vector_55" d="M268.533 316.532V329.474L278.124 331.499V314.906L268.533 316.532ZM272.582 328.512L269.893 327.948V317.992L272.582 317.527V328.512ZM276.763 329.242L273.677 328.744V317.362L276.763 316.831V329.242Z" fill="#341A6E"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Icon Text Label_5">
|
||||
<text id="IconLabel_7" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="204.203" y="349.816">Azure Kubernetes</tspan></text>
|
||||
<text id="IconLabel_8" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="238.484" y="365.816">Services</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Oracle Database@Azure">
|
||||
<rect x="545" y="105" width="326" height="182" fill="white"/>
|
||||
<rect x="545" y="105" width="326" height="182" stroke="#706E6F" stroke-width="2" stroke-dasharray="4 4"/>
|
||||
<g id="VNet icon_2">
|
||||
<rect id="White Vnet BG_2" x="819" y="102" width="45" height="6" fill="white"/>
|
||||
<g id="Icon Master_4">
|
||||
<g id="Azure_VNet_2">
|
||||
<g id="Group_12">
|
||||
<g id="Group_13">
|
||||
<path id="Vector_56" d="M850.294 107.545C851.725 107.545 852.884 106.386 852.884 104.955C852.884 103.524 851.725 102.365 850.294 102.365C848.863 102.365 847.704 103.524 847.704 104.955C847.704 106.386 848.863 107.545 850.294 107.545Z" fill="url(#paint15_linear_16122_355283)"/>
|
||||
<path id="Vector_57" d="M842.125 107.545C843.555 107.545 844.715 106.386 844.715 104.955C844.715 103.524 843.555 102.365 842.125 102.365C840.694 102.365 839.534 103.524 839.534 104.955C839.534 106.386 840.694 107.545 842.125 107.545Z" fill="url(#paint16_linear_16122_355283)"/>
|
||||
<path id="Vector_58" d="M833.955 107.545C835.386 107.545 836.545 106.386 836.545 104.955C836.545 103.524 835.386 102.365 833.955 102.365C832.525 102.365 831.365 103.524 831.365 104.955C831.365 106.386 832.525 107.545 833.955 107.545Z" fill="url(#paint17_linear_16122_355283)"/>
|
||||
<path id="Vector_59" d="M835.748 115.316L834.154 116.91C833.955 116.91 833.557 116.91 833.357 116.711L822.398 105.752C822 105.354 822 104.556 822.398 103.959L823.993 102.564L835.748 114.32C835.948 114.519 835.948 114.918 835.748 115.316Z" fill="#50E6FF"/>
|
||||
<path id="Vector_60" d="M834.154 93.1992L835.748 94.7933C835.948 94.9925 835.948 95.391 835.748 95.5903L823.993 107.346L822.399 105.752C821.801 105.154 821.801 104.357 822.399 103.959L833.158 93.1992C833.357 93 833.756 93 834.154 93.1992Z" fill="#1490DF"/>
|
||||
<path id="Vector_61" d="M860.057 102.365L861.452 103.76C862.05 104.357 862.05 105.154 861.452 105.553L850.493 116.512C850.294 116.711 849.895 116.711 849.497 116.512L847.903 114.918C847.704 114.718 847.704 114.32 847.903 113.921L860.057 102.365Z" fill="#50E6FF"/>
|
||||
<path id="Vector_62" d="M861.651 105.752L860.057 107.346L848.501 95.7895C848.301 95.5903 848.301 95.1918 848.501 94.7933L849.895 93.1992C850.095 93 850.493 93 850.892 93.1992L861.651 103.959C862.05 104.357 862.05 105.154 861.651 105.752Z" fill="#1490DF"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<text id="VNet_2" fill="#706E6F" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="600" letter-spacing="0em"><tspan x="553" y="126.816">Primary Database VNet</tspan></text>
|
||||
</g>
|
||||
<g id="Oracle Database@Azure_2">
|
||||
<rect x="552.5" y="136.5" width="311" height="143" fill="white"/>
|
||||
<rect x="552.5" y="136.5" width="311" height="143" stroke="#706E6F" stroke-dasharray="8 4"/>
|
||||
<text id="Azure subnet" fill="#706E6F" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="600" letter-spacing="0em"><tspan x="560" y="157.816">Delegated subnet</tspan></text>
|
||||
</g>
|
||||
<g id="Private Endpoint IP">
|
||||
<g id="Private-Endpoint-IP-Address">
|
||||
<g id="Group 424">
|
||||
<path id="Vector_63" d="M597.52 210.541C595.402 207.477 594.586 203.697 595.252 200.031C595.918 196.365 598.011 193.115 601.071 190.994C604.13 188.874 607.906 188.057 611.567 188.724C615.228 189.391 618.474 191.486 620.592 194.55C622.209 196.909 623.074 199.703 623.074 202.564C623.074 205.425 622.209 208.219 620.592 210.578L609.061 227.186L597.52 210.541Z" fill="white"/>
|
||||
<path id="Vector_64" d="M609.042 188.936C611.524 188.927 613.961 189.599 616.088 190.879C618.215 192.16 619.951 194 621.107 196.199C622.263 198.398 622.795 200.872 622.645 203.353C622.494 205.834 621.668 208.226 620.255 210.269L609.06 226.363L597.902 210.269C596.493 208.231 595.668 205.846 595.514 203.372C595.361 200.898 595.887 198.429 597.034 196.232C598.181 194.035 599.906 192.195 602.022 190.908C604.139 189.622 606.566 188.94 609.042 188.936V188.936ZM609.042 188C606.395 188.005 603.801 188.734 601.539 190.109C599.277 191.483 597.433 193.451 596.207 195.799C594.981 198.147 594.42 200.786 594.583 203.43C594.747 206.075 595.63 208.624 597.136 210.802L608.294 226.896L609.06 228L609.827 226.896L620.975 210.802C622.483 208.622 623.366 206.07 623.528 203.423C623.691 200.776 623.127 198.135 621.898 195.787C620.668 193.438 618.82 191.47 616.554 190.098C614.288 188.725 611.69 188 609.042 188V188Z" fill="white"/>
|
||||
<path id="Vector_65" d="M620.21 194.784C618.159 191.822 615.017 189.797 611.475 189.155C607.933 188.513 604.282 189.306 601.324 191.359C598.366 193.413 596.344 196.559 595.702 200.105C595.061 203.651 595.853 207.307 597.903 210.269L609.061 226.363L620.21 210.269C621.774 207.991 622.611 205.291 622.611 202.526C622.611 199.762 621.774 197.062 620.21 194.784V194.784ZM618.855 209.343L609.061 223.49L599.23 209.333C597.991 207.541 597.265 205.442 597.132 203.266C596.998 201.09 597.462 198.918 598.472 196.987C599.483 195.056 601.002 193.438 602.866 192.31C604.729 191.181 606.865 190.584 609.043 190.584C611.22 190.584 613.356 191.181 615.219 192.31C617.083 193.438 618.602 195.056 619.613 196.987C620.623 198.918 621.087 201.09 620.953 203.266C620.82 205.442 620.094 207.541 618.855 209.333V209.343Z" fill="#2D5967"/>
|
||||
<path id="Vector_66" d="M613.172 198.835V196.814C613.166 196.174 613.013 195.544 612.724 194.972C612.436 194.401 612.02 193.904 611.508 193.52C611.002 193.134 610.411 192.872 609.784 192.756C609.157 192.641 608.512 192.675 607.901 192.856C607.038 193.118 606.283 193.652 605.747 194.379C605.212 195.105 604.925 195.986 604.93 196.889V198.835C604.107 199.652 603.546 200.696 603.316 201.833C603.087 202.971 603.2 204.151 603.642 205.223C604.083 206.296 604.833 207.214 605.796 207.859C606.759 208.505 607.892 208.849 609.051 208.849C610.21 208.849 611.342 208.505 612.305 207.859C613.268 207.214 614.018 206.296 614.459 205.223C614.901 204.151 615.014 202.971 614.785 201.833C614.556 200.696 613.994 199.652 613.172 198.835V198.835ZM606.565 196.889C606.557 196.34 606.726 195.804 607.048 195.361C607.37 194.917 607.827 194.59 608.35 194.428C608.719 194.32 609.108 194.3 609.486 194.37C609.864 194.439 610.221 194.597 610.527 194.83C610.836 195.062 611.087 195.361 611.262 195.705C611.437 196.048 611.531 196.428 611.536 196.814V197.684C610.758 197.32 609.91 197.132 609.051 197.132C608.192 197.132 607.343 197.32 606.565 197.684V196.889ZM609.051 207.181C608.213 207.187 607.393 206.943 606.694 206.481C605.996 206.018 605.45 205.359 605.127 204.585C604.803 203.812 604.717 202.96 604.878 202.137C605.039 201.314 605.441 200.558 606.033 199.965C606.624 199.371 607.378 198.967 608.2 198.804C609.021 198.64 609.872 198.725 610.645 199.047C611.419 199.369 612.079 199.914 612.542 200.613C613.005 201.311 613.25 202.132 613.247 202.97C613.253 203.526 613.149 204.077 612.94 204.591C612.732 205.106 612.424 205.574 612.034 205.968C611.643 206.363 611.179 206.675 610.667 206.888C610.154 207.101 609.605 207.21 609.051 207.209V207.181Z" fill="#2D5967"/>
|
||||
<path id="Vector_67" d="M609.051 201.174H608.902C608.633 201.207 608.383 201.328 608.189 201.517C607.995 201.706 607.868 201.954 607.827 202.222C607.788 202.475 607.83 202.733 607.945 202.962C608.061 203.19 608.245 203.376 608.472 203.494L608.229 205.085H609.874L609.649 203.494C609.843 203.385 610.004 203.226 610.115 203.033C610.227 202.841 610.285 202.622 610.285 202.4C610.282 202.074 610.151 201.762 609.92 201.532C609.689 201.303 609.377 201.174 609.051 201.174V201.174Z" fill="#2D5967"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Icon Text Label_6">
|
||||
<text id="IconLabel_9" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="583.969" y="245.816">Private</tspan></text>
|
||||
<text id="IconLabel_10" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="576.016" y="261.816">Endpoint</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Autonomous DB">
|
||||
<g id="Autonomous-Database">
|
||||
<g id="Group 7">
|
||||
<path id="Vector_68" d="M765.391 227.449C761.548 227.449 757.829 227.078 755.102 226.458C751.507 225.59 749.647 224.226 749.647 222.367V204.392H738.118L738.242 202.532C738.614 197.945 741.218 193.978 745.309 191.871C746.176 191.375 746.796 190.631 747.044 189.64C747.664 186.416 749.895 183.689 752.871 182.449C754.11 181.954 755.474 181.582 756.961 181.582C757.209 181.582 757.581 181.582 757.953 181.582C758.077 181.582 758.201 181.582 758.325 181.582C759.193 181.582 760.061 181.21 760.556 180.59C762.664 178.235 765.515 176.871 768.614 176.623H769.854C774.441 176.747 778.532 179.35 780.515 183.441C780.639 183.689 780.887 184.061 781.135 184.309C781.383 184.681 781.879 185.301 782.127 185.797C785.846 185.921 789.193 187.904 791.176 191.003V191.127L791.548 192.987L796.631 198.069L794.152 200.549L792.54 198.937C791.548 204.144 786.961 207.987 781.507 207.987C781.383 207.987 781.135 207.987 781.011 207.987V222.243C781.011 224.102 779.275 225.466 775.556 226.334C772.953 227.078 769.234 227.449 765.391 227.449Z" fill="white"/>
|
||||
<path id="Vector_69" d="M769.36 177.244C773.822 177.244 777.789 179.723 779.773 183.69C780.021 184.062 780.145 184.434 780.517 184.682C780.764 185.054 781.26 185.798 781.632 186.294C785.351 186.294 788.698 188.277 790.558 191.252L791.054 193.236L795.888 198.071L794.277 199.682L792.169 197.575C791.798 203.029 787.211 207.368 781.632 207.368C781.26 207.368 780.888 207.368 780.517 207.244V222.244C780.517 223.732 778.905 224.971 775.558 225.715C772.831 226.335 769.236 226.707 765.393 226.707C761.55 226.707 757.955 226.335 755.227 225.715C751.88 224.971 750.269 223.732 750.269 222.244V203.649H738.864L738.988 202.409C739.36 198.071 741.839 194.228 745.682 192.244C746.674 191.872 747.417 190.88 747.665 189.765C748.285 186.79 750.269 184.186 753.12 182.947C754.36 182.451 755.599 182.203 756.963 182.203C757.211 182.203 757.583 182.203 757.831 182.203C757.955 182.203 758.079 182.203 758.202 182.203C759.194 182.203 760.186 181.831 760.93 181.087C763.037 178.732 766.012 177.492 769.112 177.368V178.484V177.368C769.112 177.244 769.236 177.244 769.36 177.244ZM770.227 176.004H768.988H767.748V176.128C764.773 176.5 761.921 177.864 759.814 180.095C759.442 180.715 758.822 180.963 758.079 180.963C757.955 180.963 757.955 180.963 757.831 180.963C757.459 180.963 757.211 180.963 756.839 180.963C755.351 180.963 753.864 181.335 752.5 181.831C749.277 183.194 747.045 186.046 746.302 189.517C746.178 190.261 745.682 191.004 744.938 191.376C740.723 193.608 737.996 197.823 737.624 202.533L737.5 203.773V205.013H738.864H749.029V222.368C749.029 225.591 753.492 226.707 754.979 227.079C757.831 227.699 761.55 228.071 765.393 228.071C769.36 228.071 772.955 227.699 775.806 227.079C777.293 226.707 781.756 225.715 781.756 222.368V208.732C786.963 208.732 791.55 205.137 792.913 200.178L793.285 200.55L794.153 201.418L795.021 200.55L796.632 198.938L797.5 198.071L796.632 197.203L792.045 192.616L791.674 191.004V190.756L791.55 190.632C789.566 187.409 786.095 185.302 782.252 185.054C782.004 184.682 781.632 184.186 781.508 183.938V183.814L781.384 183.69C781.26 183.69 781.012 183.442 780.888 183.194C778.905 178.98 774.814 176.376 770.227 176.004Z" fill="white"/>
|
||||
<path id="Vector_70" d="M741.343 201.541H748.533V203.773H738.863L738.987 202.533C739.359 198.194 741.839 194.351 745.682 192.368C746.673 191.872 747.417 190.88 747.665 189.764C748.285 186.789 750.268 184.186 753.12 182.946C754.483 182.202 756.095 181.954 757.706 182.202C758.946 182.326 760.062 181.954 760.806 181.087C762.913 178.731 765.888 177.492 768.987 177.368C769.111 177.368 769.235 177.368 769.235 177.368C773.698 177.368 777.665 179.847 779.649 183.814C779.897 184.186 780.02 184.558 780.392 184.806C779.525 184.93 778.657 185.054 777.913 185.302C777.789 185.178 777.789 185.054 777.665 184.806C776.054 181.583 772.83 179.599 769.235 179.599C769.111 179.599 769.111 179.599 768.987 179.599C766.508 179.599 764.029 180.715 762.293 182.574C761.054 183.938 759.194 184.682 757.335 184.434C756.095 184.31 754.979 184.558 753.739 185.054C751.632 186.045 750.02 187.905 749.649 190.26C749.277 192.12 748.161 193.607 746.425 194.475C743.822 195.839 741.963 198.442 741.343 201.541ZM780.516 190.88H782.748L785.847 201.913H783.368L782.996 199.558H780.268L779.649 201.913H777.293L780.516 190.88ZM780.64 197.698H782.5L781.508 193.607L780.64 197.698ZM771.095 196.211L768.987 194.103L767.376 195.715L772.211 200.549L777.045 195.715L775.434 194.103L773.45 196.087C773.822 191.872 777.417 188.649 781.632 188.649C784.731 188.649 787.458 190.384 788.946 192.988L790.558 191.376C788.698 188.401 785.351 186.417 781.632 186.417C776.054 186.417 771.467 190.756 771.095 196.211ZM795.888 198.07L791.054 193.359L786.219 198.194L787.83 199.806L789.814 197.822C789.442 202.037 785.847 205.26 781.632 205.26C778.533 205.26 775.806 203.525 774.318 200.921L772.706 202.533C774.566 205.508 777.913 207.492 781.632 207.492C787.211 207.492 791.797 203.153 792.169 197.698L794.277 199.806L795.888 198.07ZM778.161 208.979C778.905 209.227 779.649 209.351 780.392 209.475V222.492C780.392 223.979 778.781 225.219 775.434 225.963C772.706 226.583 769.111 226.954 765.268 226.954C761.425 226.954 757.83 226.583 755.103 225.963C751.756 225.219 750.144 223.979 750.144 222.492V198.07C750.144 196.583 751.756 195.467 755.103 194.723C757.706 194.103 761.301 193.855 765.268 193.855C765.392 193.855 765.64 193.855 765.888 193.855V196.087C765.764 196.087 765.516 196.087 765.268 196.087C757.087 196.087 752.996 197.45 752.5 198.194V198.318C752.996 199.186 757.706 200.549 765.268 200.549C766.88 200.549 768.244 200.549 769.607 200.426C769.855 201.169 770.103 201.913 770.475 202.657C768.863 202.781 767.128 202.905 765.268 202.905C761.425 202.905 757.83 202.533 755.103 201.913C753.987 201.665 753.12 201.417 752.376 201.045V206.376C752.872 207.244 757.582 208.607 765.144 208.607C769.359 208.607 772.706 208.111 774.938 207.616C776.054 208.111 777.045 208.607 778.161 208.979C777.417 209.351 776.549 209.599 775.434 209.847C772.706 210.467 769.111 210.839 765.268 210.839C761.425 210.839 757.83 210.467 755.103 209.847C753.987 209.599 753.12 209.351 752.376 208.979V214.31C752.872 215.178 757.582 216.541 765.144 216.541C772.706 216.541 777.417 215.054 777.913 214.31L778.161 208.979ZM778.161 217.037C777.417 217.409 776.549 217.657 775.434 217.905C772.706 218.525 769.111 218.897 765.268 218.897C761.425 218.897 757.83 218.525 755.103 217.905C753.987 217.657 753.12 217.409 752.376 217.037V222.368C752.872 223.111 757.087 224.599 765.144 224.599C773.202 224.599 777.541 222.988 777.913 222.368L778.161 217.037Z" fill="#2D5967"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Icon Text Label_7">
|
||||
<text id="IconLabel_11" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="695.43" y="245.816">Oracle Autonomous</tspan></text>
|
||||
<text id="IconLabel_12" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="703.258" y="261.816">Database Primary</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<path id="Vector 1707" d="M544.707 196.707C545.098 196.317 545.098 195.683 544.707 195.293L538.343 188.929C537.953 188.538 537.319 188.538 536.929 188.929C536.538 189.319 536.538 189.953 536.929 190.343L542.586 196L536.929 201.657C536.538 202.047 536.538 202.681 536.929 203.071C537.319 203.462 537.953 203.462 538.343 203.071L544.707 196.707ZM391.293 195.293C390.902 195.683 390.902 196.317 391.293 196.707L397.657 203.071C398.047 203.462 398.681 203.462 399.071 203.071C399.462 202.681 399.462 202.047 399.071 201.657L393.414 196L399.071 190.343C399.462 189.953 399.462 189.319 399.071 188.929C398.681 188.538 398.047 188.538 397.657 188.929L391.293 195.293ZM544 195L392 195L392 197L544 197L544 195Z" fill="#312D2A"/>
|
||||
<path id="Vector 1711" d="M1051.71 196.707C1052.1 196.317 1052.1 195.683 1051.71 195.293L1045.34 188.929C1044.95 188.538 1044.32 188.538 1043.93 188.929C1043.54 189.319 1043.54 189.953 1043.93 190.343L1049.59 196L1043.93 201.657C1043.54 202.047 1043.54 202.681 1043.93 203.071C1044.32 203.462 1044.95 203.462 1045.34 203.071L1051.71 196.707ZM1051 195L798 195L798 197L1051 197L1051 195Z" fill="#312D2A"/>
|
||||
<g id="Connector Line Label">
|
||||
<rect width="97" height="14" transform="translate(420 189)" fill="#DAE8FC"/>
|
||||
<text id="Line Label" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="14" letter-spacing="0em"><tspan x="424.374" y="201.089">VNET Peering</tspan></text>
|
||||
</g>
|
||||
<path id="Vector 1714" d="M544.707 460.707C545.098 460.317 545.098 459.683 544.707 459.293L538.343 452.929C537.953 452.538 537.319 452.538 536.929 452.929C536.538 453.319 536.538 453.953 536.929 454.343L542.586 460L536.929 465.657C536.538 466.047 536.538 466.681 536.929 467.071C537.319 467.462 537.953 467.462 538.343 467.071L544.707 460.707ZM391.293 459.293C390.902 459.683 390.902 460.317 391.293 460.707L397.657 467.071C398.047 467.462 398.681 467.462 399.071 467.071C399.462 466.681 399.462 466.047 399.071 465.657L393.414 460L399.071 454.343C399.462 453.953 399.462 453.319 399.071 452.929C398.681 452.538 398.047 452.538 397.657 452.929L391.293 459.293ZM544 459L392 459L392 461L544 461L544 459Z" fill="#312D2A"/>
|
||||
<g id="Connector Line Label_2">
|
||||
<rect width="97" height="14" transform="translate(420 453)" fill="#DAE8FC"/>
|
||||
<text id="Line Label_2" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="14" letter-spacing="0em"><tspan x="424.374" y="465.089">VNET Peering</tspan></text>
|
||||
</g>
|
||||
<g id="Oracle Database@Azure_3">
|
||||
<rect x="545" y="369" width="326" height="182" fill="white"/>
|
||||
<rect x="545" y="369" width="326" height="182" stroke="#706E6F" stroke-width="2" stroke-dasharray="4 4"/>
|
||||
<g id="VNet icon_3">
|
||||
<rect id="White Vnet BG_3" x="819" y="366" width="45" height="6" fill="white"/>
|
||||
<g id="Icon Master_5">
|
||||
<g id="Azure_VNet_3">
|
||||
<g id="Group_14">
|
||||
<g id="Group_15">
|
||||
<path id="Vector_71" d="M850.294 371.545C851.725 371.545 852.884 370.386 852.884 368.955C852.884 367.524 851.725 366.365 850.294 366.365C848.863 366.365 847.704 367.524 847.704 368.955C847.704 370.386 848.863 371.545 850.294 371.545Z" fill="url(#paint18_linear_16122_355283)"/>
|
||||
<path id="Vector_72" d="M842.125 371.545C843.555 371.545 844.715 370.386 844.715 368.955C844.715 367.524 843.555 366.365 842.125 366.365C840.694 366.365 839.534 367.524 839.534 368.955C839.534 370.386 840.694 371.545 842.125 371.545Z" fill="url(#paint19_linear_16122_355283)"/>
|
||||
<path id="Vector_73" d="M833.955 371.545C835.386 371.545 836.545 370.386 836.545 368.955C836.545 367.524 835.386 366.365 833.955 366.365C832.525 366.365 831.365 367.524 831.365 368.955C831.365 370.386 832.525 371.545 833.955 371.545Z" fill="url(#paint20_linear_16122_355283)"/>
|
||||
<path id="Vector_74" d="M835.748 379.316L834.154 380.91C833.955 380.91 833.557 380.91 833.357 380.711L822.398 369.752C822 369.354 822 368.556 822.398 367.959L823.993 366.564L835.748 378.32C835.948 378.519 835.948 378.918 835.748 379.316Z" fill="#50E6FF"/>
|
||||
<path id="Vector_75" d="M834.154 357.199L835.748 358.793C835.948 358.993 835.948 359.391 835.748 359.59L823.993 371.346L822.399 369.752C821.801 369.154 821.801 368.357 822.399 367.959L833.158 357.199C833.357 357 833.756 357 834.154 357.199Z" fill="#1490DF"/>
|
||||
<path id="Vector_76" d="M860.057 366.365L861.452 367.76C862.05 368.357 862.05 369.154 861.452 369.553L850.493 380.512C850.294 380.711 849.895 380.711 849.497 380.512L847.903 378.918C847.704 378.718 847.704 378.32 847.903 377.921L860.057 366.365Z" fill="#50E6FF"/>
|
||||
<path id="Vector_77" d="M861.651 369.752L860.057 371.346L848.501 359.79C848.301 359.59 848.301 359.192 848.501 358.793L849.895 357.199C850.095 357 850.493 357 850.892 357.199L861.651 367.959C862.05 368.357 862.05 369.154 861.651 369.752Z" fill="#1490DF"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<text id="VNet_3" fill="#706E6F" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="600" letter-spacing="0em"><tspan x="553" y="390.816">Primary Database VNet</tspan></text>
|
||||
</g>
|
||||
<g id="Group 1496">
|
||||
<g id="Oracle Database@Azure_4">
|
||||
<rect x="552.5" y="400.5" width="311" height="143" fill="white"/>
|
||||
<rect x="552.5" y="400.5" width="311" height="143" stroke="#706E6F" stroke-dasharray="8 4"/>
|
||||
<text id="Azure subnet_2" fill="#706E6F" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="600" letter-spacing="0em"><tspan x="560" y="421.816">Delegated subnet</tspan></text>
|
||||
</g>
|
||||
<g id="Private Endpoint IP_2">
|
||||
<g id="Private-Endpoint-IP-Address_2">
|
||||
<g id="Group 424_2">
|
||||
<path id="Vector_78" d="M597.52 474.541C595.402 471.477 594.586 467.697 595.252 464.031C595.918 460.365 598.011 457.115 601.071 454.994C604.13 452.874 607.906 452.057 611.567 452.724C615.228 453.391 618.474 455.486 620.592 458.55C622.209 460.909 623.074 463.703 623.074 466.564C623.074 469.425 622.209 472.219 620.592 474.578L609.061 491.186L597.52 474.541Z" fill="white"/>
|
||||
<path id="Vector_79" d="M609.042 452.936C611.524 452.927 613.961 453.599 616.088 454.879C618.215 456.16 619.951 458 621.107 460.199C622.263 462.398 622.795 464.872 622.645 467.353C622.494 469.834 621.668 472.226 620.255 474.269L609.06 490.363L597.902 474.269C596.493 472.231 595.668 469.846 595.514 467.372C595.361 464.898 595.887 462.429 597.034 460.232C598.181 458.035 599.906 456.195 602.022 454.908C604.139 453.622 606.566 452.94 609.042 452.936V452.936ZM609.042 452C606.395 452.005 603.801 452.734 601.539 454.109C599.277 455.483 597.433 457.451 596.207 459.799C594.981 462.147 594.42 464.786 594.583 467.43C594.747 470.075 595.63 472.624 597.136 474.802L608.294 490.896L609.06 492L609.827 490.896L620.975 474.802C622.483 472.622 623.366 470.07 623.528 467.423C623.691 464.776 623.127 462.135 621.898 459.787C620.668 457.438 618.82 455.47 616.554 454.098C614.288 452.725 611.69 452 609.042 452V452Z" fill="white"/>
|
||||
<path id="Vector_80" d="M620.21 458.784C618.159 455.822 615.017 453.797 611.475 453.155C607.933 452.513 604.282 453.306 601.324 455.359C598.366 457.413 596.344 460.559 595.702 464.105C595.061 467.651 595.853 471.307 597.903 474.269L609.061 490.363L620.21 474.269C621.774 471.991 622.611 469.291 622.611 466.526C622.611 463.762 621.774 461.062 620.21 458.784V458.784ZM618.855 473.343L609.061 487.49L599.23 473.333C597.991 471.541 597.265 469.442 597.132 467.266C596.998 465.09 597.462 462.918 598.472 460.987C599.483 459.056 601.002 457.438 602.866 456.31C604.729 455.181 606.865 454.584 609.043 454.584C611.22 454.584 613.356 455.181 615.219 456.31C617.083 457.438 618.602 459.056 619.613 460.987C620.623 462.918 621.087 465.09 620.953 467.266C620.82 469.442 620.094 471.541 618.855 473.333V473.343Z" fill="#2D5967"/>
|
||||
<path id="Vector_81" d="M613.172 462.835V460.814C613.166 460.174 613.013 459.544 612.724 458.972C612.436 458.401 612.02 457.904 611.508 457.52C611.002 457.134 610.411 456.872 609.784 456.756C609.157 456.641 608.512 456.675 607.901 456.856C607.038 457.118 606.283 457.652 605.747 458.379C605.212 459.105 604.925 459.986 604.93 460.889V462.835C604.107 463.652 603.546 464.696 603.316 465.833C603.087 466.971 603.2 468.151 603.642 469.223C604.083 470.296 604.833 471.214 605.796 471.859C606.759 472.505 607.892 472.849 609.051 472.849C610.21 472.849 611.342 472.505 612.305 471.859C613.268 471.214 614.018 470.296 614.459 469.223C614.901 468.151 615.014 466.971 614.785 465.833C614.556 464.696 613.994 463.652 613.172 462.835V462.835ZM606.565 460.889C606.557 460.34 606.726 459.804 607.048 459.361C607.37 458.917 607.827 458.59 608.35 458.428C608.719 458.32 609.108 458.3 609.486 458.37C609.864 458.439 610.221 458.597 610.527 458.83C610.836 459.062 611.087 459.361 611.262 459.705C611.437 460.048 611.531 460.428 611.536 460.814V461.684C610.758 461.32 609.91 461.132 609.051 461.132C608.192 461.132 607.343 461.32 606.565 461.684V460.889ZM609.051 471.181C608.213 471.187 607.393 470.943 606.694 470.481C605.996 470.018 605.45 469.359 605.127 468.585C604.803 467.812 604.717 466.96 604.878 466.137C605.039 465.314 605.441 464.558 606.033 463.965C606.624 463.371 607.378 462.967 608.2 462.804C609.021 462.64 609.872 462.725 610.645 463.047C611.419 463.369 612.079 463.914 612.542 464.613C613.005 465.311 613.25 466.132 613.247 466.97C613.253 467.526 613.149 468.077 612.94 468.591C612.732 469.106 612.424 469.574 612.034 469.968C611.643 470.363 611.179 470.675 610.667 470.888C610.154 471.101 609.605 471.21 609.051 471.209V471.181Z" fill="#2D5967"/>
|
||||
<path id="Vector_82" d="M609.051 465.174H608.902C608.633 465.207 608.383 465.328 608.189 465.517C607.995 465.706 607.868 465.954 607.827 466.222C607.788 466.475 607.83 466.733 607.945 466.962C608.061 467.19 608.245 467.376 608.472 467.494L608.229 469.085H609.874L609.649 467.494C609.843 467.385 610.004 467.226 610.115 467.033C610.227 466.841 610.285 466.622 610.285 466.4C610.282 466.074 610.151 465.762 609.92 465.532C609.689 465.303 609.377 465.174 609.051 465.174V465.174Z" fill="#2D5967"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Icon Text Label_8">
|
||||
<text id="IconLabel_13" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="583.969" y="509.816">Private</tspan></text>
|
||||
<text id="IconLabel_14" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="576.016" y="525.816">Endpoint</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Autonomous DB_2">
|
||||
<g id="Autonomous-Database_2">
|
||||
<g id="Group 7_2">
|
||||
<path id="Vector_83" d="M765.391 491.449C761.548 491.449 757.829 491.078 755.102 490.458C751.507 489.59 749.647 488.226 749.647 486.367V468.392H738.118L738.242 466.532C738.614 461.945 741.218 457.978 745.309 455.871C746.176 455.375 746.796 454.631 747.044 453.64C747.664 450.416 749.895 447.689 752.871 446.449C754.11 445.954 755.474 445.582 756.961 445.582C757.209 445.582 757.581 445.582 757.953 445.582C758.077 445.582 758.201 445.582 758.325 445.582C759.193 445.582 760.061 445.21 760.556 444.59C762.664 442.235 765.515 440.871 768.614 440.623H769.854C774.441 440.747 778.532 443.35 780.515 447.441C780.639 447.689 780.887 448.061 781.135 448.309C781.383 448.681 781.879 449.301 782.127 449.797C785.846 449.921 789.193 451.904 791.176 455.003V455.127L791.548 456.987L796.631 462.069L794.152 464.549L792.54 462.937C791.548 468.144 786.961 471.987 781.507 471.987C781.383 471.987 781.135 471.987 781.011 471.987V486.243C781.011 488.102 779.275 489.466 775.556 490.334C772.953 491.078 769.234 491.449 765.391 491.449Z" fill="white"/>
|
||||
<path id="Vector_84" d="M769.36 441.244C773.822 441.244 777.789 443.723 779.773 447.69C780.021 448.062 780.145 448.434 780.517 448.682C780.764 449.054 781.26 449.798 781.632 450.294C785.351 450.294 788.698 452.277 790.558 455.252L791.054 457.236L795.888 462.071L794.277 463.682L792.169 461.575C791.798 467.029 787.211 471.368 781.632 471.368C781.26 471.368 780.888 471.368 780.517 471.244V486.244C780.517 487.732 778.905 488.971 775.558 489.715C772.831 490.335 769.236 490.707 765.393 490.707C761.55 490.707 757.955 490.335 755.227 489.715C751.88 488.971 750.269 487.732 750.269 486.244V467.649H738.864L738.988 466.409C739.36 462.071 741.839 458.228 745.682 456.244C746.674 455.872 747.417 454.88 747.665 453.765C748.285 450.79 750.269 448.186 753.12 446.947C754.36 446.451 755.599 446.203 756.963 446.203C757.211 446.203 757.583 446.203 757.831 446.203C757.955 446.203 758.079 446.203 758.202 446.203C759.194 446.203 760.186 445.831 760.93 445.087C763.037 442.732 766.012 441.492 769.112 441.368V442.484V441.368C769.112 441.244 769.236 441.244 769.36 441.244ZM770.227 440.004H768.988H767.748V440.128C764.773 440.5 761.921 441.864 759.814 444.095C759.442 444.715 758.822 444.963 758.079 444.963C757.955 444.963 757.955 444.963 757.831 444.963C757.459 444.963 757.211 444.963 756.839 444.963C755.351 444.963 753.864 445.335 752.5 445.831C749.277 447.194 747.045 450.046 746.302 453.517C746.178 454.261 745.682 455.004 744.938 455.376C740.723 457.608 737.996 461.823 737.624 466.533L737.5 467.773V469.013H738.864H749.029V486.368C749.029 489.591 753.492 490.707 754.979 491.079C757.831 491.699 761.55 492.071 765.393 492.071C769.36 492.071 772.955 491.699 775.806 491.079C777.293 490.707 781.756 489.715 781.756 486.368V472.732C786.963 472.732 791.55 469.137 792.913 464.178L793.285 464.55L794.153 465.418L795.021 464.55L796.632 462.938L797.5 462.071L796.632 461.203L792.045 456.616L791.674 455.004V454.756L791.55 454.632C789.566 451.409 786.095 449.302 782.252 449.054C782.004 448.682 781.632 448.186 781.508 447.938V447.814L781.384 447.69C781.26 447.69 781.012 447.442 780.888 447.194C778.905 442.98 774.814 440.376 770.227 440.004Z" fill="white"/>
|
||||
<path id="Vector_85" d="M741.343 465.541H748.533V467.773H738.863L738.987 466.533C739.359 462.194 741.839 458.351 745.682 456.368C746.673 455.872 747.417 454.88 747.665 453.764C748.285 450.789 750.268 448.186 753.12 446.946C754.483 446.202 756.095 445.954 757.706 446.202C758.946 446.326 760.062 445.954 760.806 445.087C762.913 442.731 765.888 441.492 768.987 441.368C769.111 441.368 769.235 441.368 769.235 441.368C773.698 441.368 777.665 443.847 779.649 447.814C779.897 448.186 780.02 448.558 780.392 448.806C779.525 448.93 778.657 449.054 777.913 449.302C777.789 449.178 777.789 449.054 777.665 448.806C776.054 445.583 772.83 443.599 769.235 443.599C769.111 443.599 769.111 443.599 768.987 443.599C766.508 443.599 764.029 444.715 762.293 446.574C761.054 447.938 759.194 448.682 757.335 448.434C756.095 448.31 754.979 448.558 753.739 449.054C751.632 450.045 750.02 451.905 749.649 454.26C749.277 456.12 748.161 457.607 746.425 458.475C743.822 459.839 741.963 462.442 741.343 465.541ZM780.516 454.88H782.748L785.847 465.913H783.368L782.996 463.558H780.268L779.649 465.913H777.293L780.516 454.88ZM780.64 461.698H782.5L781.508 457.607L780.64 461.698ZM771.095 460.211L768.987 458.103L767.376 459.715L772.211 464.549L777.045 459.715L775.434 458.103L773.45 460.087C773.822 455.872 777.417 452.649 781.632 452.649C784.731 452.649 787.458 454.384 788.946 456.988L790.558 455.376C788.698 452.401 785.351 450.417 781.632 450.417C776.054 450.417 771.467 454.756 771.095 460.211ZM795.888 462.07L791.054 457.359L786.219 462.194L787.83 463.806L789.814 461.822C789.442 466.037 785.847 469.26 781.632 469.26C778.533 469.26 775.806 467.525 774.318 464.921L772.706 466.533C774.566 469.508 777.913 471.492 781.632 471.492C787.211 471.492 791.797 467.153 792.169 461.698L794.277 463.806L795.888 462.07ZM778.161 472.979C778.905 473.227 779.649 473.351 780.392 473.475V486.492C780.392 487.979 778.781 489.219 775.434 489.963C772.706 490.583 769.111 490.954 765.268 490.954C761.425 490.954 757.83 490.583 755.103 489.963C751.756 489.219 750.144 487.979 750.144 486.492V462.07C750.144 460.583 751.756 459.467 755.103 458.723C757.706 458.103 761.301 457.855 765.268 457.855C765.392 457.855 765.64 457.855 765.888 457.855V460.087C765.764 460.087 765.516 460.087 765.268 460.087C757.087 460.087 752.996 461.45 752.5 462.194V462.318C752.996 463.186 757.706 464.549 765.268 464.549C766.88 464.549 768.244 464.549 769.607 464.426C769.855 465.169 770.103 465.913 770.475 466.657C768.863 466.781 767.128 466.905 765.268 466.905C761.425 466.905 757.83 466.533 755.103 465.913C753.987 465.665 753.12 465.417 752.376 465.045V470.376C752.872 471.244 757.582 472.607 765.144 472.607C769.359 472.607 772.706 472.111 774.938 471.616C776.054 472.111 777.045 472.607 778.161 472.979C777.417 473.351 776.549 473.599 775.434 473.847C772.706 474.467 769.111 474.839 765.268 474.839C761.425 474.839 757.83 474.467 755.103 473.847C753.987 473.599 753.12 473.351 752.376 472.979V478.31C752.872 479.178 757.582 480.541 765.144 480.541C772.706 480.541 777.417 479.054 777.913 478.31L778.161 472.979ZM778.161 481.037C777.417 481.409 776.549 481.657 775.434 481.905C772.706 482.525 769.111 482.897 765.268 482.897C761.425 482.897 757.83 482.525 755.103 481.905C753.987 481.657 753.12 481.409 752.376 481.037V486.368C752.872 487.111 757.087 488.599 765.144 488.599C773.202 488.599 777.541 486.988 777.913 486.368L778.161 481.037Z" fill="#2D5967"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Icon Text Label_9">
|
||||
<text id="IconLabel_15" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="695.43" y="509.816">Oracle Autonomous</tspan></text>
|
||||
<text id="IconLabel_16" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="702.008" y="525.816">Database Standby</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<path id="Vector 1713" d="M766.293 400.707C766.683 401.098 767.317 401.098 767.707 400.707L774.071 394.343C774.462 393.953 774.462 393.319 774.071 392.929C773.681 392.538 773.047 392.538 772.657 392.929L767 398.586L761.343 392.929C760.953 392.538 760.319 392.538 759.929 392.929C759.538 393.319 759.538 393.953 759.929 394.343L766.293 400.707ZM766 280L766 400L768 400L768 280L766 280Z" fill="#312D2A"/>
|
||||
<g id="Connector Line Label_3">
|
||||
<rect width="74" height="30" transform="translate(915 187)" fill="white"/>
|
||||
<text id="Line Label_3" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="14" letter-spacing="0em"><tspan x="919.297" y="199.089">Automatic </tspan><tspan x="928.977" y="215.089">backup</tspan></text>
|
||||
</g>
|
||||
<g id="Connector Line Label_4">
|
||||
<rect width="166" height="14" transform="translate(684 305)" fill="white"/>
|
||||
<text id="Line Label_4" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="14" letter-spacing="0em"><tspan x="688.325" y="317.089">Autonomous Data Guard</tspan></text>
|
||||
</g>
|
||||
<path id="Vector 1715" d="M268 223V222H267V223H268ZM544.707 223.707C545.098 223.317 545.098 222.683 544.707 222.293L538.343 215.929C537.953 215.538 537.319 215.538 536.929 215.929C536.538 216.319 536.538 216.953 536.929 217.343L542.586 223L536.929 228.657C536.538 229.047 536.538 229.681 536.929 230.071C537.319 230.462 537.953 230.462 538.343 230.071L544.707 223.707ZM269 276V223H267V276H269ZM268 224H544V222H268V224Z" fill="#312D2A"/>
|
||||
<path id="Vector 1716" d="M280 432V433H279V432H280ZM544.707 431.293C545.098 431.683 545.098 432.317 544.707 432.707L538.343 439.071C537.953 439.462 537.319 439.462 536.929 439.071C536.538 438.681 536.538 438.047 536.929 437.657L542.586 432L536.929 426.343C536.538 425.953 536.538 425.319 536.929 424.929C537.319 424.538 537.953 424.538 538.343 424.929L544.707 431.293ZM281 369V370.969H279V369H281ZM281 374.906V378.844H279V374.906H281ZM281 382.781V386.719H279V382.781H281ZM281 390.656V394.594H279V390.656H281ZM281 398.531V402.469H279V398.531H281ZM281 406.406V410.344H279V406.406H281ZM281 414.281V418.219H279V414.281H281ZM281 422.156V426.094H279V422.156H281ZM281 430.031V432H279V430.031H281ZM280 431H282V433H280V431ZM286 431H290V433H286V431ZM294 431H298V433H294V431ZM302 431H306V433H302V431ZM310 431H314V433H310V431ZM318 431H322V433H318V431ZM326 431H330V433H326V431ZM334 431H338V433H334V431ZM342 431H346V433H342V431ZM350 431H354V433H350V431ZM358 431H362V433H358V431ZM366 431H370V433H366V431ZM374 431H378V433H374V431ZM382 431H386V433H382V431ZM390 431H394V433H390V431ZM398 431H402V433H398V431ZM406 431H410V433H406V431ZM414 431H418V433H414V431ZM422 431H426V433H422V431ZM430 431H434V433H430V431ZM438 431H442V433H438V431ZM446 431H450V433H446V431ZM454 431H458V433H454V431ZM462 431H466V433H462V431ZM470 431H474V433H470V431ZM478 431H482V433H478V431ZM486 431H490V433H486V431ZM494 431H498V433H494V431ZM502 431H506V433H502V431ZM510 431H514V433H510V431ZM518 431H522V433H518V431ZM526 431H530V433H526V431ZM534 431H538V433H534V431ZM542 431H544V433H542V431Z" fill="#312D2A"/>
|
||||
<path id="Vector 1717" d="M100.293 311.293C99.9024 311.683 99.9024 312.317 100.293 312.707L106.657 319.071C107.047 319.462 107.681 319.462 108.071 319.071C108.462 318.681 108.462 318.047 108.071 317.657L102.414 312L108.071 306.343C108.462 305.953 108.462 305.319 108.071 304.929C107.681 304.538 107.047 304.538 106.657 304.929L100.293 311.293ZM234 311L101 311L101 313L234 313L234 311Z" fill="#312D2A"/>
|
||||
<path id="Vector 1718" d="M234.707 482.707C235.098 482.317 235.098 481.683 234.707 481.293L228.343 474.929C227.953 474.538 227.319 474.538 226.929 474.929C226.538 475.319 226.538 475.953 226.929 476.343L232.586 482L226.929 487.657C226.538 488.047 226.538 488.681 226.929 489.071C227.319 489.462 227.953 489.462 228.343 489.071L234.707 482.707ZM234 481L101 481L101 483L234 483L234 481Z" fill="#312D2A"/>
|
||||
<path id="Vector 1719" d="M256.707 369.293C256.317 368.902 255.683 368.902 255.293 369.293L248.929 375.657C248.538 376.047 248.538 376.681 248.929 377.071C249.319 377.462 249.953 377.462 250.343 377.071L256 371.414L261.657 377.071C262.047 377.462 262.681 377.462 263.071 377.071C263.462 376.681 263.462 376.047 263.071 375.657L256.707 369.293ZM255 370L255 460L257 460L257 370L255 370Z" fill="#312D2A"/>
|
||||
</g>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_16122_355283" x1="368.488" y1="104.129" x2="372.128" y2="107.759" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#86D633"/>
|
||||
<stop offset="1" stop-color="#5E9624"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear_16122_355283" x1="358.479" y1="102.342" x2="362.093" y2="105.978" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#86D633"/>
|
||||
<stop offset="1" stop-color="#5E9624"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint2_linear_16122_355283" x1="350.282" y1="102.335" x2="353.896" y2="105.971" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#86D633"/>
|
||||
<stop offset="1" stop-color="#5E9624"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint3_linear_16122_355283" x1="65.3057" y1="265.356" x2="65.3057" y2="327.824" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#5EA0EF"/>
|
||||
<stop offset="1" stop-color="#0078D4"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint4_linear_16122_355283" x1="79.7242" y1="310.147" x2="79.7242" y2="318.219" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#333132"/>
|
||||
<stop offset="1" stop-color="#5B5A5C"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint5_linear_16122_355283" x1="67.9337" y1="496.585" x2="67.9337" y2="456.537" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#0078D4"/>
|
||||
<stop offset="0.82" stop-color="#5EA0EF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint6_linear_16122_355283" x1="67.9337" y1="512.037" x2="67.9337" y2="496.585" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0.15" stop-color="#CCCCCC"/>
|
||||
<stop offset="1" stop-color="#707070"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint7_linear_16122_355283" x1="268.5" y1="518.166" x2="268.5" y2="448.6" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#5E9624"/>
|
||||
<stop offset="0.02" stop-color="#5F9724"/>
|
||||
<stop offset="1" stop-color="#76BC2D"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint8_linear_16122_355283" x1="248.256" y1="287.096" x2="267.272" y2="287.096" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#B77AF4"/>
|
||||
<stop offset="1" stop-color="#773ADC"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint9_linear_16122_355283" x1="268.799" y1="287.262" x2="287.781" y2="287.262" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#B77AF4"/>
|
||||
<stop offset="1" stop-color="#773ADC"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint10_linear_16122_355283" x1="238.533" y1="304.95" x2="257.515" y2="304.95" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#B77AF4"/>
|
||||
<stop offset="1" stop-color="#773ADC"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint11_linear_16122_355283" x1="259.009" y1="304.817" x2="277.991" y2="304.817" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#B77AF4"/>
|
||||
<stop offset="1" stop-color="#773ADC"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint12_linear_16122_355283" x1="279.485" y1="304.983" x2="298.5" y2="304.983" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#B77AF4"/>
|
||||
<stop offset="1" stop-color="#773ADC"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint13_linear_16122_355283" x1="248.024" y1="323.003" x2="267.04" y2="323.003" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#B77AF4"/>
|
||||
<stop offset="1" stop-color="#773ADC"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint14_linear_16122_355283" x1="268.533" y1="323.136" x2="287.548" y2="323.136" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#B77AF4"/>
|
||||
<stop offset="1" stop-color="#773ADC"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint15_linear_16122_355283" x1="848.488" y1="103.129" x2="852.128" y2="106.759" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#86D633"/>
|
||||
<stop offset="1" stop-color="#5E9624"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint16_linear_16122_355283" x1="838.479" y1="101.342" x2="842.093" y2="104.978" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#86D633"/>
|
||||
<stop offset="1" stop-color="#5E9624"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint17_linear_16122_355283" x1="830.282" y1="101.335" x2="833.896" y2="104.971" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#86D633"/>
|
||||
<stop offset="1" stop-color="#5E9624"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint18_linear_16122_355283" x1="848.488" y1="367.129" x2="852.128" y2="370.759" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#86D633"/>
|
||||
<stop offset="1" stop-color="#5E9624"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint19_linear_16122_355283" x1="838.479" y1="365.342" x2="842.093" y2="368.978" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#86D633"/>
|
||||
<stop offset="1" stop-color="#5E9624"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint20_linear_16122_355283" x1="830.282" y1="365.335" x2="833.896" y2="368.971" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#86D633"/>
|
||||
<stop offset="1" stop-color="#5E9624"/>
|
||||
</linearGradient>
|
||||
<clipPath id="clip0_16122_355283">
|
||||
<rect width="1168" height="576" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 62 KiB |
@@ -0,0 +1,197 @@
|
||||
# Build Azure CI/CD Pipelines using Oracle Exadata Database Service in Oracle Database@Azure
|
||||
|
||||
- Source: https://docs.oracle.com/en/solutions/azure-pipeline-exacs-dbazure/index.html
|
||||
- Date: 2025-04
|
||||
- Type: reference-architecture
|
||||
- Services: exacs, azure
|
||||
- Tags: database, multicloud, azure, devops
|
||||
|
||||
## Summary (catalog)
|
||||
|
||||
Azure DevOps pipeline integration with ExaCS on Database@Azure. Automated schema deployment, testing, and migration using Azure Pipelines with Oracle database tooling.
|
||||
|
||||
## Architecture (fetched from source)
|
||||
|
||||
Architecture
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
This architecture shows how you can build and deploy Microsoft Azure
|
||||
Pipelines using Azure DevOps with Oracle Exadata Database Service on Dedicated
|
||||
Infrastructure .
|
||||
|
||||
|
||||
|
||||
|
||||
The application and database source code are hosted on a Microsoft Azure
|
||||
DevOps code repository, GitHub, or similar. A user commits changes into the code
|
||||
repository which triggers the continuous integration (CI) pipeline. This phase includes
|
||||
running unit tests, integration tests, static code analysis, and also testing of
|
||||
containers within the Azure Kubernetes Service (AKS) cluster to verify deployment
|
||||
readiness.
|
||||
|
||||
|
||||
Once testing is complete, the build pipeline creates Docker images and pushes
|
||||
them to the Azure container registry. These artifacts then initiate the continuous
|
||||
delivery (CD) pipeline. In the CD phase, the artifacts are deployed to AKS where
|
||||
end-to-end and system tests are run to ensure microservices operate correctly within the
|
||||
Kubernetes environment and the Oracle Database. Staging and production environments,
|
||||
using strategies like blue/green or canary deployments, are then initiated for zero
|
||||
downtime deployment of the new changes.
|
||||
|
||||
|
||||
A Kubernetes cluster can contain multiple pods, each connecting to its own
|
||||
respective pluggable database (PDB). The PDBs in the primary database are deployed on
|
||||
Oracle Database@Azure that runs on Oracle Exadata Database Service on Dedicated
|
||||
Infrastructure in an Azure Availability Zone. The container images are stored in the Azure container
|
||||
registry. Users access the application externally through a public load balancer.
|
||||
|
||||
|
||||
|
||||
Cloud automation simplifies most lifecycle and management tasks for Oracle Exadata Cloud Infrastructure and Oracle multitenant databases ( CDB s, PDB s). For example, adding servers and scaling OCPUs up and down, creating databases and
|
||||
database homes, scheduling infrastructure maintenance, updating and upgrading the VM
|
||||
operating system, Oracle Grid Infrastructure , and databases, performing backup and recovery operations, and even enabling disaster
|
||||
recovery protections through Oracle Data Guard .
|
||||
|
||||
|
||||
|
||||
Metrics, logs, and tracing of the entire CI/CD process are observed continuously using
|
||||
tools like Azure Monitor, Oracle Cloud
|
||||
Infrastructure (OCI) and Oracle Database's Unified Observability OpenTelemetry framework which
|
||||
provides traces from the entry point of the application residing on Azure, across all
|
||||
subsystems, and into the Oracle Database ensuring the performance and reliability of
|
||||
both the microservices and the database. This approach ensures a robust, efficient, and
|
||||
scalable solution for deploying and managing modern applications in a cloud-native
|
||||
environment.
|
||||
|
||||
|
||||
|
||||
The following diagram illustrates this reference architecture.
|
||||
|
||||
Description of the illustration exadata-database-service.png
|
||||
exadata-database-service-oracle.zip
|
||||
|
||||
|
||||
The architecture has the following components:
|
||||
|
||||
|
||||
|
||||
- Region
|
||||
An Oracle Cloud
|
||||
Infrastructure region is a localized geographic area that contains one or more data centers, hosting availability domains. Regions are independent of other regions, and vast distances can separate them (across countries or even continents).
|
||||
|
||||
|
||||
|
||||
An Azure region is a geographical area in which
|
||||
one or more physical Azure data centers, called availability zones, reside.
|
||||
Regions are independent of other regions, and vast distances can separate them
|
||||
(across countries or even continents).
|
||||
|
||||
|
||||
Azure and OCI regions
|
||||
are localized geographic areas. For Oracle Database@Azure, an Azure region is
|
||||
connected to an OCI region, with availability zones (AZs) in Azure connected to
|
||||
availability domains (ADs) in OCI. Azure and OCI region pairs are selected to
|
||||
minimize distance and latency.
|
||||
|
||||
|
||||
|
||||
- Azure availability zone
|
||||
An availability zone is a physically separate data
|
||||
center within a region that is designed to be available and fault tolerant.
|
||||
Availability zones are close enough to have low-latency connections to other
|
||||
availability zones.
|
||||
|
||||
|
||||
Subnet delegation is Microsoft's ability to inject a
|
||||
managed service, specifically a platform-as-a-service service, directly into
|
||||
your virtual network.
|
||||
|
||||
|
||||
|
||||
- Microsoft Azure Virtual Network
|
||||
Microsoft Azure Virtual Network (VNet) is
|
||||
the fundamental building block for your private network in Azure. VNet enables
|
||||
many types of Azure resources, such as Azure virtual machines (VM), to securely
|
||||
communicate with each other, the internet, and on-premises
|
||||
networks.
|
||||
|
||||
|
||||
Subnet delegation is Microsoft's ability to inject a managed
|
||||
service, specifically a platform-as-a-service service, directly into your
|
||||
virtual network.
|
||||
|
||||
|
||||
|
||||
- Azure Pipelines
|
||||
Azure Pipelines are part of the
|
||||
Azure DevOps service offered by Microsoft Azure to automatically builds, tests,
|
||||
and deploys code projects for continuous integration, continuous testing and
|
||||
continuous delivery. (CI-CD)
|
||||
|
||||
|
||||
|
||||
- Azure Kubernetes Service
|
||||
Azure Kubernetes Service
|
||||
(AKS) is a managed Kubernetes service offered by Microsoft Azure to deploy and
|
||||
manage containerized applications. A Kubernetes cluster can contain multiple
|
||||
pods.
|
||||
|
||||
|
||||
|
||||
- Kubernetes Control Plane
|
||||
A Kubernetes control plane manages the resources
|
||||
for the worker nodes and pods within a Kubernetes cluster. The control plane
|
||||
components detect and respond to events, perform scheduling, and move cluster
|
||||
resources.
|
||||
|
||||
|
||||
|
||||
- Oracle Exadata Database Service on Dedicated
|
||||
Infrastructure
|
||||
Oracle Exadata Database
|
||||
Service delivers proven Oracle Database capabilities on purpose-built, optimized
|
||||
Oracle Exadata Cloud Infrastructure in the public cloud. Built-in cloud
|
||||
automation, elastic resource scaling, security, and fast performance for OLTP,
|
||||
in-memory analytics, and converged Oracle Database workloads help simplify
|
||||
management and reduce costs.
|
||||
|
||||
|
||||
|
||||
Oracle Exadata Cloud Infrastructure brings
|
||||
more CPU cores, increased storage, and a faster network fabric to the public
|
||||
cloud. Oracle Exadata storage servers include Exadata RDMA Memory (XRMEM),
|
||||
creating an additional tier of storage, boosting overall system performance.
|
||||
Exadata combines XRMEM with innovative RDMA algorithms that bypass the network
|
||||
and I/O stack, eliminating expensive CPU interrupts and context
|
||||
switches.
|
||||
|
||||
|
||||
Oracle Exadata Cloud Infrastructure increases the throughput of
|
||||
its 100 Gbps active-active Remote Direct Memory Access over Converged Ethernet
|
||||
(RoCE) internal network fabric, providing a faster interconnect than previous
|
||||
generations with extremely low-latency between all compute and storage
|
||||
servers.
|
||||
|
||||
|
||||
|
||||
- Oracle Database Autonomous
|
||||
Recovery Service
|
||||
Oracle Database Autonomous
|
||||
Recovery Service is a fully managed service designed to protect Oracle Databases from data loss and cyber threats. It offers faster backups with reduced database overhead, reliable recovery with validated backups, and real-time protection enabling recovery to within less than a second of an outage or ransomware attack. Oracle Database Zero Data Loss Autonomous Recovery Service is a Zero Data Loss option for the Autonomous Recovery Service. This service provides a centralized data protection dashboard and is recommended for backing up Oracle Databases.
|
||||
|
||||
|
||||
|
||||
|
||||
- Oracle Database@Azure
|
||||
Oracle Database@Azure is the Oracle Database service ( Oracle Exadata Database Service on Dedicated
|
||||
Infrastructure and Oracle Autonomous Database Serverless ) running on Oracle Cloud
|
||||
Infrastructure (OCI), deployed in Microsoft Azure data centers. The service offers features and price parity with OCI. Purchase the service on Azure Marketplace.
|
||||
|
||||
|
||||
|
||||
Oracle Database@Azure integrates Oracle Exadata Database
|
||||
Service , Oracle Real Application Clusters (Oracle
|
||||
RAC) , and Oracle Data Guard technologies into the Azure platform. Users manage the service on the Azure console and with Azure automation tools. The service is deployed in Azure Virtual Network (VNet) and integrated with the Azure identity and access management system. The OCI and Oracle Database generic metrics and audit logs are natively
|
||||
@@ -0,0 +1,548 @@
|
||||
# Auto-extracted absolute_layout template from
|
||||
# kb/diagram/assets/archcenter-refs/azure-pipeline-exacs-dbazure/exadata-database-service-oracle/exadata-database-service.drawio
|
||||
# Source: Oracle Architecture Center reference (canonical geometry).
|
||||
# Use this as the starting scaffold for a new spec — copy, rename ids,
|
||||
# and replace `type: TODO_identify` on services with the right OCI
|
||||
# type alias (adb_s, drg, fastconnect, etc.). Container coords and
|
||||
# edge waypoints are Oracle's canonical layout; preserve unless the
|
||||
# customer's topology requires a change.
|
||||
absolute_layout:
|
||||
canvas:
|
||||
width: 850
|
||||
height: 1100
|
||||
containers: []
|
||||
services:
|
||||
- id: s1
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1167
|
||||
y: 50
|
||||
w: 28
|
||||
h: 31
|
||||
- id: s14
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 197
|
||||
y: 169
|
||||
w: 63
|
||||
h: 63
|
||||
- id: s28
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 344
|
||||
y: 169
|
||||
w: 63
|
||||
h: 63
|
||||
- id: s24
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 446
|
||||
y: 169
|
||||
w: 63
|
||||
h: 63
|
||||
- id: s20
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 546
|
||||
y: 169
|
||||
w: 57
|
||||
h: 63
|
||||
- id: s13
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 197
|
||||
y: 170
|
||||
w: 62
|
||||
h: 62
|
||||
- id: s15
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 198
|
||||
y: 170
|
||||
w: 60
|
||||
h: 60
|
||||
- id: s27
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 345
|
||||
y: 170
|
||||
w: 61
|
||||
h: 61
|
||||
- id: s29
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 345
|
||||
y: 170
|
||||
w: 60
|
||||
h: 60
|
||||
- id: s23
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 447
|
||||
y: 170
|
||||
w: 61
|
||||
h: 61
|
||||
- id: s25
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 448
|
||||
y: 170
|
||||
w: 43
|
||||
h: 56
|
||||
- id: s19
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 547
|
||||
y: 170
|
||||
w: 56
|
||||
h: 61
|
||||
- id: s21
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 548
|
||||
y: 170
|
||||
w: 43
|
||||
h: 56
|
||||
- id: s30
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 357
|
||||
y: 184
|
||||
w: 36
|
||||
h: 34
|
||||
- id: s11
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 57
|
||||
y: 186
|
||||
w: 63
|
||||
h: 46
|
||||
- id: s12
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 58
|
||||
y: 187
|
||||
w: 44
|
||||
h: 44
|
||||
- id: s26
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 478
|
||||
y: 191
|
||||
w: 28
|
||||
h: 28
|
||||
- id: s54
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1403
|
||||
y: 199
|
||||
w: 63
|
||||
h: 33
|
||||
- id: s53
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1404
|
||||
y: 200
|
||||
w: 61
|
||||
h: 31
|
||||
- id: s55
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1404
|
||||
y: 201
|
||||
w: 60
|
||||
h: 30
|
||||
- id: s22
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 577
|
||||
y: 206
|
||||
w: 24
|
||||
h: 24
|
||||
- id: s9
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 61
|
||||
y: 321
|
||||
w: 57
|
||||
h: 63
|
||||
- id: s17
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 197
|
||||
y: 321
|
||||
w: 63
|
||||
h: 63
|
||||
- id: s32
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 347
|
||||
y: 321
|
||||
w: 56
|
||||
h: 63
|
||||
- id: s41
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 543
|
||||
y: 321
|
||||
w: 63
|
||||
h: 63
|
||||
- id: s16
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 197
|
||||
y: 322
|
||||
w: 62
|
||||
h: 62
|
||||
- id: s31
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 348
|
||||
y: 322
|
||||
w: 55
|
||||
h: 61
|
||||
- id: s40
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 544
|
||||
y: 322
|
||||
w: 61
|
||||
h: 62
|
||||
- id: s8
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 63
|
||||
y: 323
|
||||
w: 53
|
||||
h: 59
|
||||
- id: s18
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 198
|
||||
y: 323
|
||||
w: 60
|
||||
h: 60
|
||||
- id: s43
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 572
|
||||
y: 323
|
||||
w: 33
|
||||
h: 33
|
||||
- id: s42
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 545
|
||||
y: 326
|
||||
w: 57
|
||||
h: 56
|
||||
- id: s34
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 446
|
||||
y: 328
|
||||
w: 61
|
||||
h: 55
|
||||
- id: s35
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 446
|
||||
y: 328
|
||||
w: 63
|
||||
h: 57
|
||||
- id: s33
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 349
|
||||
y: 329
|
||||
w: 35
|
||||
h: 50
|
||||
- id: s36
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 447
|
||||
y: 329
|
||||
w: 54
|
||||
h: 54
|
||||
- id: s38
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 463
|
||||
y: 331
|
||||
w: 39
|
||||
h: 30
|
||||
- id: s37
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 454
|
||||
y: 336
|
||||
w: 41
|
||||
h: 41
|
||||
- id: s39
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 458
|
||||
y: 336
|
||||
w: 48
|
||||
h: 34
|
||||
- id: s10
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 66
|
||||
y: 343
|
||||
w: 47
|
||||
h: 37
|
||||
- id: s6
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 61
|
||||
y: 457
|
||||
w: 57
|
||||
h: 63
|
||||
- id: s45
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 447
|
||||
y: 457
|
||||
w: 58
|
||||
h: 63
|
||||
- id: s57
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1403
|
||||
y: 457
|
||||
w: 63
|
||||
h: 63
|
||||
- id: s56
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1404
|
||||
y: 457
|
||||
w: 62
|
||||
h: 62
|
||||
- id: s44
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 448
|
||||
y: 458
|
||||
w: 57
|
||||
h: 61
|
||||
- id: s46
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 449
|
||||
y: 458
|
||||
w: 55
|
||||
h: 60
|
||||
- id: s5
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 63
|
||||
y: 459
|
||||
w: 53
|
||||
h: 59
|
||||
- id: s62
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1076
|
||||
y: 461
|
||||
w: 96
|
||||
h: 127
|
||||
- id: s72
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 652
|
||||
y: 464
|
||||
w: 135
|
||||
h: 53
|
||||
- id: s63
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1079
|
||||
y: 464
|
||||
w: 90
|
||||
h: 45
|
||||
- id: s58
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1404
|
||||
y: 464
|
||||
w: 60
|
||||
h: 54
|
||||
- id: s7
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 66
|
||||
y: 478
|
||||
w: 47
|
||||
h: 37
|
||||
- id: s67
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 958
|
||||
y: 479
|
||||
w: 63
|
||||
h: 40
|
||||
- id: s66
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 959
|
||||
y: 480
|
||||
w: 62
|
||||
h: 39
|
||||
- id: s71
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 647
|
||||
y: 482
|
||||
w: 135
|
||||
h: 31
|
||||
- id: s65
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1102
|
||||
y: 489
|
||||
w: 47
|
||||
h: 97
|
||||
- id: s68
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 509
|
||||
y: 491
|
||||
w: 75
|
||||
h: 211
|
||||
- id: s61
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1107
|
||||
y: 493
|
||||
w: 38
|
||||
h: 87
|
||||
- id: s64
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1107
|
||||
y: 493
|
||||
w: 38
|
||||
h: 87
|
||||
- id: s3
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1260
|
||||
y: 537
|
||||
w: 42
|
||||
h: 42
|
||||
- id: s2
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1260
|
||||
y: 538
|
||||
w: 41
|
||||
h: 41
|
||||
- id: s4
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1261
|
||||
y: 552
|
||||
w: 29
|
||||
h: 26
|
||||
- id: s48
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 447
|
||||
y: 562
|
||||
w: 58
|
||||
h: 63
|
||||
- id: s59
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 823
|
||||
y: 562
|
||||
w: 55
|
||||
h: 63
|
||||
- id: s47
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 448
|
||||
y: 563
|
||||
w: 57
|
||||
h: 61
|
||||
- id: s49
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 449
|
||||
y: 564
|
||||
w: 55
|
||||
h: 60
|
||||
- id: s60
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 825
|
||||
y: 564
|
||||
w: 34
|
||||
h: 25
|
||||
- id: s73
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1291
|
||||
y: 595
|
||||
w: 41
|
||||
h: 41
|
||||
- id: s74
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1291
|
||||
y: 595
|
||||
w: 42
|
||||
h: 42
|
||||
- id: s75
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1291
|
||||
y: 595
|
||||
w: 30
|
||||
h: 31
|
||||
- id: s76
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1296
|
||||
y: 600
|
||||
w: 36
|
||||
h: 36
|
||||
- id: s70
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 954
|
||||
y: 605
|
||||
w: 72
|
||||
h: 32
|
||||
- id: s69
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 951
|
||||
y: 611
|
||||
w: 78
|
||||
h: 31
|
||||
- id: s51
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 447
|
||||
y: 668
|
||||
w: 58
|
||||
h: 63
|
||||
- id: s50
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 448
|
||||
y: 669
|
||||
w: 57
|
||||
h: 61
|
||||
- id: s52
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 449
|
||||
y: 670
|
||||
w: 55
|
||||
h: 60
|
||||
labels: []
|
||||
connections: []
|
||||
|
After Width: | Height: | Size: 148 KiB |
@@ -0,0 +1,7 @@
|
||||
The diagram you downloaded is available in these formats:
|
||||
- DRAWIO
|
||||
- SVG
|
||||
|
||||
You can customize them for your organization using the associated tools:
|
||||
- For DRAWIO format, use draw.io for Confluence, online at diagrams.net, or the desktop app. Go to diagrams.net for more information.
|
||||
- For SVG format, use an SVG editor such as Inkscape or Sketsa SVG Editor, which are free and available for Windows, macOS, Linux.
|
||||
@@ -0,0 +1,229 @@
|
||||
# Back up from Oracle Base Database Service to Zero Data Loss Autonomous Recovery
|
||||
|
||||
- Source: https://docs.oracle.com/en/solutions/back-up-base-database-zero-data-loss-recovery/index.html
|
||||
- Date: 2025-07
|
||||
- Type: reference-architecture
|
||||
- Services: base-db
|
||||
- Tags: database, ha-dr
|
||||
|
||||
## Summary (catalog)
|
||||
|
||||
Autonomous Recovery Service for Base DB backups. Real-time protection with continuous redo log shipping. Point-in-time recovery with sub-second RPO for mission-critical workloads.
|
||||
|
||||
## Architecture (fetched from source)
|
||||
|
||||
Architecture
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
This playbook describes how to perform backup and recovery operations between Oracle Base Database Service and Recovery
|
||||
Service .
|
||||
|
||||
|
||||
|
||||
Description of the illustration base-database-recovery-backup-architecture.png
|
||||
|
||||
base-database-recovery-backup-architecture.zip
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Before You Begin
|
||||
|
||||
|
||||
|
||||
|
||||
Before you begin, check the versions of major software components used in this setup, and review the product documentation for later reference
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Review Software Requirements
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
- Oracle Database 19.18 and above, or 21.8 and above
|
||||
|
||||
|
||||
- Oracle Base Database Service
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Review Documentation
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
- Introducing the Oracle Database Zero Data Loss Autonomous Recovery Service
|
||||
|
||||
- About Oracle Database Autonomous Recovery Service
|
||||
|
||||
- "Back Up and Recovery in Base Database Service" in Oracle Cloud
|
||||
Infrastructure documentation
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Considerations for Configuration
|
||||
|
||||
|
||||
|
||||
|
||||
Before you begin to configure backups and recovery, review these assumptions and considerations.
|
||||
|
||||
|
||||
|
||||
- The virtual cloud network (VCN) where Oracle Base Database Service is configured, must route packages to the OCI Services Network (where Recovery
|
||||
Service is configured) via a service gateway.
|
||||
|
||||
|
||||
- There are two types of backups: Oracle managed backups and unmanaged backups. Oracle managed backups are configured using the OCI console or REST API. Unmanaged backups are configured using dbaascli or RMAN .
|
||||
|
||||
|
||||
- This playbook uses Oracle managed backups to Recovery
|
||||
Service . Unmanaged backups are out of scope of this playbook.
|
||||
|
||||
|
||||
- Combining Oracle managed backups and unmanaged backups is not supported.
|
||||
|
||||
- The Recovery
|
||||
Service enables databases to restore to the last known good state with minimal data loss, to a specific timestamp, or SCN. The OCI console, however, does not support restoring a database from a specific backup from the list of backups displayed in the interface. Although it's not possible to restore a database from a backup in this list, the list of backups can be used as a reference as to what data is currently available to restore the database.
|
||||
|
||||
|
||||
- The OCI console cannot restore a particular pluggable database (PDB) . Only the full container database (CDB) can be restored.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
About Required Products and Roles
|
||||
|
||||
|
||||
|
||||
|
||||
This solution requires the following products:
|
||||
|
||||
|
||||
|
||||
- Oracle Cloud
|
||||
Infrastructure
|
||||
|
||||
- Oracle Cloud Infrastructure Identity
|
||||
and Access Management
|
||||
|
||||
- Oracle Base Database Service
|
||||
|
||||
- Oracle Database Zero Data Loss Autonomous Recovery Service
|
||||
|
||||
- Oracle Database
|
||||
|
||||
|
||||
These are the roles needed for each product.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Product Name: Role
|
||||
Required to...
|
||||
|
||||
|
||||
|
||||
|
||||
Oracle Cloud
|
||||
Infrastructure : VCN admin
|
||||
Add OCI services gateway and create security rules to allow connections from Oracle Database Zero Data Loss Autonomous Recovery Service to the Oracle Base Database Service backup network.
|
||||
|
||||
|
||||
|
||||
Oracle Cloud Infrastructure Identity
|
||||
and Access Management : IAM service admin
|
||||
Add security policies for Oracle Database Zero Data Loss Autonomous Recovery Service .
|
||||
|
||||
|
||||
|
||||
Oracle Base Database Service : database admin
|
||||
|
||||
|
||||
|
||||
- Create database with automatic backups to Oracle Database Zero Data Loss Autonomous Recovery Service .
|
||||
|
||||
|
||||
- Modify database to add automatic backups to Oracle Database Zero Data Loss Autonomous Recovery Service .
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Oracle Database Zero Data Loss Autonomous Recovery Service : admin
|
||||
Add Oracle Database Zero Data Loss Autonomous Recovery Service subnet for Oracle Base Database Service backups.
|
||||
|
||||
|
||||
|
||||
Oracle Database : sys
|
||||
Configure backups to Oracle Database Zero Data Loss Autonomous Recovery Service .
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
See Oracle Products, Solutions, and Services to get what you need.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Title and Copyright Information
|
||||
|
||||
|
||||
|
||||
|
||||
Back up Oracle Base Database Service to Oracle Database Zero Data Loss Autonomous Recovery
|
||||
|
||||
|
||||
F84016-03
|
||||
|
||||
|
||||
July 2025
|
||||
|
||||
|
||||
Copyright © 2023,2025,
|
||||
|
||||
Oracle and/or its affiliates.
|
||||
@@ -0,0 +1,373 @@
|
||||
# Auto-extracted absolute_layout template from
|
||||
# kb/diagram/assets/archcenter-refs/back-up-base-database-zero-data-loss-recovery/base-database-recovery-backup-architecture/base-database-recovery-backup-architecture.drawio
|
||||
# Source: Oracle Architecture Center reference (canonical geometry).
|
||||
# Use this as the starting scaffold for a new spec — copy, rename ids,
|
||||
# and replace `type: TODO_identify` on services with the right OCI
|
||||
# type alias (adb_s, drg, fastconnect, etc.). Container coords and
|
||||
# edge waypoints are Oracle's canonical layout; preserve unless the
|
||||
# customer's topology requires a change.
|
||||
absolute_layout:
|
||||
canvas:
|
||||
width: 850
|
||||
height: 1100
|
||||
containers:
|
||||
- id: c1
|
||||
type: region
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 413
|
||||
h: 505
|
||||
- id: c7
|
||||
type: region
|
||||
label: ''
|
||||
x: 229
|
||||
y: 261
|
||||
w: 2
|
||||
h: 80
|
||||
- id: c9
|
||||
type: region
|
||||
label: ''
|
||||
x: 29
|
||||
y: 158
|
||||
w: 2
|
||||
h: 63
|
||||
- id: c4
|
||||
type: region
|
||||
label: ''
|
||||
x: 351
|
||||
y: 359
|
||||
w: 46
|
||||
h: 2
|
||||
services:
|
||||
- id: '9'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 41
|
||||
h: 39
|
||||
- id: '10'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 42
|
||||
h: 40
|
||||
- id: '16'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 42
|
||||
h: 42
|
||||
- id: '17'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 41
|
||||
h: 41
|
||||
- id: '18'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 42
|
||||
h: 42
|
||||
- id: '38'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 41
|
||||
h: 38
|
||||
- id: '39'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 42
|
||||
h: 39
|
||||
- id: '44'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 62
|
||||
h: 58
|
||||
- id: '45'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 63
|
||||
h: 59
|
||||
- id: '68'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 42
|
||||
h: 42
|
||||
- id: '69'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 41
|
||||
h: 41
|
||||
- id: '70'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 42
|
||||
h: 42
|
||||
- id: '77'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 38
|
||||
h: 63
|
||||
- id: '78'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 37
|
||||
h: 61
|
||||
- id: '79'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 38
|
||||
h: 63
|
||||
- id: '95'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 63
|
||||
h: 59
|
||||
- id: '96'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 62
|
||||
h: 58
|
||||
- id: '97'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 63
|
||||
h: 59
|
||||
- id: '101'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 62
|
||||
h: 58
|
||||
- id: '102'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 63
|
||||
h: 59
|
||||
- id: '11'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1
|
||||
y: 0
|
||||
w: 40
|
||||
h: 38
|
||||
- id: '55'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 11
|
||||
y: 0
|
||||
w: 42
|
||||
h: 42
|
||||
- id: '56'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 11
|
||||
y: 0
|
||||
w: 41
|
||||
h: 41
|
||||
- id: '57'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 11
|
||||
y: 0
|
||||
w: 42
|
||||
h: 42
|
||||
- id: '58'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 11
|
||||
y: 0
|
||||
w: 30
|
||||
h: 31
|
||||
- id: '40'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 1
|
||||
w: 40
|
||||
h: 37
|
||||
- id: '19'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1
|
||||
y: 1
|
||||
w: 40
|
||||
h: 40
|
||||
- id: '46'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1
|
||||
y: 1
|
||||
w: 48
|
||||
h: 33
|
||||
- id: '71'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1
|
||||
y: 1
|
||||
w: 40
|
||||
h: 40
|
||||
- id: '80'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1
|
||||
y: 1
|
||||
w: 35
|
||||
h: 60
|
||||
- id: '81'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1
|
||||
y: 1
|
||||
w: 35
|
||||
h: 60
|
||||
- id: '98'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1
|
||||
y: 1
|
||||
w: 60
|
||||
h: 57
|
||||
- id: '103'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1
|
||||
y: 1
|
||||
w: 60
|
||||
h: 30
|
||||
- id: '59'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 16
|
||||
y: 5
|
||||
w: 36
|
||||
h: 36
|
||||
- id: '20'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1
|
||||
y: 14
|
||||
w: 29
|
||||
h: 26
|
||||
- id: '104'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 14
|
||||
y: 19
|
||||
w: 34
|
||||
h: 38
|
||||
- id: '47'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 35
|
||||
y: 23
|
||||
w: 26
|
||||
h: 35
|
||||
- id: s2
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 352
|
||||
y: 29
|
||||
w: 42
|
||||
h: 40
|
||||
- id: '63'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 45
|
||||
w: 123
|
||||
h: 37
|
||||
- id: s3
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 342
|
||||
y: 69
|
||||
w: 42
|
||||
h: 42
|
||||
- id: s13
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 197
|
||||
y: 141
|
||||
w: 63
|
||||
h: 59
|
||||
- id: s10
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 9
|
||||
y: 158
|
||||
w: 55
|
||||
h: 66
|
||||
- id: s8
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 198
|
||||
y: 261
|
||||
w: 123
|
||||
h: 82
|
||||
- id: s5
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 353
|
||||
y: 341
|
||||
w: 42
|
||||
h: 39
|
||||
- id: s11
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 211
|
||||
y: 402
|
||||
w: 38
|
||||
h: 63
|
||||
- id: s6
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 75
|
||||
y: 405
|
||||
w: 63
|
||||
h: 59
|
||||
- id: s12
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 322
|
||||
y: 405
|
||||
w: 63
|
||||
h: 59
|
||||
labels: []
|
||||
connections: []
|
||||
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 54 KiB |
@@ -0,0 +1,7 @@
|
||||
The diagram you downloaded is available in these formats:
|
||||
- DRAWIO
|
||||
- SVG
|
||||
|
||||
You can customize them for your organization using the associated tools:
|
||||
- For DRAWIO format, use draw.io for Confluence, online at diagrams.net, or the desktop app. Go to diagrams.net for more information.
|
||||
- For SVG format, use an SVG editor such as Inkscape or Sketsa SVG Editor, which are free and available for Windows, macOS, Linux.
|
||||
@@ -0,0 +1,236 @@
|
||||
# Back up from Exadata on Dedicated Infrastructure to Zero Data Loss Autonomous Recovery
|
||||
|
||||
- Source: https://docs.oracle.com/en/solutions/back-up-exadata-dedicated-zero-data-loss-recovery/index.html
|
||||
- Date: 2025-07
|
||||
- Type: reference-architecture
|
||||
- Services: exacs
|
||||
- Tags: database, ha-dr
|
||||
|
||||
## Summary (catalog)
|
||||
|
||||
Autonomous Recovery Service for ExaCS backups. Automated backup management with real-time redo protection. Validates backup recoverability automatically.
|
||||
|
||||
## Architecture (fetched from source)
|
||||
|
||||
Architecture
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
This playbook describes how to perform backup and recovery operations between Oracle Exadata Database Service on Dedicated
|
||||
Infrastructure and Recovery
|
||||
Service .
|
||||
|
||||
|
||||
|
||||
Description of the illustration exadata-dedicated-recovery-backup-architecture.png
|
||||
|
||||
exadata-dedicated-recovery-backup-architecture.zip
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Before You Begin
|
||||
|
||||
|
||||
|
||||
|
||||
Before you begin, check the versions of major software components used in this setup, and review the product documentation for later reference
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Review Software Requirements
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
- Oracle Exadata Database Service on Dedicated
|
||||
Infrastructure
|
||||
|
||||
- Oracle Database Enterprise Edition Extreme Performance 19.18 or newer
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Review Documentation
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
- Introducing the Oracle Database Zero Data Loss Autonomous Recovery Service
|
||||
|
||||
- About Oracle Database Autonomous Recovery Service
|
||||
|
||||
- "Back Up and Recovery in Base Database Service" in Oracle Cloud
|
||||
Infrastructure documentation
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Considerations for Configuration
|
||||
|
||||
|
||||
|
||||
|
||||
Before you begin to configure backups and recovery, review these assumptions and considerations.
|
||||
|
||||
|
||||
|
||||
- The virtual cloud network (VCN) where Oracle Exadata Database Service on Dedicated
|
||||
Infrastructure is configured, must route packages to the OCI Services Network (where Recovery
|
||||
Service is configured) via a service gateway.
|
||||
|
||||
|
||||
- There are two types of backups: Oracle managed backups and user configured backups. Oracle managed backups are configured using the OCI console or REST API. User configured backups are configured using the dbaascli only.
|
||||
|
||||
|
||||
- This playbook uses Oracle managed backups to Recovery
|
||||
Service . User configured backups are out of scope of this playbook.
|
||||
|
||||
|
||||
- Combining Oracle managed backups and user configured backups is not supported.
|
||||
|
||||
- The Recovery
|
||||
Service enables databases to restore to the last known good state with minimal data loss, to a specific timestamp, or SCN. The OCI console, however, does not support restoring a database from a specific backup from the list of backups displayed in the console. Although it's not possible to restore a database from a backup in this list, the list of backups can be used as a reference as to what data is currently available for restore operations.
|
||||
|
||||
|
||||
- The OCI console cannot restore a particular pluggable database (PDB) . Only the full container database (CDB) can be restored.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
About Required Products and Roles
|
||||
|
||||
|
||||
|
||||
|
||||
This solution requires the following products and roles:
|
||||
|
||||
|
||||
|
||||
- Oracle Cloud
|
||||
Infrastructure
|
||||
|
||||
- Oracle Cloud Infrastructure Identity
|
||||
and Access Management
|
||||
|
||||
- Oracle Exadata Database Service on Dedicated
|
||||
Infrastructure
|
||||
|
||||
- Oracle Database Zero Data Loss Autonomous Recovery Service
|
||||
|
||||
- Oracle Database
|
||||
|
||||
|
||||
These are the roles needed for each product.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Service Name: Role
|
||||
Required to...
|
||||
|
||||
|
||||
|
||||
|
||||
Oracle Cloud
|
||||
Infrastructure : VCN admin
|
||||
Add OCI services gateway and create security rules to allow connections from Oracle Database Zero Data Loss Autonomous Recovery Service to the Oracle Exadata Database Service on Dedicated
|
||||
Infrastructure backup network.
|
||||
|
||||
|
||||
|
||||
Oracle Cloud Infrastructure Identity
|
||||
and Access Management : IAM service admin
|
||||
Add security policies for Oracle Database Zero Data Loss Autonomous Recovery Service .
|
||||
|
||||
|
||||
|
||||
Oracle Exadata Database Service on Dedicated
|
||||
Infrastructure : database admin
|
||||
|
||||
|
||||
|
||||
- Create database with Oracle managed backups to Oracle Database Zero Data Loss Autonomous Recovery Service .
|
||||
|
||||
|
||||
- Modify database to add Oracle managed backups to Oracle Database Zero Data Loss Autonomous Recovery Service .
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Oracle Database Zero Data Loss Autonomous Recovery Service : admin
|
||||
Add Oracle Database Zero Data Loss Autonomous Recovery Service subnet for Oracle Exadata Database Service on Dedicated
|
||||
Infrastructure backups.
|
||||
|
||||
|
||||
|
||||
Oracle Database : sys
|
||||
Configure backups to Oracle Database Zero Data Loss Autonomous Recovery Service .
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
See Oracle Products, Solutions, and Services to get what you need.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Title and Copyright Information
|
||||
|
||||
|
||||
|
||||
|
||||
Back up Oracle Exadata on Dedicated Infrastructure to Oracle Zero Data Loss Autonomous Recovery Service
|
||||
|
||||
|
||||
F84015-04
|
||||
|
||||
|
||||
July 2025
|
||||
|
||||
|
||||
Copyright © 2023,2025,
|
||||
|
||||
Oracle and/or its affiliates.
|
||||
@@ -0,0 +1,408 @@
|
||||
# Auto-extracted absolute_layout template from
|
||||
# kb/diagram/assets/archcenter-refs/back-up-exadata-dedicated-zero-data-loss-recovery/exadata-dedicated-recovery-backup-architecture/exadata-dedicated-recovery-backup-architecture.drawio
|
||||
# Source: Oracle Architecture Center reference (canonical geometry).
|
||||
# Use this as the starting scaffold for a new spec — copy, rename ids,
|
||||
# and replace `type: TODO_identify` on services with the right OCI
|
||||
# type alias (adb_s, drg, fastconnect, etc.). Container coords and
|
||||
# edge waypoints are Oracle's canonical layout; preserve unless the
|
||||
# customer's topology requires a change.
|
||||
absolute_layout:
|
||||
canvas:
|
||||
width: 850
|
||||
height: 1100
|
||||
containers:
|
||||
- id: c1
|
||||
type: region
|
||||
label: ''
|
||||
x: 270
|
||||
y: 300
|
||||
w: 406
|
||||
h: 601
|
||||
- id: c8
|
||||
type: region
|
||||
label: ''
|
||||
x: 492
|
||||
y: 649
|
||||
w: 2
|
||||
h: 80
|
||||
- id: c11
|
||||
type: region
|
||||
label: ''
|
||||
x: 299
|
||||
y: 492
|
||||
w: 2
|
||||
h: 63
|
||||
- id: c5
|
||||
type: region
|
||||
label: ''
|
||||
x: 613
|
||||
y: 755
|
||||
w: 46
|
||||
h: 2
|
||||
services:
|
||||
- id: HmliP5wbrd6Yz27v1M2G-7
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 41
|
||||
h: 39
|
||||
- id: HmliP5wbrd6Yz27v1M2G-8
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 42
|
||||
h: 40
|
||||
- id: HmliP5wbrd6Yz27v1M2G-14
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 42
|
||||
h: 42
|
||||
- id: HmliP5wbrd6Yz27v1M2G-15
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 41
|
||||
h: 41
|
||||
- id: HmliP5wbrd6Yz27v1M2G-16
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 42
|
||||
h: 42
|
||||
- id: HmliP5wbrd6Yz27v1M2G-36
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 42
|
||||
h: 42
|
||||
- id: HmliP5wbrd6Yz27v1M2G-37
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 41
|
||||
h: 41
|
||||
- id: HmliP5wbrd6Yz27v1M2G-38
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 42
|
||||
h: 42
|
||||
- id: HmliP5wbrd6Yz27v1M2G-58
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 41
|
||||
h: 38
|
||||
- id: HmliP5wbrd6Yz27v1M2G-59
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 42
|
||||
h: 39
|
||||
- id: HmliP5wbrd6Yz27v1M2G-64
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 62
|
||||
h: 58
|
||||
- id: HmliP5wbrd6Yz27v1M2G-65
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 63
|
||||
h: 59
|
||||
- id: HmliP5wbrd6Yz27v1M2G-75
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 41
|
||||
h: 41
|
||||
- id: HmliP5wbrd6Yz27v1M2G-76
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 42
|
||||
h: 42
|
||||
- id: HmliP5wbrd6Yz27v1M2G-77
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 30
|
||||
h: 31
|
||||
- id: HmliP5wbrd6Yz27v1M2G-87
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 41
|
||||
h: 41
|
||||
- id: HmliP5wbrd6Yz27v1M2G-88
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 42
|
||||
h: 42
|
||||
- id: HmliP5wbrd6Yz27v1M2G-95
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 38
|
||||
h: 63
|
||||
- id: HmliP5wbrd6Yz27v1M2G-96
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 37
|
||||
h: 61
|
||||
- id: HmliP5wbrd6Yz27v1M2G-97
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 38
|
||||
h: 63
|
||||
- id: HmliP5wbrd6Yz27v1M2G-113
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 63
|
||||
h: 59
|
||||
- id: HmliP5wbrd6Yz27v1M2G-114
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 62
|
||||
h: 58
|
||||
- id: HmliP5wbrd6Yz27v1M2G-115
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 63
|
||||
h: 59
|
||||
- id: HmliP5wbrd6Yz27v1M2G-119
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 46
|
||||
h: 62
|
||||
- id: HmliP5wbrd6Yz27v1M2G-120
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 0
|
||||
w: 48
|
||||
h: 63
|
||||
- id: HmliP5wbrd6Yz27v1M2G-9
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1
|
||||
y: 0
|
||||
w: 40
|
||||
h: 38
|
||||
- id: HmliP5wbrd6Yz27v1M2G-60
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 0
|
||||
y: 1
|
||||
w: 40
|
||||
h: 37
|
||||
- id: HmliP5wbrd6Yz27v1M2G-17
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1
|
||||
y: 1
|
||||
w: 40
|
||||
h: 40
|
||||
- id: HmliP5wbrd6Yz27v1M2G-39
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1
|
||||
y: 1
|
||||
w: 40
|
||||
h: 40
|
||||
- id: HmliP5wbrd6Yz27v1M2G-66
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1
|
||||
y: 1
|
||||
w: 48
|
||||
h: 33
|
||||
- id: HmliP5wbrd6Yz27v1M2G-89
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1
|
||||
y: 1
|
||||
w: 40
|
||||
h: 40
|
||||
- id: HmliP5wbrd6Yz27v1M2G-98
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1
|
||||
y: 1
|
||||
w: 35
|
||||
h: 60
|
||||
- id: HmliP5wbrd6Yz27v1M2G-99
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1
|
||||
y: 1
|
||||
w: 35
|
||||
h: 60
|
||||
- id: HmliP5wbrd6Yz27v1M2G-116
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1
|
||||
y: 1
|
||||
w: 60
|
||||
h: 57
|
||||
- id: HmliP5wbrd6Yz27v1M2G-78
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 5
|
||||
y: 5
|
||||
w: 36
|
||||
h: 36
|
||||
- id: HmliP5wbrd6Yz27v1M2G-122
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 10
|
||||
y: 13
|
||||
w: 29
|
||||
h: 48
|
||||
- id: HmliP5wbrd6Yz27v1M2G-123
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 10
|
||||
y: 13
|
||||
w: 29
|
||||
h: 48
|
||||
- id: HmliP5wbrd6Yz27v1M2G-18
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1
|
||||
y: 14
|
||||
w: 29
|
||||
h: 26
|
||||
- id: HmliP5wbrd6Yz27v1M2G-40
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1
|
||||
y: 14
|
||||
w: 29
|
||||
h: 26
|
||||
- id: HmliP5wbrd6Yz27v1M2G-121
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 11
|
||||
y: 14
|
||||
w: 27
|
||||
h: 46
|
||||
- id: HmliP5wbrd6Yz27v1M2G-67
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 35
|
||||
y: 23
|
||||
w: 26
|
||||
h: 35
|
||||
- id: s2
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 614
|
||||
y: 329
|
||||
w: 42
|
||||
h: 40
|
||||
- id: s3
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 605
|
||||
y: 369
|
||||
w: 42
|
||||
h: 42
|
||||
- id: s15
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 469
|
||||
y: 474
|
||||
w: 48
|
||||
h: 63
|
||||
- id: s12
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 279
|
||||
y: 492
|
||||
w: 42
|
||||
h: 42
|
||||
- id: s4
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 605
|
||||
y: 507
|
||||
w: 42
|
||||
h: 42
|
||||
- id: s9
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 472
|
||||
y: 649
|
||||
w: 42
|
||||
h: 42
|
||||
- id: s10
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 460
|
||||
y: 695
|
||||
w: 123
|
||||
h: 37
|
||||
- id: s6
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 616
|
||||
y: 736
|
||||
w: 42
|
||||
h: 39
|
||||
- id: s13
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 474
|
||||
y: 797
|
||||
w: 38
|
||||
h: 63
|
||||
- id: s14
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 585
|
||||
y: 800
|
||||
w: 63
|
||||
h: 59
|
||||
- id: s7
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 337
|
||||
y: 801
|
||||
w: 63
|
||||
h: 59
|
||||
labels: []
|
||||
connections: []
|
||||
|
After Width: | Height: | Size: 39 KiB |
|
After Width: | Height: | Size: 57 KiB |
@@ -0,0 +1,7 @@
|
||||
The diagram you downloaded is available in these formats:
|
||||
- DRAWIO
|
||||
- SVG
|
||||
|
||||
You can customize them for your organization using the associated tools:
|
||||
- For DRAWIO format, use draw.io for Confluence, online at diagrams.net, or the desktop app. Go to diagrams.net for more information.
|
||||
- For SVG format, use an SVG editor such as Inkscape or Sketsa SVG Editor, which are free and available for Windows, macOS, Linux.
|
||||
@@ -0,0 +1,187 @@
|
||||
# Run PeopleSoft ERP and Autonomous Database in an HA multicloud deployment
|
||||
|
||||
- Source: https://docs.oracle.com/en/solutions/bread-multicloud-on-oci/index.html
|
||||
- Date: 2025-02
|
||||
- Type: reference-architecture
|
||||
- Services: adb-s, compute, load-balancer
|
||||
- Tags: application, ha-dr, multicloud, peoplesoft, autonomous
|
||||
|
||||
## Summary (catalog)
|
||||
|
||||
PeopleSoft HA with ADB-S across cloud providers. Application tier on OCI compute with database on ADB-S. Multi-AZ deployment for high availability with automatic failover.
|
||||
|
||||
## Architecture (fetched from source)
|
||||
|
||||
Architecture
|
||||
|
||||
|
||||
|
||||
|
||||
The Oracle partner has built and deployed a highly-available Oracle
|
||||
PeopleSoft application using two availability domains in the Oracle Cloud
|
||||
Infrastructure (OCI) region in Ashburn. They use the Phoenix region as a standby region for Oracle Autonomous Database and as a disaster recovery site.
|
||||
|
||||
|
||||
|
||||
Each of the web and application virtual machine (VM) instances are
|
||||
configured as a high availability pair by using load balancers and by being placed in
|
||||
different availability domains (AD). Each of the load balancers handles certain
|
||||
PeopleSoft functions and URLs.
|
||||
|
||||
|
||||
Separate instances of Oracle Autonomous Transaction
|
||||
Processing on Dedicated Infrastructure (ATP-D) are created for each of the PeopleSoft functions:
|
||||
Financials, Phire, Vertex, and Human Capital Management (HCM). Oracle Data Guard is used
|
||||
to replicate the primary databases in Ashburn to standby databases in Phoenix.
|
||||
|
||||
|
||||
|
||||
They have also built and deployed development (DEV), user acceptance test
|
||||
(UAT), quality assurance (QA), and test environments in the Phoenix region. Oracle Data
|
||||
Guard and RackWare are also used for the DEV, UAT, QA, and test environments.
|
||||
|
||||
|
||||
Windows Servers with file shares are used to store PeopleSoft configuration
|
||||
files. Users are able to access PeopleSoft by using the Internet through an internet
|
||||
gateway or from the partner private network by using Oracle Cloud
|
||||
Infrastructure FastConnect to connect to the load balancers. After connecting to the load balancers, users are
|
||||
redirected to an OKTA Access Gateway (OAG). The OAG is used for access authentication
|
||||
and single sign-on (SSO) before allowing users to access PeopleSoft.
|
||||
|
||||
|
||||
|
||||
The move to OCI involved first migrating its PeopleSoft web/application tier
|
||||
and Oracle Database to Oracle Exadata Database
|
||||
Service . After realizing the benefits of ATP, the partner successfully migrated its 7 TB
|
||||
PeopleSoft database to Oracle Autonomous Database . They recognized ease of maintenance and operation of Autonomous Database as key benefits for their modernization effort.
|
||||
|
||||
|
||||
|
||||
The following diagram illustrates the migration process:
|
||||
|
||||
|
||||
Description of the illustration peoplesoft-migration-process.png
|
||||
|
||||
peoplesoft-migration-process-oracle.zip
|
||||
|
||||
|
||||
The partner has built a multicloud architecture that integrates with banking
|
||||
systems, SaaS applications, Microsoft Azure for Active Directory single sign-on (SSO),
|
||||
and MuleSoft (SaaS) for data integration. These integrations connect to Oracle Cloud through their data center private network by using a customer-premises router and
|
||||
then connect into the virtual cloud network (VCN) by using ATP.
|
||||
|
||||
|
||||
|
||||
For disaster recovery, they use Oracle Data Guard to replicate databases to
|
||||
the Phoenix region and uses Oracle Cloud
|
||||
Marketplace partner RackWare to take snapshots of VM instances. This allows them to quickly
|
||||
recover in another region and continue operations in case of a disaster event.
|
||||
|
||||
|
||||
|
||||
To continue their cloud modernization and maturation journey, the partner has
|
||||
future plans to move more systems into cloud native services to reduce the amount of
|
||||
patching, upgrades, and maintenance required.
|
||||
|
||||
|
||||
The following diagram illustrates this reference architecture.
|
||||
|
||||
|
||||
Description of the illustration peoplesoft-prod-oci.png
|
||||
|
||||
peoplesoft-prod-oci-oracle.zip
|
||||
|
||||
|
||||
The architecture has the following components:
|
||||
|
||||
|
||||
|
||||
- Tenancy
|
||||
A tenancy is a secure and isolated partition that Oracle sets up within Oracle Cloud when you sign up for Oracle Cloud
|
||||
Infrastructure . You can create, organize, and administer your resources in Oracle Cloud within your tenancy. A tenancy is synonymous with a company or organization. Usually, a company will have a single tenancy and reflect its organizational structure within that tenancy. A single tenancy is usually associated with a single subscription, and a single subscription usually only has one tenancy.
|
||||
|
||||
|
||||
|
||||
|
||||
- Region
|
||||
An Oracle Cloud
|
||||
Infrastructure region is a localized geographic area that contains one or more data centers, called availability domains. Regions are independent of other regions, and vast distances can separate them (across countries or even continents).
|
||||
|
||||
|
||||
|
||||
|
||||
- Audit
|
||||
The Oracle Cloud Infrastructure Audit service automatically records calls to all supported Oracle Cloud
|
||||
Infrastructure public application programming interface (API) endpoints as log events. All OCI services support logging by Oracle Cloud Infrastructure Audit .
|
||||
|
||||
|
||||
|
||||
|
||||
- Policy
|
||||
An Oracle Cloud Infrastructure Identity
|
||||
and Access Management policy specifies who can access which resources, and how. Access is granted at the group and compartment level, which means you can write a policy that gives a group a specific type of access within a specific compartment, or to the tenancy.
|
||||
|
||||
|
||||
|
||||
|
||||
- Logging
|
||||
Oracle Cloud Infrastructure Logging is a highly-scalable and fully-managed service that provides access to the following types of logs from your resources in the cloud:
|
||||
|
||||
|
||||
- Audit logs: Logs related to events produced by OCI Audit .
|
||||
|
||||
|
||||
- Service logs: Logs published by individual services such as OCI API Gateway , OCI Events , OCI Functions , OCI Load Balancing , OCI Object Storage , and VCN flow logs.
|
||||
|
||||
|
||||
- Custom logs: Logs that contain diagnostic information from custom applications, other cloud providers, or an on-premises environment.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
- Object storage
|
||||
OCI Object Storage provides quick access to large amounts of structured and unstructured data of any content type, including database backups, analytic data, and rich content such as images and videos. You can safely and securely store data directly from the internet or from within the cloud platform. You can scale storage without experiencing any degradation in performance or service reliability.
|
||||
|
||||
|
||||
|
||||
Use standard storage for "hot" storage that you need to access quickly, immediately, and frequently. Use archive storage for "cold" storage that you retain for long periods of time and seldom or rarely access.
|
||||
|
||||
|
||||
|
||||
- Compartment
|
||||
Compartments are cross-regional logical partitions within an Oracle Cloud
|
||||
Infrastructure tenancy. Use compartments to organize, control access, and set usage quotas for your Oracle Cloud resources. In a given compartment, you define policies that control access and set privileges for resources.
|
||||
|
||||
|
||||
|
||||
|
||||
- Availability domain
|
||||
Availability domains are standalone, independent data centers within a region. The physical resources in each availability domain are isolated from the resources in the other availability domains, which provides fault tolerance. Availability domains don’t share infrastructure such as power or cooling, or the internal availability domain network. So, a failure at one availability domain shouldn't affect the other availability domains in the region.
|
||||
|
||||
|
||||
|
||||
- Virtual cloud network (VCN) and subnets
|
||||
A VCN is a customizable, software-defined network that you set up in an Oracle Cloud
|
||||
Infrastructure region. Like traditional data center networks, VCNs give you control over your network environment. A VCN can have multiple non-overlapping CIDR blocks that you can change after you create the VCN. You can segment a VCN into subnets, which can be scoped to a region or to an availability domain. Each subnet consists of a contiguous range of addresses that don't overlap with the other subnets in the VCN. You can change the size of a subnet after creation. A subnet can be public or private.
|
||||
|
||||
|
||||
|
||||
|
||||
- Security list
|
||||
For each subnet, you can create security rules that specify the source, destination, and type of traffic that must be allowed in and out of the subnet.
|
||||
|
||||
|
||||
|
||||
- Route table
|
||||
Virtual route tables contain rules to route traffic from subnets to destinations outside a VCN, typically through gateways.
|
||||
|
||||
|
||||
|
||||
- Internet gateway
|
||||
An internet gateway allows traffic between the public subnets in a VCN and the public internet.
|
||||
|
||||
|
||||
|
||||
- Dynamic routing gateway (DRG)
|
||||
The DRG is a virtual router that provides a path for private network traffic between VCNs in the sa
|
||||
@@ -0,0 +1,513 @@
|
||||
# Auto-extracted absolute_layout template from
|
||||
# kb/diagram/assets/archcenter-refs/bread-multicloud-on-oci/peoplesoft-migration-process-oracle/peoplesoft-migration-process.drawio
|
||||
# Source: Oracle Architecture Center reference (canonical geometry).
|
||||
# Use this as the starting scaffold for a new spec — copy, rename ids,
|
||||
# and replace `type: TODO_identify` on services with the right OCI
|
||||
# type alias (adb_s, drg, fastconnect, etc.). Container coords and
|
||||
# edge waypoints are Oracle's canonical layout; preserve unless the
|
||||
# customer's topology requires a change.
|
||||
absolute_layout:
|
||||
canvas:
|
||||
width: 850
|
||||
height: 1100
|
||||
containers:
|
||||
- id: '9'
|
||||
type: region
|
||||
label: ''
|
||||
x: 0
|
||||
y: 75
|
||||
w: 159
|
||||
h: 549
|
||||
- id: '39'
|
||||
type: region
|
||||
label: ''
|
||||
x: 347
|
||||
y: 75
|
||||
w: 159
|
||||
h: 549
|
||||
- id: '70'
|
||||
type: region
|
||||
label: ''
|
||||
x: 728
|
||||
y: 75
|
||||
w: 159
|
||||
h: 532
|
||||
- id: '76'
|
||||
type: region
|
||||
label: ''
|
||||
x: 1058
|
||||
y: 75
|
||||
w: 159
|
||||
h: 532
|
||||
services:
|
||||
- id: '12'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 42
|
||||
y: 143
|
||||
w: 170
|
||||
h: 121
|
||||
- id: '13'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 48
|
||||
y: 143
|
||||
w: 63
|
||||
h: 63
|
||||
- id: '14'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 48
|
||||
y: 143
|
||||
w: 61
|
||||
h: 61
|
||||
- id: '15'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 48
|
||||
y: 143
|
||||
w: 63
|
||||
h: 63
|
||||
- id: '43'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 389
|
||||
y: 143
|
||||
w: 159
|
||||
h: 121
|
||||
- id: '44'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 395
|
||||
y: 143
|
||||
w: 63
|
||||
h: 63
|
||||
- id: '45'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 395
|
||||
y: 143
|
||||
w: 61
|
||||
h: 61
|
||||
- id: '46'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 395
|
||||
y: 143
|
||||
w: 63
|
||||
h: 63
|
||||
- id: '80'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 770
|
||||
y: 143
|
||||
w: 135
|
||||
h: 104
|
||||
- id: '81'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 776
|
||||
y: 143
|
||||
w: 63
|
||||
h: 63
|
||||
- id: '82'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 776
|
||||
y: 143
|
||||
w: 61
|
||||
h: 61
|
||||
- id: '83'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 776
|
||||
y: 143
|
||||
w: 63
|
||||
h: 63
|
||||
- id: '92'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1104
|
||||
y: 143
|
||||
w: 135
|
||||
h: 104
|
||||
- id: '93'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1106
|
||||
y: 143
|
||||
w: 63
|
||||
h: 63
|
||||
- id: '94'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1106
|
||||
y: 143
|
||||
w: 62
|
||||
h: 62
|
||||
- id: '95'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1106
|
||||
y: 143
|
||||
w: 63
|
||||
h: 63
|
||||
- id: '16'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 49
|
||||
y: 144
|
||||
w: 60
|
||||
h: 60
|
||||
- id: '47'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 396
|
||||
y: 144
|
||||
w: 60
|
||||
h: 60
|
||||
- id: '84'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 777
|
||||
y: 144
|
||||
w: 60
|
||||
h: 60
|
||||
- id: '103'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1107
|
||||
y: 144
|
||||
w: 60
|
||||
h: 30
|
||||
- id: '20'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 59
|
||||
y: 159
|
||||
w: 40
|
||||
h: 40
|
||||
- id: '51'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 406
|
||||
y: 159
|
||||
w: 40
|
||||
h: 40
|
||||
- id: '88'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 787
|
||||
y: 159
|
||||
w: 40
|
||||
h: 40
|
||||
- id: '101'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1123
|
||||
y: 160
|
||||
w: 31
|
||||
h: 44
|
||||
- id: '193'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 205
|
||||
y: 176
|
||||
w: 182
|
||||
h: 51
|
||||
- id: '21'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 42
|
||||
y: 210
|
||||
w: 170
|
||||
h: 54
|
||||
- id: '52'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 389
|
||||
y: 210
|
||||
w: 159
|
||||
h: 54
|
||||
- id: '89'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 770
|
||||
y: 210
|
||||
w: 135
|
||||
h: 37
|
||||
- id: '104'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1104
|
||||
y: 210
|
||||
w: 135
|
||||
h: 37
|
||||
- id: '107'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1106
|
||||
y: 268
|
||||
w: 119
|
||||
h: 104
|
||||
- id: '108'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1106
|
||||
y: 268
|
||||
w: 63
|
||||
h: 63
|
||||
- id: '109'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1106
|
||||
y: 268
|
||||
w: 63
|
||||
h: 63
|
||||
- id: '110'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1106
|
||||
y: 268
|
||||
w: 62
|
||||
h: 61
|
||||
- id: '111'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1106
|
||||
y: 268
|
||||
w: 63
|
||||
h: 63
|
||||
- id: '112'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1107
|
||||
y: 269
|
||||
w: 60
|
||||
h: 60
|
||||
- id: '128'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1106
|
||||
y: 335
|
||||
w: 119
|
||||
h: 37
|
||||
- id: '131'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1103
|
||||
y: 394
|
||||
w: 152
|
||||
h: 91
|
||||
- id: '132'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1105
|
||||
y: 394
|
||||
w: 63
|
||||
h: 50
|
||||
- id: '133'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1105
|
||||
y: 394
|
||||
w: 62
|
||||
h: 48
|
||||
- id: '134'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1105
|
||||
y: 394
|
||||
w: 63
|
||||
h: 50
|
||||
- id: '140'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1106
|
||||
y: 395
|
||||
w: 60
|
||||
h: 30
|
||||
- id: '141'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1103
|
||||
y: 448
|
||||
w: 152
|
||||
h: 37
|
||||
- id: '25'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 40
|
||||
y: 456
|
||||
w: 155
|
||||
h: 121
|
||||
- id: '26'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 49
|
||||
y: 456
|
||||
w: 59
|
||||
h: 63
|
||||
- id: '27'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 49
|
||||
y: 456
|
||||
w: 58
|
||||
h: 61
|
||||
- id: '28'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 49
|
||||
y: 456
|
||||
w: 59
|
||||
h: 63
|
||||
- id: '56'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 396
|
||||
y: 456
|
||||
w: 121
|
||||
h: 121
|
||||
- id: '57'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 402
|
||||
y: 456
|
||||
w: 48
|
||||
h: 63
|
||||
- id: '58'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 402
|
||||
y: 456
|
||||
w: 46
|
||||
h: 62
|
||||
- id: '59'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 402
|
||||
y: 456
|
||||
w: 48
|
||||
h: 63
|
||||
- id: '30'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 50
|
||||
y: 457
|
||||
w: 53
|
||||
h: 59
|
||||
- id: '152'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 758
|
||||
y: 459
|
||||
w: 191
|
||||
h: 135
|
||||
- id: '153'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 776
|
||||
y: 459
|
||||
w: 63
|
||||
h: 57
|
||||
- id: '154'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 776
|
||||
y: 459
|
||||
w: 63
|
||||
h: 57
|
||||
- id: '61'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 412
|
||||
y: 469
|
||||
w: 29
|
||||
h: 48
|
||||
- id: '62'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 412
|
||||
y: 469
|
||||
w: 29
|
||||
h: 48
|
||||
- id: '60'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 413
|
||||
y: 470
|
||||
w: 27
|
||||
h: 46
|
||||
- id: '32'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 78
|
||||
y: 489
|
||||
w: 28
|
||||
h: 28
|
||||
- id: '144'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1106
|
||||
y: 500
|
||||
w: 103
|
||||
h: 93
|
||||
- id: '145'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1106
|
||||
y: 500
|
||||
w: 63
|
||||
h: 53
|
||||
- id: '146'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1106
|
||||
y: 500
|
||||
w: 61
|
||||
h: 51
|
||||
- id: '147'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1106
|
||||
y: 500
|
||||
w: 63
|
||||
h: 53
|
||||
- id: '148'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1107
|
||||
y: 500
|
||||
w: 59
|
||||
h: 51
|
||||
- id: '33'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 40
|
||||
y: 523
|
||||
w: 155
|
||||
h: 54
|
||||
- id: '64'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 396
|
||||
y: 523
|
||||
w: 121
|
||||
h: 54
|
||||
- id: '181'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 758
|
||||
y: 523
|
||||
w: 191
|
||||
h: 71
|
||||
- id: '149'
|
||||
type: TODO_identify
|
||||
label: ''
|
||||
x: 1107
|
||||
y: 556
|
||||
w: 101
|
||||
h: 37
|
||||
labels: []
|
||||
connections: []
|
||||