Compare commits
2 Commits
automation
...
2491c38d4b
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2491c38d4b | ||
| d9b1bb52a4 |
@@ -100,20 +100,28 @@ jobs:
|
|||||||
| sed "s#https://#https://sku-refresh-bot:${GITEA_TOKEN}@#")
|
| sed "s#https://#https://sku-refresh-bot:${GITEA_TOKEN}@#")
|
||||||
git push "$REMOTE" "$BRANCH"
|
git push "$REMOTE" "$BRANCH"
|
||||||
|
|
||||||
# Open PR via Gitea API
|
# Open PR via Gitea API (fail-fast + log response)
|
||||||
OWNER=$(echo "$GITEA_REPO" | cut -d/ -f1)
|
OWNER=$(echo "$GITEA_REPO" | cut -d/ -f1)
|
||||||
REPO=$(echo "$GITEA_REPO" | cut -d/ -f2)
|
REPO=$(echo "$GITEA_REPO" | cut -d/ -f2)
|
||||||
curl -sS -X POST \
|
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 "Authorization: token ${GITEA_TOKEN}" \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/json" \
|
||||||
"${GITEA_SERVER}/api/v1/repos/${OWNER}/${REPO}/pulls" \
|
"${GITEA_SERVER}/api/v1/repos/${OWNER}/${REPO}/pulls" \
|
||||||
-d "$(jq -n \
|
-d "$PAYLOAD")
|
||||||
--arg title "chore(pricing): monthly SKU refresh ${DATE}" \
|
echo "$RESPONSE"
|
||||||
--arg head "$BRANCH" \
|
STATUS=$(echo "$RESPONSE" | grep -oE 'HTTP_STATUS=[0-9]+' | cut -d= -f2)
|
||||||
--arg base "main" \
|
if [ "$STATUS" != "201" ]; then
|
||||||
--arg body "$(printf 'Automated refresh — [refresh log artifact](../../actions).\n\n```\n%s\n```' \
|
echo "::error::PR creation failed with HTTP $STATUS"
|
||||||
"$(tail -40 /tmp/refresh.log)")" \
|
exit 1
|
||||||
'{title:$title, head:$head, base:$base, body:$body}')"
|
fi
|
||||||
|
|
||||||
- name: Open issue for new SKUs
|
- name: Open issue for new SKUs
|
||||||
if: steps.discover.outputs.new_count != '0'
|
if: steps.discover.outputs.new_count != '0'
|
||||||
@@ -130,14 +138,22 @@ jobs:
|
|||||||
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' \
|
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)")
|
"$NEW_COUNT" "$DATE" "$(cat /tmp/discover.log)")
|
||||||
|
|
||||||
curl -sS -X POST \
|
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 "Authorization: token ${GITEA_TOKEN}" \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/json" \
|
||||||
"${GITEA_SERVER}/api/v1/repos/${OWNER}/${REPO}/issues" \
|
"${GITEA_SERVER}/api/v1/repos/${OWNER}/${REPO}/issues" \
|
||||||
-d "$(jq -n \
|
-d "$PAYLOAD")
|
||||||
--arg title "SKU catalog: ${NEW_COUNT} new SKUs to review (${DATE})" \
|
echo "$RESPONSE"
|
||||||
--arg body "$BODY" \
|
STATUS=$(echo "$RESPONSE" | grep -oE 'HTTP_STATUS=[0-9]+' | cut -d= -f2)
|
||||||
'{title:$title, body:$body, labels:["automation","sku-catalog"]}')"
|
if [ "$STATUS" != "201" ]; then
|
||||||
|
echo "::error::Issue creation failed with HTTP $STATUS"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
- name: Summary
|
- name: Summary
|
||||||
if: always()
|
if: always()
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
# =============================================================================
|
# =============================================================================
|
||||||
|
|
||||||
---
|
---
|
||||||
last_verified: "2026-03-14"
|
last_verified: "2026-04-24"
|
||||||
maintained_by: "Field Architecture Team"
|
maintained_by: "Field Architecture Team"
|
||||||
|
|
||||||
versions:
|
versions:
|
||||||
@@ -338,6 +338,69 @@ features:
|
|||||||
adb_s:
|
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." }
|
"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
|
# HOW TO ADD A NEW FEATURE
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
last_verified: 2026-03-14
|
last_verified: 2026-04-24
|
||||||
description: |
|
description: |
|
||||||
Real-world limits that differ from official documentation or are not
|
Real-world limits that differ from official documentation or are not
|
||||||
well-documented. These come from actual deployment experience.
|
well-documented. These come from actual deployment experience.
|
||||||
@@ -75,3 +75,15 @@ limits:
|
|||||||
request limit increase via support ticket. Increases are usually
|
request limit increase via support ticket. Increases are usually
|
||||||
approved within 1-2 business days.
|
approved within 1-2 business days.
|
||||||
recommendation: "Request limit increases early in project planning"
|
recommendation: "Request limit increases early in project planning"
|
||||||
|
|
||||||
|
- service: ADB-S Lakehouse
|
||||||
|
limit: "Apache Iceberg interoperability"
|
||||||
|
documented: "Lakehouse can query Iceberg tables"
|
||||||
|
real_world: |
|
||||||
|
The capability is useful, but not transparent parity with native
|
||||||
|
Iceberg engines. Current documented constraints include: no partitioned
|
||||||
|
Iceberg tables, no credential vending, no query-time time travel, and
|
||||||
|
some schema/snapshot changes requiring external table recreation.
|
||||||
|
Architects should treat this as selective interoperability, not a
|
||||||
|
drop-in replacement for every Iceberg pattern already in use.
|
||||||
|
recommendation: "Validate exact Iceberg table design and metadata workflow before positioning ADB Lakehouse as a universal Iceberg endpoint"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
last_verified: '2026-04-24'
|
last_verified: '2026-03-27'
|
||||||
source: Oracle OCI Price List + internal BOM reference v1.73
|
source: Oracle OCI Price List + internal BOM reference v1.73
|
||||||
description: 'OCI SKU catalog for BOM generation. ~160 SKUs across 14+ categories. Prices are approximate and for estimation
|
description: 'OCI SKU catalog for BOM generation. ~160 SKUs across 14+ categories. Prices are approximate and for estimation
|
||||||
only. Always verify against https://www.oracle.com/cloud/pricing/
|
only. Always verify against https://www.oracle.com/cloud/pricing/
|
||||||
@@ -563,7 +563,7 @@ categories:
|
|||||||
- sku: B95714
|
- sku: B95714
|
||||||
product: Oracle Autonomous AI Transaction Processing - Dedicated - ECPU
|
product: Oracle Autonomous AI Transaction Processing - Dedicated - ECPU
|
||||||
metric: ECPU Per Hour
|
metric: ECPU Per Hour
|
||||||
list_price_usd: 0.0807
|
list_price_usd: 0.336
|
||||||
default_hours_units: 730
|
default_hours_units: 730
|
||||||
billing_type: hourly
|
billing_type: hourly
|
||||||
- sku: B95715
|
- sku: B95715
|
||||||
@@ -1301,6 +1301,12 @@ categories:
|
|||||||
list_price_usd: 0.015
|
list_price_usd: 0.015
|
||||||
default_hours_units: 730
|
default_hours_units: 730
|
||||||
billing_type: hourly
|
billing_type: hourly
|
||||||
|
# OCI Data Science and Data Flow do not have dedicated SKUs in the Oracle
|
||||||
|
# public pricing API — they are billed via the underlying Compute + Block/Object
|
||||||
|
# Storage consumed by notebook sessions, model-deployment endpoints, and Spark
|
||||||
|
# runs. The entries below are placeholder estimates (VM.Standard3.Flex OCPU rate)
|
||||||
|
# so BOMs can include them as line items; always confirm against the customer's
|
||||||
|
# actual shape + usage before quoting.
|
||||||
- sku: EST-DS-NOTEBOOK
|
- sku: EST-DS-NOTEBOOK
|
||||||
product: '[ESTIMATE] OCI Data Science - Notebook Session (billed via underlying VM.Standard compute OCPU)'
|
product: '[ESTIMATE] OCI Data Science - Notebook Session (billed via underlying VM.Standard compute OCPU)'
|
||||||
metric: OCPU Per Hour
|
metric: OCPU Per Hour
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
# OCI Service: Autonomous Database Serverless (ADB-S)
|
# OCI Service: Autonomous Database Serverless (ADB-S)
|
||||||
# Last verified: 2026-03
|
# Last verified: 2026-04
|
||||||
|
|
||||||
service:
|
service:
|
||||||
name: "Autonomous Database Serverless (ADB-S)"
|
name: "Autonomous AI Database Serverless (ADB-S)"
|
||||||
id: adb_serverless
|
id: adb_serverless
|
||||||
category: database
|
category: database
|
||||||
color: "#AA643B"
|
color: "#AA643B"
|
||||||
@@ -35,13 +35,17 @@ limits:
|
|||||||
|
|
||||||
variants:
|
variants:
|
||||||
- id: adb_s
|
- id: adb_s
|
||||||
name: "Autonomous Database Serverless (ADB-S)"
|
name: "Autonomous AI Database Serverless (ADB-S)"
|
||||||
description: "Shared Exadata infrastructure, fully managed, auto-scaling"
|
description: "Shared Exadata infrastructure, fully managed, auto-scaling"
|
||||||
workload_types:
|
workload_types:
|
||||||
- ATP (Transaction Processing / Mixed)
|
- "Autonomous AI Transaction Processing (TP) - app-facing OLTP and mixed workloads on local database-managed data"
|
||||||
- ADW (Data Warehouse / Analytics)
|
- "Autonomous AI Lakehouse - SQL across database-local plus external/open-format data (Object Storage, Iceberg, federated catalogs)"
|
||||||
- AJD (JSON Document Store)
|
- "Autonomous JSON Database - document-centric JSON development pattern"
|
||||||
- APEX (Low-code application development)
|
- "APEX Application Development - low-code application development"
|
||||||
|
workload_notes:
|
||||||
|
- "Since October 2025 Oracle documentation uses Autonomous AI Database naming for workload types."
|
||||||
|
- "Lakehouse is not a separate database engine; it is a workload specialization with an explicit external-data plane."
|
||||||
|
- "Lakehouse now also exposes TP and TPURGENT predefined service names, so do not assume warehouse-only service semantics."
|
||||||
|
|
||||||
- id: adb_d
|
- id: adb_d
|
||||||
name: "Autonomous Database on Dedicated Exadata (ADB-D)"
|
name: "Autonomous Database on Dedicated Exadata (ADB-D)"
|
||||||
@@ -59,6 +63,7 @@ when_to_use:
|
|||||||
- "JSON document workloads (AJD)"
|
- "JSON document workloads (AJD)"
|
||||||
- "Rapid APEX application development"
|
- "Rapid APEX application development"
|
||||||
- "Data warehouse / analytics with auto-scaling"
|
- "Data warehouse / analytics with auto-scaling"
|
||||||
|
- "Need Lakehouse-style SQL over Object Storage / Apache Iceberg without copying all data into the database"
|
||||||
|
|
||||||
when_not_to_use:
|
when_not_to_use:
|
||||||
- "Non-Oracle database engines (use MySQL HeatWave, PostgreSQL, NoSQL)"
|
- "Non-Oracle database engines (use MySQL HeatWave, PostgreSQL, NoSQL)"
|
||||||
@@ -66,6 +71,7 @@ when_not_to_use:
|
|||||||
- "Need RAC but not ADB-D budget → use ExaCS or DBCS VM"
|
- "Need RAC but not ADB-D budget → use ExaCS or DBCS VM"
|
||||||
- "Workloads requiring specific DB patches not yet in ADB"
|
- "Workloads requiring specific DB patches not yet in ADB"
|
||||||
- "Extreme IOPS requirements > what Exadata provides"
|
- "Extreme IOPS requirements > what Exadata provides"
|
||||||
|
- "Choose TP workload if the dominant path is OLTP write-heavy access on database-local data and external/open-table access is peripheral"
|
||||||
|
|
||||||
sizing:
|
sizing:
|
||||||
adb_s:
|
adb_s:
|
||||||
@@ -114,6 +120,22 @@ gotchas:
|
|||||||
severity: LOW
|
severity: LOW
|
||||||
description: "ADB now defaults to Oracle 26ai in all commercial regions. 19c is legacy. Verify customer version requirements."
|
description: "ADB now defaults to Oracle 26ai in all commercial regions. 19c is legacy. Verify customer version requirements."
|
||||||
|
|
||||||
|
- id: adb_lakehouse_not_separate_engine
|
||||||
|
severity: MEDIUM
|
||||||
|
description: "Lakehouse is a workload specialization inside ADB Serverless, not a separate database engine or separate managed service."
|
||||||
|
|
||||||
|
- id: adb_lakehouse_external_data_plane
|
||||||
|
severity: MEDIUM
|
||||||
|
description: "Lakehouse value appears when Object Storage / Iceberg / open-format access is structural. If the dataset is fully local and OLTP-dominant, TP is usually the cleaner fit."
|
||||||
|
|
||||||
|
- id: adb_lakehouse_iceberg_limits
|
||||||
|
severity: HIGH
|
||||||
|
description: "Current Iceberg support has material caveats: no partitioned Iceberg tables, no credential vending, no query-time time travel, and some snapshot/schema changes require recreating the external table."
|
||||||
|
|
||||||
|
- id: adb_lakehouse_tp_services
|
||||||
|
severity: LOW
|
||||||
|
description: "Lakehouse now supports TP and TPURGENT predefined service names. Do not model it as ADW-style query-only connectivity."
|
||||||
|
|
||||||
implied_dependencies:
|
implied_dependencies:
|
||||||
- service: service_gateway
|
- service: service_gateway
|
||||||
reason: "Required for automated backups to Object Storage"
|
reason: "Required for automated backups to Object Storage"
|
||||||
@@ -144,8 +166,16 @@ references:
|
|||||||
documentation: "https://docs.oracle.com/en/cloud/paas/autonomous-database/"
|
documentation: "https://docs.oracle.com/en/cloud/paas/autonomous-database/"
|
||||||
pricing: "https://www.oracle.com/autonomous-database/pricing/"
|
pricing: "https://www.oracle.com/autonomous-database/pricing/"
|
||||||
sizing_guide: "https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsa/autonomous-database-cpu.html"
|
sizing_guide: "https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsa/autonomous-database-cpu.html"
|
||||||
|
workload_types: "https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsa/about-autonomous-database-workloads.html"
|
||||||
|
lakehouse: "https://docs.oracle.com/en-us/iaas/autonomous-database-serverless/doc/lake-lakehouse.html"
|
||||||
|
iceberg: "https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsa/query-external-data-apache-iceberg.html"
|
||||||
|
lakehouse_tp_services: "https://docs.oracle.com/iaas/releasenotes/autonomous-database-serverless/2025-10-tp-tpurgent-predefined-db-service-names-for-lakehouse-workload.htm"
|
||||||
|
data_lake_accelerator: "https://docs.oracle.com/iaas/releasenotes/autonomous-database-serverless/2025-11-data-lake-accelerator.htm"
|
||||||
|
|
||||||
changelog:
|
changelog:
|
||||||
|
- date: "2026-04-24"
|
||||||
|
contributor: { name: "Codex", team: "Field Architecture" }
|
||||||
|
change: "Updated workload taxonomy to Autonomous AI naming; added Lakehouse selection guidance, Iceberg caveats, TP/TPURGENT note, and official references"
|
||||||
- date: "2026-03-14"
|
- date: "2026-03-14"
|
||||||
contributor: { name: "Diego Cabrera", team: "Field Architecture" }
|
contributor: { name: "Diego Cabrera", team: "Field Architecture" }
|
||||||
change: "Initial creation with sizing rules, gotchas, competitive notes, HA/DR options"
|
change: "Initial creation with sizing rules, gotchas, competitive notes, HA/DR options"
|
||||||
|
|||||||
Reference in New Issue
Block a user