• Projects
  • Service
  • About
  • branding.bz
  • Podcast
  • Tips
  • FAQ
  • Recruit
  • Download
  • Contact
  • branding.bz(ブランド構築SaaS)
  • DESIGN NOW(デザインメディア)
  • X
  • LinkedIn
  • Spotify
  • Facebook

213-0011 神奈川県川崎市高津区久本3-6-7-303

© 2026 ID INC. All rights reserved

claude-skills/スキル
SKILLOfficialdevelopment

aidp-exacs

プラグイン
oracle-ai-data-platform-workbench-spark-connectors
ソース
GitHub で見る ↗
説明

Oracle Exadata Cloud Service(ExaCS)のデータを読み書きします AIDP ノートブックから AIDP の `aidataplatform` Spark 形式ハンドラー経由で Oracle Exadata Cloud Service(ExaCS)に接続し、データの読み書きができます。 **次のような場合に使用:** - ユーザーが ExaCS、Exadata、Exadata Cloud、RAC SCAN リスナー(Oracle データベースのアクセス仲介機能)、またはプライベート環境の Oracle データベースについて言及した場合 **推奨事項:** 公式の `ORACLE_EXADATA` コネクタサンプルを使用してください。このサンプルには、catalog.id(カタログ識別子)、pushdown.sql(クエリーの最適化処理)、およびコネクタの書き込みモード(データ保存方法の設定)が含まれています。

原文を表示

Read or write Oracle Exadata Cloud Service (ExaCS) from an AIDP notebook via the AIDP `aidataplatform` Spark format handler. Use when the user mentions ExaCS, Exadata, Exadata Cloud, RAC SCAN listener, or has a private-subnet Oracle DB. Prefer the official `ORACLE_EXADATA` connector sample with catalog.id, pushdown.sql, and connector write modes.

ユースケース
  • ExaCS のデータを読み込むとき
  • ExaCS にデータを書き込むとき
  • Oracle データベースへ接続するとき
  • AIDP ノートブックから Spark でデータ操作するとき
本文(日本語訳)

aidp-exacs — AIDP aidataplatform 経由の Oracle Exadata Cloud Service

使用すべき場合

  • AIDPノートブックからExaCS PDBを読み書きしたい場合
  • 次のキーワードが出てきた場合:「ExaCS」「Exadata Cloud」「RAC SCANリスナー」「プライベートサブネットのOracle DB」

使用すべきでない場合

  • Oracle AI Lakehouse / ADW / ATP(Autonomous DBファミリー)が対象の場合 → aidp-alh を使用してください。

インフラの前提条件(重要)

ExaCSはカスタマーのプライベートサブネット内に存在し、AIDPは独自のVCN上で動作します。 JDBCが機能するには、以下の2点が事前に設定されている必要があります。 どちらもノートブックから設定することはできません。

  1. VCNルーティング AIDP→ExaCS(PAGW経由のPE/RCE) プライベート接続なしで作成されたWorkspaceは、カスタマーDBに到達できません。

  2. Workspaceの scanDetails — RACクラスター必須の設定 この設定がないと、SCANリスナーがノードローカルIP(10.x.x.x)にリダイレクトしても、executorから到達できず ORA-17820 が発生します。 AIDP WorkspaceのREST APIまたはコンソールから一度だけ設定してください:

    networkConfigurationDetails: {
      "subnetId": "ocid1.subnet.oc1.iad.aaaa...",
      "scanDetails": [
        {"fqdn": "<scan-host>.clientsubnet.dns.oraclevcn.com", "port": "1521"}
      ]
    }
    

    これにより PE-ARCH 3c(RCE with SCAN Proxy) が有効になります。 PAGWがRACノードのリダイレクトIPをClass-E NATアドレスに変換し、 JDBCのリダイレクト先が正しいトンネルに到達できるようになります。

JDBCエラーを追う前に、ノートブックから接続の疎通確認を行ってください:

import socket, ipaddress
ip = socket.gethostbyname(SCAN_HOST)            # Class-E (255.x) またはRFC-1918 — パブリックIPであってはならない
with socket.create_connection((SCAN_HOST, 1521), timeout=15): pass

読み込み(インラインコネクターオプション)

