AIDP ノートブックから Oracle AI Lakehouse(大規模データ統合基盤)、Autonomous Data Warehouse(自動運用データウェアハウス)、または Autonomous Transaction Processing(自動運用トランザクション処理システム)に接続します。 ウォレット/パスワードおよびカタログ ID パスの場合は、AIDP の `aidataplatform` Spark フォーマットハンドラを優先的に使用してください(`ORACLE_ALH` / `ORACLE_ATP`)。ただし、IAM(認証・認可管理)の DB トークンを使う場合は、AIDP コネクタが DB トークン認証にまだ対応していないため、標準的な Spark JDBC を直接使用してください。
Connect from an AIDP notebook to Oracle AI Lakehouse (ALH), Autonomous Data Warehouse (ADW), or Autonomous Transaction Processing (ATP). Prefer the AIDP `aidataplatform` Spark format handler for wallet/password and catalog.id paths (`ORACLE_ALH` / `ORACLE_ATP`), but use raw Spark JDBC for IAM DB-token because the AIDP connector does not support DB-token auth yet.
aidp-alh — AIDP aidataplatform 経由での Oracle AI Lakehouse / ADW / ATPこのスキルは、公式 AIDP インジェストコネクターを使用して Oracle Autonomous Database ファミリー全体 をカバーします。
Oracle AI Lakehouse / ADW スタイルの接続には ORACLE_ALH を、ユーザーが ATP を明示的に指定した場合は ORACLE_ATP を使用してください。
ユーザーが ATP または ADW を具体的に指定した場合は、このスキルをそのまま使用し、環境変数プレフィックス(ATP_* / ADW_*)を ALH_* に読み替えて同様の手順で進めてください。
aidp-exacs を使用。aidp-oracle-db を使用。aidataplatform Spark フォーマットハンドラーを備えた AIDP クラスター。ALH_WALLET_CONTENT または ALH_WALLET_PATHALH_TNS、ALH_USER、ALH_PASSWORDALH_SCHEMA、ALH_TABLEALH_CATALOG_IDimport os
from oracle_ai_data_platform_connectors.aidataplatform import (
AIDP_FORMAT, aidataplatform_options,
)
opts = aidataplatform_options(
type=os.environ.get("ALH_CONNECTOR_TYPE", "ORACLE_ALH"), # ATP の場合は ORACLE_ATP を使用
user=os.environ["ALH_USER"],
password=os.environ["ALH_PASSWORD"],
schema=os.environ["ALH_SCHEMA"],
table=os.environ["ALH_TABLE"],
extra={
"wallet.content": os.environ["ALH_WALLET_CONTENT"],
"tns": os.environ["ALH_TNS"],
},
)
df = spark.read.format(AIDP_FORMAT).options(**opts).load()
df.show()
wallet.path を使用した読み込みopts = aidataplatform_options(
type="ORACLE_ALH",
user=os.environ["ALH_USER"],
password=os.environ["ALH_PASSWORD"],
schema=os.environ["ALH_SCHEMA"],
table=os.environ["ALH_TABLE"],
extra={
"wallet.path": os.environ["ALH_WALLET_PATH"], # /Workspace/... または /Volumes/...
"tns": os.environ["ALH_TNS"],
},
)
df = spark.read.format(AIDP_FORMAT).options(**opts).load()
opts["table"] = os.environ["ALH_TARGET_TABLE"]
opts["write.mode"] = os.environ.get("ALH_WRITE_MODE", "APPEND") # CREATE | APPEND | OVERWRITE | MERGE
df.write.format(AIDP_FORMAT).options(**opts).save()
catalog.id)catalog_opts = aidataplatform_options(
type="ORACLE_ALH",
schema=os.environ["ALH_SCHEMA"],
table=os.environ["ALH_TABLE"],
extra={"catalog.id": os.environ["ALH_CATALOG_ID"]},
)
df = spark.read.format(AIDP_FORMAT).options(**catalog_opts).load()
df.write.format(AIDP_FORMAT).options(
**{
"catalog.id": os.environ["ALH_CATALOG_ID"],
"schema": os.environ["ALH_SCHEMA"],
"table": os.environ["ALH_TARGET_TABLE"],
"write.mode": "APPEND",
}
).save()
External catalog のテーブルアクセスでは、3 パート名も使用できます:
df = spark.table(f"{os.environ['ALH_CATALOG_ID']}.{os.environ['ALH_SCHEMA']}.{os.environ['ALH_TABLE']}")
df.write.mode("append").insertInto(
f"{os.environ['ALH_CATALOG_ID']}.{os.environ['ALH_SCHEMA']}.{os.environ['ALH_TARGET_TABLE']}"
)
pushdown_opts = aidataplatform_options(
type="ORACLE_ALH",
user=os.environ["ALH_USER"],
password=os.environ["ALH_PASSWORD"],
extra={
"wallet.content": os.environ["ALH_WALLET_CONTENT"],
"tns": os.environ["ALH_TNS"],
"pushdown.sql": "SELECT * FROM HR.EMPLOYEES WHERE DEPARTMENT_ID = 10",
},
)
df = spark.read.format(AIDP_FORMAT).options(**pushdown_opts).load()
AIDP 組み込みの aidataplatform コネクターは、現時点では IAM DB トークン認証をサポートしていません。
ユーザーが DB トークンを明示的に必要とする場合は、ヘルパーパッケージを使用した生の Spark JDBC を使用してください:
import os
from oracle_ai_data_platform_connectors.auth import generate_db_token
from oracle_ai_data_platform_connectors.auth.dbtoken import refresh_on_executors
from oracle_ai_data_platform_connectors.jdbc import (
build_oracle_jdbc_url, spark_jdbc_options_dbtoken,
)
token_dir = generate_db_token(
compartment_ocid=os.environ["ALH_COMPARTMENT_OCID"],
target_dir="/tmp/dbcred_alh",
)
url = build_oracle_jdbc_url(
tns_alias=os.environ["ALH_TNS"],
tns_admin=os.environ["ALH_WALLET_DIR"], # /tmp 以下に展開したウォレットディレクトリ
)
opts = spark_jdbc_options_dbtoken(url=url, token_dir=token_dir)
df = (
spark.read.format("jdbc")
.options(**opts)
.option("dbtable", f"{os.environ['ALH_SCHEMA']}.{os.environ['ALH_TABLE']}")
.load()
)
df.show()
# 長時間ジョブの場合、パーティション処理の前にエグゼキューター上で DB トークンをリフレッシュする。
refresh = refresh_on_executors(spark, os.environ["ALH_COMPARTMENT_OCID"], token_dir)
catalog.id を優先して使用してください。
ホスト情報・ウォレット・認証情報を生成されたノートブックから切り離すことができます。pushdown.sql を優先してください。
自動プッシュダウンで十分な場合は DataFrame の .select(...).filter(...).limit(...) を使用してください。wallet.content または wallet.path を使用してください。
生の Spark JDBC へのフォールバックを意図する場合を除き、/tmp にウォレットを展開しないでください。aidataplatform が未対応であるため、意図的に生の JDBC へフォールバックする主なケースです。ORACLE_ALH と ORACLE_ATP は別々のコネクタータイプのリテラルです。
ATP のサンプルをそのまま適用する場合は ORACLE_ATP を使用してください。InstancePrincipalsSecurityTokenSigner() を使用しないでください。Claude context/AIDP/AIDP Context/AIDP/aidp-notebook-authentication.mdaidp-alh — Oracle AI Lakehouse / ADW / ATP via AIDP aidataplatformThis skill covers the entire Oracle Autonomous Database family using the official AIDP ingestion connectors. Use ORACLE_ALH for Oracle AI Lakehouse / ADW-style connections and ORACLE_ATP when the user specifically wants ATP.
If the user names ATP or ADW specifically, just use this skill — substitute the env-var prefix (ATP_* / ADW_*) for ALH_* and proceed identically.
aidp-exacs.aidp-oracle-db.aidataplatform Spark format handler.ALH_WALLET_CONTENT or ALH_WALLET_PATHALH_TNS, ALH_USER, ALH_PASSWORDALH_SCHEMA, ALH_TABLEALH_CATALOG_IDimport os
from oracle_ai_data_platform_connectors.aidataplatform import (
AIDP_FORMAT, aidataplatform_options,
)
opts = aidataplatform_options(
type=os.environ.get("ALH_CONNECTOR_TYPE", "ORACLE_ALH"), # use ORACLE_ATP for ATP
user=os.environ["ALH_USER"],
password=os.environ["ALH_PASSWORD"],
schema=os.environ["ALH_SCHEMA"],
table=os.environ["ALH_TABLE"],
extra={
"wallet.content": os.environ["ALH_WALLET_CONTENT"],
"tns": os.environ["ALH_TNS"],
},
)
df = spark.read.format(AIDP_FORMAT).options(**opts).load()
df.show()
wallet.pathopts = aidataplatform_options(
type="ORACLE_ALH",
user=os.environ["ALH_USER"],
password=os.environ["ALH_PASSWORD"],
schema=os.environ["ALH_SCHEMA"],
table=os.environ["ALH_TABLE"],
extra={
"wallet.path": os.environ["ALH_WALLET_PATH"], # /Workspace/... or /Volumes/...
"tns": os.environ["ALH_TNS"],
},
)
df = spark.read.format(AIDP_FORMAT).options(**opts).load()
opts["table"] = os.environ["ALH_TARGET_TABLE"]
opts["write.mode"] = os.environ.get("ALH_WRITE_MODE", "APPEND") # CREATE | APPEND | OVERWRITE | MERGE
df.write.format(AIDP_FORMAT).options(**opts).save()
catalog.id)catalog_opts = aidataplatform_options(
type="ORACLE_ALH",
schema=os.environ["ALH_SCHEMA"],
table=os.environ["ALH_TABLE"],
extra={"catalog.id": os.environ["ALH_CATALOG_ID"]},
)
df = spark.read.format(AIDP_FORMAT).options(**catalog_opts).load()
df.write.format(AIDP_FORMAT).options(
**{
"catalog.id": os.environ["ALH_CATALOG_ID"],
"schema": os.environ["ALH_SCHEMA"],
"table": os.environ["ALH_TARGET_TABLE"],
"write.mode": "APPEND",
}
).save()
For external-catalog table access, three-part names are also supported:
df = spark.table(f"{os.environ['ALH_CATALOG_ID']}.{os.environ['ALH_SCHEMA']}.{os.environ['ALH_TABLE']}")
df.write.mode("append").insertInto(
f"{os.environ['ALH_CATALOG_ID']}.{os.environ['ALH_SCHEMA']}.{os.environ['ALH_TARGET_TABLE']}"
)
pushdown_opts = aidataplatform_options(
type="ORACLE_ALH",
user=os.environ["ALH_USER"],
password=os.environ["ALH_PASSWORD"],
extra={
"wallet.content": os.environ["ALH_WALLET_CONTENT"],
"tns": os.environ["ALH_TNS"],
"pushdown.sql": "SELECT * FROM HR.EMPLOYEES WHERE DEPARTMENT_ID = 10",
},
)
df = spark.read.format(AIDP_FORMAT).options(**pushdown_opts).load()
AIDP's built-in aidataplatform connector does not support IAM DB-token auth yet. If the user explicitly needs DB-token, use raw Spark JDBC with the helper package:
import os
from oracle_ai_data_platform_connectors.auth import generate_db_token
from oracle_ai_data_platform_connectors.auth.dbtoken import refresh_on_executors
from oracle_ai_data_platform_connectors.jdbc import (
build_oracle_jdbc_url, spark_jdbc_options_dbtoken,
)
token_dir = generate_db_token(
compartment_ocid=os.environ["ALH_COMPARTMENT_OCID"],
target_dir="/tmp/dbcred_alh",
)
url = build_oracle_jdbc_url(
tns_alias=os.environ["ALH_TNS"],
tns_admin=os.environ["ALH_WALLET_DIR"], # extracted wallet directory under /tmp
)
opts = spark_jdbc_options_dbtoken(url=url, token_dir=token_dir)
df = (
spark.read.format("jdbc")
.options(**opts)
.option("dbtable", f"{os.environ['ALH_SCHEMA']}.{os.environ['ALH_TABLE']}")
.load()
)
df.show()
# For long-running jobs, refresh the DB token on executors before partition work.
refresh = refresh_on_executors(spark, os.environ["ALH_COMPARTMENT_OCID"], token_dir)
catalog.id when the connection already exists in AIDP; it keeps host, wallet, and credentials out of generated notebooks.pushdown.sql for precise Oracle SQL semantics, or DataFrame .select(...).filter(...).limit(...) when automatic pushdown is enough.wallet.content or wallet.path with the built-in connector; do not materialize wallets into /tmp unless you are intentionally falling back to raw Spark JDBC.aidataplatform does not support it yet.ORACLE_ALH and ORACLE_ATP are separate connector type literals. Use ORACLE_ATP when adapting the ATP sample exactly.InstancePrincipalsSecurityTokenSigner().Claude context/AIDP/AIDP Context/AIDP/aidp-notebook-authentication.md原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。