まず公式のAIDP Exadataコネクターを使用してください:

import os
from oracle_ai_data_platform_connectors.aidataplatform import (
    AIDP_FORMAT, aidataplatform_options,
)

opts = aidataplatform_options(
    type="ORACLE_EXADATA",
    host=os.environ["EXACS_HOST"],
    port=int(os.environ.get("EXACS_PORT", "1521")),
    database_name=os.environ["EXACS_DATABASE_NAME"],
    user=os.environ["EXACS_USER"],
    password=os.environ["EXACS_PASSWORD"],
    schema=os.environ["EXACS_SCHEMA"],
    table=os.environ["EXACS_TABLE"],
)
df = spark.read.format(AIDP_FORMAT).options(**opts).load()
df.show()

書き込み

opts["table"] = os.environ["EXACS_TARGET_TABLE"]
opts["write.mode"] = os.environ.get("EXACS_WRITE_MODE", "APPEND")  # CREATE | APPEND | OVERWRITE | MERGE
df.write.format(AIDP_FORMAT).options(**opts).save()

catalog.id の使用

catalog_opts = aidataplatform_options(
    type="ORACLE_EXADATA",
    schema=os.environ["EXACS_SCHEMA"],
    table=os.environ["EXACS_TABLE"],
    extra={"catalog.id": os.environ["EXACS_CATALOG_ID"]},
)
df = spark.read.format(AIDP_FORMAT).options(**catalog_opts).load()

プッシュダウン

pushdown_opts = aidataplatform_options(
    type="ORACLE_EXADATA",
    host=os.environ["EXACS_HOST"],
    port=int(os.environ.get("EXACS_PORT", "1521")),
    database_name=os.environ["EXACS_DATABASE_NAME"],
    user=os.environ["EXACS_USER"],
    password=os.environ["EXACS_PASSWORD"],
    extra={
        "pushdown.sql": "SELECT * FROM HR.EMPLOYEES WHERE DEPARTMENT_ID = 10",
    },
)
df = spark.read.format(AIDP_FORMAT).options(**pushdown_opts).load()

注意事項(Gotchas)

  • scanDetails は ORA-17820 の原因第1位です。 JDBCのURLがRACクラスターのSCANリスナーを指しているのに、WorkspaceにSCANのFQDNが登録されていないと、リダイレクトがサイレントに失敗します。 上記「インフラの前提条件(重要)」を参照してください。

  • ポート1521はサーバーサイドNNEによって暗号化されていることが多いです。 ORACLE_EXADATA コネクターを優先的に使用してください。 生のJDBCへのフォールバックは、組み込みコネクターでは表現できない診断目的に限定してください。

  • AIDPノートブックからはIMDSにアクセスできません。 OCI Computeの他の場所では動作するInstance Principal / Resource Principalのフローは、ここでは機能しません。 OCI SDKの呼び出しが必要な場合は、APIキー+インラインPEMを使用してください。

  • ウォレット+TCPSまたはIAM DB-TokenをAutonomous DBに対して使用する必要がある場合は、 代わりに aidp-alh スキルを使用してください。


参照

  • ヘルパー: scripts/oracle_ai_data_platform_connectors/aidataplatform.py
  • 公式Exadataサンプル: data-engineering/ingestion/Read_Write_Oracle_Ecosystem_Connectors/Oracle_Exadata.ipynb
  • AIDPプライベートエンドポイント設計(PE-ARCH 1a〜3c、SCAN Proxy): Workspaceメモリ oci_private_endpoint_design.md を参照
原文(English)を表示

aidp-exacs — Oracle Exadata Cloud Service via AIDP aidataplatform

When to use

  • User wants to read or write an ExaCS PDB from an AIDP notebook.
  • User mentions: "ExaCS", "Exadata Cloud", "RAC SCAN listener", "private-subnet Oracle DB".

When NOT to use

  • For Oracle AI Lakehouse / ADW / ATP (Autonomous DB family) → use aidp-alh.

Critical infrastructure prerequisites

ExaCS sits in a customer private subnet; AIDP runs in its own VCN. Two pieces must be in place before any JDBC will work — neither is configurable from a notebook:

  1. VCN routing AIDP→ExaCS (PE/RCE through PAGW). Workspaces created without private connectivity can't reach customer DBs.

  2. Workspace scanDetails — required for RAC clusters. Without it, the SCAN listener's redirect to a node-local IP (10.x.x.x) is unreachable from the executor → ORA-17820. Configure once via the AIDP workspace REST API or console:

    networkConfigurationDetails: {
      "subnetId": "ocid1.subnet.oc1.iad.aaaa...",
      "scanDetails": [
        {"fqdn": "<scan-host>.clientsubnet.dns.oraclevcn.com", "port": "1521"}
      ]
    }
    

    This activates PE-ARCH 3c (RCE with SCAN Proxy) — the PAGW translates RAC node-redirect IPs to Class-E NAT addresses so the JDBC redirect lands on the right tunnel.

Smoke-test connectivity from a notebook before chasing JDBC errors:

import socket, ipaddress
ip = socket.gethostbyname(SCAN_HOST)            # should be Class-E (255.x) or RFC-1918 — never public
with socket.create_connection((SCAN_HOST, 1521), timeout=15): pass

Read (inline connector options)

Use the official AIDP Exadata connector first:

import os
from oracle_ai_data_platform_connectors.aidataplatform import (
    AIDP_FORMAT, aidataplatform_options,
)

opts = aidataplatform_options(
    type="ORACLE_EXADATA",
    host=os.environ["EXACS_HOST"],
    port=int(os.environ.get("EXACS_PORT", "1521")),
    database_name=os.environ["EXACS_DATABASE_NAME"],
    user=os.environ["EXACS_USER"],
    password=os.environ["EXACS_PASSWORD"],
    schema=os.environ["EXACS_SCHEMA"],
    table=os.environ["EXACS_TABLE"],
)
df = spark.read.format(AIDP_FORMAT).options(**opts).load()
df.show()

Write

opts["table"] = os.environ["EXACS_TARGET_TABLE"]
opts["write.mode"] = os.environ.get("EXACS_WRITE_MODE", "APPEND")  # CREATE | APPEND | OVERWRITE | MERGE
df.write.format(AIDP_FORMAT).options(**opts).save()

Use catalog.id

catalog_opts = aidataplatform_options(
    type="ORACLE_EXADATA",
    schema=os.environ["EXACS_SCHEMA"],
    table=os.environ["EXACS_TABLE"],
    extra={"catalog.id": os.environ["EXACS_CATALOG_ID"]},
)
df = spark.read.format(AIDP_FORMAT).options(**catalog_opts).load()

Pushdown

pushdown_opts = aidataplatform_options(
    type="ORACLE_EXADATA",
    host=os.environ["EXACS_HOST"],
    port=int(os.environ.get("EXACS_PORT", "1521")),
    database_name=os.environ["EXACS_DATABASE_NAME"],
    user=os.environ["EXACS_USER"],
    password=os.environ["EXACS_PASSWORD"],
    extra={
        "pushdown.sql": "SELECT * FROM HR.EMPLOYEES WHERE DEPARTMENT_ID = 10",
    },
)
df = spark.read.format(AIDP_FORMAT).options(**pushdown_opts).load()

Gotchas

  • scanDetails is the #1 cause of ORA-17820. If the JDBC URL points at the SCAN listener on a RAC cluster but the workspace doesn't have the SCAN FQDN registered, the redirect fails silently. See "Critical infrastructure prerequisites" above.
  • Port 1521 is often encrypted by server-side NNE. The ORACLE_EXADATA connector is the preferred path; fall back to raw JDBC only for diagnostics that the built-in connector cannot express.
  • No IMDS access from AIDP notebooks — Instance Principal / Resource Principal flows that work elsewhere on OCI compute fail here. Use API Key + inline PEM if you need OCI SDK calls.
  • If you need wallet+TCPS or IAM DB-Token to an Autonomous DB, use the aidp-alh skill instead.

References

  • Helper: scripts/oracle_ai_data_platform_connectors/aidataplatform.py
  • Official Exadata sample: data-engineering/ingestion/Read_Write_Oracle_Ecosystem_Connectors/Oracle_Exadata.ipynb
  • AIDP private endpoint design (PE-ARCH 1a–3c, SCAN Proxy): see workspace memory oci_private_endpoint_design.md.

原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。