1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OCI Autonomous AI Database から Iceberg REST テーブル(Polaris)を作成する

1
Last updated at Posted at 2026-05-11

はじめに

この記事では、Oracle Autonomous AI Database(ADB)、から Snowflake Open Catalog / Polaris を Iceberg REST Catalog としてマウントした上で、ADB 側から DBMS_CATALOG.CREATE_ICEBERG_TABLE を実行して Iceberg テーブルを作成してみます。

構成イメージは次の通りです。

Iceberg テーブルは、Snowflake Open Catalog / Polaris 上の catalog adb_sales_catalog、namespace ADB_NS に登録し、実体となる metadata、manifest、Parquet data files は AWS S3 に保存します。


今回のポイントは、ADB から Snowflake Open Catalog / Polaris を Iceberg REST Catalog としてマウントし、ADB 上から Iceberg table を作成することです。

  • Snowflake Open Catalog は Iceberg catalog として機能し、S3 上の Iceberg metadata、manifest、Parquet data files へ安全にアクセスするための storage configuration を持ちます。

  • ADB では、Iceberg REST Catalog をマウントすると、その catalog 配下の namespace や Iceberg table を ADB 側から扱えるようになります。
    今回の構成では、Snowflake Open Catalog / Polaris 上に作成した catalog adb_sales_catalog を ADB に POLARIS_SALES_CAT としてマウントします。

  • マウントすることで、Open Catalog 上の namespace ADB_NS を ADB から確認することができるようになります。

  • 今回は、 DBMS_CATALOG.CREATE_ICEBERG_TABLE を使って、Open Catalog 上に Iceberg table SALES を作成していきます。

  • 作成した Iceberg table を、ADB から ADB_NS.SALES@POLARIS_SALES_CAT のように参照することができます。

  • ADB からは mounted catalog 名を使って、作成した table を SELECT COUNT(*) FROM ADB_NS.SALES@POLARIS_SALES_CAT;のように参照できます。

なお、今回の手順では、GUI で設定できる部分はなるべく GUI で進めます。ADB では PL/SQL で実行できる設定もありますが、今回はData Studioの画面から操作できる部分は GUI を使います。ただし、ADB の outbound ACL 設定や DBMS_CATALOG.CREATE_ICEBERG_TABLE の実行など、SQL / PL/SQL が必要な部分は Database Actions の SQL Worksheet から実行します。

今回作るもの

この記事では、次の名前でリソースを作成していきます。

種別 名前
S3 bucket adb-iceberg-poc-bucket
S3 region ap-northeast-1
S3 base prefix adb-sales-iceberg/
Open Catalog catalog adb_sales_catalog
Open Catalog namespace ADB_NS
AWS IAM policy for Open Catalog polaris-adb-sales-s3-policy
AWS IAM role for Open Catalog polaris-adb-sales-s3-role
AWS IAM user for ADB adb-sales-s3-user
Open Catalog catalog role ADB_SALES_CATALOG_ROLE
Open Catalog principal role ADB_SALES_PRINCIPAL_ROLE
Open Catalog service connection ADB_SALES_CONN
ADB user ICEBERG_POC
ADB S3 credential S3_SALES_CRED
ADB Polaris OAuth credential POLARIS_SALES_OAUTH
ADB mounted catalog POLARIS_SALES_CAT
Iceberg table SALES

全体の流れ

作業順は次の通りです。

  1. AWS S3 に Iceberg 用の bucket / prefix を用意する
  2. Snowflake Open Catalog が S3 にアクセスするための AWS IAM policy / role を作る
  3. Snowflake Open Catalog で internal catalog を作る
  4. Open Catalog 作成後に AWS IAM role の trust policy を更新する
  5. Snowflake Open Catalog で namespace / role / service connection を作る
  6. ADB が S3 にアクセスするための AWS IAM user / access key を作る
  7. ADB に必要な role / ACL を設定する
  8. ADB に S3 credential と Polaris OAuth credential を作る
  9. ADB から Polaris catalog を mount する
  10. DBMS_CATALOG.CREATE_ICEBERG_TABLE で Iceberg table Sales を作る
  11. ADB / Snowflake Open Catalog / S3 / CloudTrail で確認する

前提

この記事では、次のものは作成済みとします。

  • Oracle Autonomous Database
  • Snowflake Open Catalog / Polaris account
  • AWS account

また、Snowflake Open Catalog account と S3 bucket は同じ AWS region であることを注意してください。Snowflake Open Catalog の S3 catalog では、S3 bucket が Open Catalog account と同じ region にあること、また bucket 名にドットを含めないことが前提として案内されています。

今回は ap-northeast-1リージョンに作成していきます。

1. S3 bucket / prefix を作成する

1-1. S3 bucket を作成する

AWS Console で S3 bucket を作成します。

  • Bucket名:adb-iceberg-poc-bucket

注意点です。

  • bucket 名にドット . を入れない
  • Snowflake Open Catalog account と同じ region に作る
  • 今回は ap-northeast-1、それ以外の設定はデフォルト

1-2. Iceberg 用 prefix を作成する

S3 bucket の中に、検証用 prefix を作ります。

adb-sales-iceberg/

さらに namespace 用に次の prefix も作っておくと分かりやすいです。

adb-sales-iceberg/ADB_NS/

最終的な Iceberg table location は次になります。

s3://adb-iceberg-poc-bucket/adb-sales-iceberg/ADB_NS/SALES/

SALES/ は先に作ってもよいですが、必須ではありません。後で DBMS_CATALOG.CREATE_ICEBERG_TABLElocation として指定します。

2. Snowflake Open Catalog 用の AWS IAM policy を作成する

ここで作る IAM policy は、Snowflake Open Catalog / Polaris が S3 にアクセスするための policy です。後で作る ADB 用の AWS IAM user とは別です。

AWS Console で IAM → Policies → Create policy を開き、JSON に次を入力します。

Policy name: polaris-adb-sales-s3-policy

Policy JSON:こちらをクリックして表示:
Policy JSON: ```json { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListBucketForAdbSalesIceberg", "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:ListBucket", "s3:ListBucketMultipartUploads" ], "Resource": [ "arn:aws:s3:::adb-iceberg-poc-bucket" ], "Condition": { "StringLike": { "s3:prefix": [ "adb-sales-iceberg", "adb-sales-iceberg/*" ] } } }, { "Sid": "AllowObjectAccessForAdbSalesIceberg", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject", "s3:AbortMultipartUpload", "s3:ListMultipartUploadParts" ], "Resource": [ "arn:aws:s3:::adb-iceberg-poc-bucket/adb-sales-iceberg", "arn:aws:s3:::adb-iceberg-poc-bucket/adb-sales-iceberg/*" ] } ] } ```

Iceberg table 作成時には metadata file や manifest file が書き込まれるため、read だけではなく write 系の権限も必要です。

3. Snowflake Open Catalog 用の AWS IAM role を作成する

次に、Snowflake Open Catalog が assume する IAM role を作ります。
AWS Console で IAM → Roles → Create role を開きます。

  • Trusted entity type:

ここでは次を選びます。

Trusted entity type: AWS account
AWS account: This account

この時点では External ID は入れなくて大丈夫です。

S3 用 IAM role は trusted entity type に AWS account を選び、まず This account で作成し、後から Open Catalog の IAM user ARN / External ID を使って trust policy を更新する流れです。

  • Permission policy: 先ほど作成した policy polaris-adb-sales-s3-policy を アタッチ

  • Role name: polaris-adb-sales-s3-role

作成後、Role ARN を控えます。

例:arn:aws:iam::<AWS_ACCOUNT_ID>:role/polaris-adb-sales-s3-role

この Role ARN は、次の Snowflake Open Catalog catalog 作成画面で使います。

4. Snowflake Open Catalog で internal catalog を作成する

Snowflake Open Catalog UI を開きます。Catalogs → + Catalog をクリックします。

入力値は次の通りです。

項目
Name adb_sales_catalog
External OFF
Storage provider S3
PrivateLink OFF
Default base location s3://adb-iceberg-poc-bucket/adb-sales-iceberg/
Additional locations 空欄
S3 role ARN arn:aws:iam::<AWS_ACCOUNT_ID>:role/polaris-adb-sales-s3-role
External ID 空欄

image.png

今回やりたいのは、ADB から Snowflake Open Catalog 上に新しい Iceberg table を作ることです。そのため、Open Catalog が管理する internal catalog として作成します。Open Catalog UI では namespace を作れますが、table 作成は Spark などの クエリエンジン、今回でいう ADB 側から行います。

5. AWS IAM role の trust policy を更新する

Open Catalog catalog を作成したら、adb_sales_catalog の Storage details を開きます。

そこに次の情報が表示されます。

  • IAM user ARN
  • External ID

例:

IAM user ARN:
arn:aws:iam::<OPEN_CATALOG_AWS_ACCOUNT_ID>:user/<OPEN_CATALOG_USER>

External ID:
SHxxxxx_SFCRole=1_xxxxxxxxxxxxxxxxxxxxx=

この値を使って、AWS IAM Role polaris-adb-sales-s3-role の trust policy を更新します。

AWS Console で次を開きます。

IAM
→ Roles
→ polaris-adb-sales-s3-role
→ Trust relationships
→ Edit trust policy

Trust policy を次の形にします。

Trust policy の詳細はこちらをクリックして表示
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "<Open Catalog Storage details に表示された IAM user ARN>"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "sts:ExternalId": "<Open Catalog Storage details に表示された External ID>"
        }
      }
    }
  ]
}

例:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<OPEN_CATALOG_AWS_ACCOUNT_ID>:user/<OPEN_CATALOG_USER>"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "sts:ExternalId": "SHxxxxx_SFCRole=1_xxxxxxxxxxxxxxxxxxxxx="
        }
      }
    }
  ]
}

6. Open Catalog に namespace を作成する

Snowflake Open Catalog UI で adb_sales_catalog を開きます。
Namespaces → + Namespace をクリックします。

namespace 名: ADB_NS

作成後、次のように見えれば OK です。

adb_sales_catalog
  └── ADB_NS

image.png

7. Open Catalog の role / service connection を作成する

ADB から Open Catalog に接続するために、Open Catalog 側で RBAC を設定します。

Open Catalog では、catalog role に権限を付与し、その catalog role を principal role に grant し、その principal role を service connection に紐づける、という考え方です。

7-1. Catalog role を作成する

adb_sales_catalog の Roles 画面で catalog role を作成します。

  • Catalog role名:ADB_SALES_CATALOG_ROLE
  • Privileges:CATALOG_MANAGE_CONTENT
    検証用なので、ここでは強めの権限を付与します。

個別の権限を設定する場合は以下のような権限を付けておきます。

NAMESPACE_LIST
NAMESPACE_FULL_METADATA
TABLE_CREATE
TABLE_FULL_METADATA
TABLE_READ_DATA
TABLE_WRITE_DATA

検証では CATALOG_MANAGE_CONTENT を使うと切り分けが楽です。

7-2. Principal role を作成する

Connections → Roles で principal role を作成します。

  • principal role名:ADB_SALES_PRINCIPAL_ROLE

7-3. Catalog role を principal role に grant する

次の関係になるように設定します。

ADB_SALES_CATALOG_ROLE
  → ADB_SALES_PRINCIPAL_ROLE

ここは名前が似ると混乱しやすいので、role の種類を分けて考えます。

Role 役割
ADB_SALES_CATALOG_ROLE catalog / namespace / table への権限セット
ADB_SALES_PRINCIPAL_ROLE service connection に付与する principal role

7-4. Service connection を作成する

Connections で Service connection を作成します。

  • Service connections名:ADB_SALES_CONN

Principal role には次を指定します。

ADB_SALES_PRINCIPAL_ROLE

作成後、次の 2 つを保存します。

Client ID
Client Secret

Client Secret は後から再表示できないため、必ず安全な場所に保存します。

この Client ID / Client Secret は、後で ADB の POLARIS_SALES_OAUTH credential 作成に使います。

image.png

image.png

8. ADB 用の AWS IAM user を作成する

ここで作る AWS IAM user は、ADB が S3 に直接アクセスするためのユーザーです。

先ほど作った polaris-adb-sales-s3-roleSnowflake Open Catalog 用です。
ADB の DBMS_CLOUD.CREATE_CREDENTIAL に IAM role ARN は使いません。

ADB 用には AWS access key ID / secret access key が必要です。

8-1. ADB 用 IAM policy を作成する

AWS IAM → Policies → Create policy で、次の policy を作ります。

Policy name:adb-sales-s3-user-policy

Policy JSON:こちらをクリックして表示:
Policy JSON:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowListBucketForAdbSalesUser",
      "Effect": "Allow",
      "Action": [
        "s3:GetBucketLocation",
        "s3:ListBucket",
        "s3:ListBucketMultipartUploads"
      ],
      "Resource": [
        "arn:aws:s3:::adb-iceberg-poc-bucket"
      ],
      "Condition": {
        "StringLike": {
          "s3:prefix": [
            "adb-sales-iceberg",
            "adb-sales-iceberg/*"
          ]
        }
      }
    },
    {
      "Sid": "AllowObjectAccessForAdbSalesUser",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject",
        "s3:AbortMultipartUpload",
        "s3:ListMultipartUploadParts"
      ],
      "Resource": [
        "arn:aws:s3:::adb-iceberg-poc-bucket/adb-sales-iceberg",
        "arn:aws:s3:::adb-iceberg-poc-bucket/adb-sales-iceberg/*"
      ]
    }
  ]
}

ADB は Iceberg metadata / manifest / data files を S3 から直接読むため、S3 access key / secret key 形式の object store credential を持つ必要があります。

8-2. ADB 用 IAM user を作成する

AWS IAM → Users → Create user を開きます。

User name:adb-sales-s3-user

Console access は不要です。
Permission には、先ほどの policy adb-sales-s3-user-policy を attach します。

8-3. Access key を作成する

作成した user adb-sales-s3-user を開きます。Security credentials → Create access key をクリックします。

作成後、次を保存します。

Access key ID
Secret access key

これは後で ADB の S3_SALES_CRED 作成に使います。

9. ADB ユーザーに権限を付与する

ADB の Database Actions → SQL Worksheet を開き、ADMIN で実行します。

image.png

CREATE USER ICEBERG_POC IDENTIFIED BY "password";
GRANT CREATE SESSION TO ICEBERG_POC;
GRANT CREATE TABLE TO ICEBERG_POC;
GRANT DWROLE TO ICEBERG_POC;
GRANT ADPUSER TO ICEBERG_POC;

DWROLE は Database Actions / Data Studio 系の利用で必要になります。(「カタログが表示されない場合は、この権限がないことがあります。)DBMS_CATALOG の Iceberg catalog mount や Iceberg table 作成では ADPUSER も必要です。DBMS_CATALOG は Iceberg REST Catalog や Snowflake Polaris などの外部 catalog を ADB に mount するためのパッケージとして提供されています。

10. ADB の outbound ACL を設定する

ADB から Snowflake Open Catalog と S3 に HTTPS 接続できるようにします。
これは OCI Console の ADB inbound ACL ではなく、DB 内のスキーマが外部ホストへ HTTPS 接続するための network ACL です。

ADMIN で以下を実行します。

こちらをクリックしてSQLコマンドを表示
BEGIN
  DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
    host       => '<your-open-catalog-account>.snowflakecomputing.com',
    lower_port => 443,
    upper_port => 443,
    ace        => xs$ace_type(
      privilege_list => xs$name_list('http'),
      principal_name => 'ICEBERG_POC',
      principal_type => xs_acl.ptype_db
    )
  );

  DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
    host       => 'adb-iceberg-poc-bucket.s3.ap-northeast-1.amazonaws.com',
    lower_port => 443,
    upper_port => 443,
    ace        => xs$ace_type(
      privilege_list => xs$name_list('http'),
      principal_name => 'ICEBERG_POC',
      principal_type => xs_acl.ptype_db
    )
  );

  DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
    host       => 'adb-iceberg-poc-bucket.s3.amazonaws.com',
    lower_port => 443,
    upper_port => 443,
    ace        => xs$ace_type(
      privilege_list => xs$name_list('http'),
      principal_name => 'ICEBERG_POC',
      principal_type => xs_acl.ptype_db
    )
  );
END;
/

path-style URI の検証用に次も追加しておきます。

BEGIN
  DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
    host       => 's3.ap-northeast-1.amazonaws.com',
    lower_port => 443,
    upper_port => 443,
    ace        => xs$ace_type(
      privilege_list => xs$name_list('http'),
      principal_name => 'ICEBERG_POC',
      principal_type => xs_acl.ptype_db
    )
  );
END;
/

11. ADB に S3 credential を作成する

ここからは ICEBERG_POC ユーザーで実行します。

  1. ADB の Database Actions を、ICEBERG_POC ユーザーで開く
  2. Data Studio > 設定を開く
  3. 資格証明 > 資格証明の作成をクリック

image.png

  • 資格証明名:S3_SALES_CRED
  • 資格証明タイプ:Basic認証(ユーザー名とパスワード)
  • username:AWS_ACCESS_KEY_ID
  • password:AWS_SECRET_ACCESS_KEY

ここに入れるのは、先ほど作成した AWS IAM user adb-sales-s3-user の access key です。

IAM role polaris-adb-sales-s3-role の ARN ではありません。

image.png

11-1. S3 credential を確認する

ADB から S3 prefix を list できるか確認します。

SELECT object_name, bytes
FROM DBMS_CLOUD.LIST_OBJECTS(
  credential_name => 'S3_SALES_CRED',
  location_uri    => 'https://adb-iceberg-poc-bucket.s3.ap-northeast-1.amazonaws.com/adb-sales-iceberg/'
);

0 rows で OK です。(エラーが起きないことを確認します。)
または object が存在する場合は object 一覧が返ります。

12. ADB に Snowflake Open Catalog / Polaris を mount する

Data Studio の Catalog 画面から mount します。ICEBERG_POC ユーザーで実行します。

  1. ADB の Database Actions を開く
  2. Data Studio
  3. カタログ / Catalog を開く
  4. 追加 をクリック

image.png

5 . Icebergカタログを選択

image.png

6 . 先にIcebergカタログ資格証明を作成しておきます。「Icebergカタログ資格証明」の「資格証明の作成」をクリックします。(ADB が Snowflake Open Catalog / Polaris REST API に接続するための credential を作ります。)

  • 資格証明名:POLARIS_SALES_OAUTH
  • 資格証明タイプ:OAuth2
  • アクセス・トークン・エンド・ポイント:https://<your-open-catalog-account>.snowflakecomputing.com/polaris/api/catalog/v1/oauth/tokens
  • クライアントID:ADB_SALES_CONN の Client ID
  • クライアント・シークレット:ADB_SALES_CONN の Client Secret
  • スコープ:PRINCIPAL_ROLE:ALL

クライアントIDクライアント・シークレット には、Open Catalog の service connection ADB_SALES_CONN で発行された値を入れます。

image.png

7 . Icebergカタログ資格証明が作成出来たら、「カタログの追加」の設定項目を入力します。

  • カタログ名POLARIS_SALES_CAT
  • Icebergカタログ・タイプPolaris
  • Icebergカタログ・エンドポイントhttps://<open_catalog_account_identifier>.snowflakecomputing.com/polaris/api/catalog/v1/adb_sales_catalog
  • Icebergカタログ資格証明POLARIS_SALES_OAUTH
  • バケット資格証明S3_SALES_CRED

image.png

8 . 「」をクリック。ネームスペースのリストにOpen Catalog UI上から作成したネームスペースADB_NSが表示されているのを確認します。ネームスペースには何も指定しないまま、「追加」をクリックします。

image.png

マウントできました。POLARIS_SALES_CATを選択して「適用」をクリック。
image.png

13. mount 結果を確認する

13-1. mounted catalog を確認する

マウントしたカタログが表示されています。

image.png

SQLでも確認しておきます。SQL Worksheetを開きます。

SELECT catalog_name, catalog_type, catalog_details
FROM ALL_MOUNTED_CATALOGS
WHERE catalog_name = 'POLARIS_SALES_CAT';

catalog_details に endpoint、credential、configuration が表示されます。

13-2. namespace が見えるか確認する

SELECT *
FROM DBMS_CATALOG.GET_SCHEMAS(catalog_name => 'POLARIS_SALES_CAT');

ここで次が返れば OK です。

ADB_NS

image.png

ADB_NS が返らない場合は、まだ CREATE_ICEBERG_TABLE に進まず、ここまでの設定を確認します。
確認ポイントは次です。

  • endpoint が正しいか
  • namespacePathadb_sales_catalog
  • Open Catalog に namespace ADB_NS があるか
  • ADB_SALES_CONNADB_SALES_PRINCIPAL_ROLE に紐づいているか
  • ADB_SALES_CATALOG_ROLEADB_SALES_PRINCIPAL_ROLE に grant されているか
  • catalog role に十分な権限があるか
  • POLARIS_SALES_OAUTH の Client ID / Secret が ADB_SALES_CONN のものか
  • token scope が PRINCIPAL_ROLE:ALL

14. Iceberg table SALES を作成する

DBMS_CATALOG.CREATE_ICEBERG_TABLEを使用してPL/SQLでIceberg tableの作成を行います。

前項目のDBMS_CATALOG.GET_SCHEMASADB_NS が見えることを確認してから、以下を実行します。

SET SERVEROUTPUT ON;

DECLARE
  l_table_definition CLOB;
  l_out_metadata     CLOB;
BEGIN
  l_table_definition := q'~{
    "name": "SALES",
    "location": "s3://adb-iceberg-poc-bucket/adb-sales-iceberg/ADB_NS/SALES/",
    "schema": {
      "type": "struct",
      "schema-id": 0,
      "fields": [
        {
          "id": 1,
          "name": "SALE_ID",
          "required": false,
          "type": "decimal(18,0)"
        },
        {
          "id": 2,
          "name": "CUSTOMER_NAME",
          "required": false,
          "type": "string"
        },
        {
          "id": 3,
          "name": "AMOUNT",
          "required": false,
          "type": "decimal(10,2)"
        },
        {
          "id": 4,
          "name": "SALE_DATE",
          "required": false,
          "type": "date"
        },
        {
          "id": 5,
          "name": "CREATED_AT",
          "required": false,
          "type": "timestamp"
        }
      ]
    },
    "properties": {
      "format-version": "2",
      "write.format.default": "parquet"
    }
  }~';

  DBMS_CATALOG.CREATE_ICEBERG_TABLE(
    catalog_name     => 'POLARIS_SALES_CAT',
    schema_name      => 'ADB_NS',
    table_name       => 'SALES',
    table_definition => l_table_definition,
    out_metadata     => l_out_metadata
  );

  DBMS_OUTPUT.PUT_LINE(DBMS_LOB.SUBSTR(l_out_metadata, 4000, 1));
END;
/

DBMS_CATALOG.CREATE_ICEBERG_TABLE は、指定した catalog の schema 内に新しい Iceberg table を作成し、結果 metadata を out_metadata に返します。

作成後、念の為、cache を更新します。

EXEC DBMS_CATALOG.FLUSH_CATALOG_CACHE('POLARIS_SALES_CAT');

15. 作成結果を確認する

15-1. ADB から確認する

  1. Database Actions
  2. Data Studio
  3. Catalog
  4. Select Catalogs
  5. POLARIS_SALES_CAT を選択
  6. ADB_NS.SALES が見えるか確認

image.png

SQLでも確認します。

SELECT owner, table_name
FROM all_tables@POLARIS_SALES_CAT
WHERE owner = 'ADB_NS'
  AND table_name = 'SALES';

image.png

15-2. Snowflake Open Catalog UI で確認する

Snowflake Open Catalog UI で次を開きます。

Catalogs
→ adb_sales_catalog
→ ADB_NS
→ SALES

SALES table が表示されれば、Open Catalog 側にも table が登録されています。

image.png

15-3. S3 で確認する

AWS S3 Console で次の prefix を確認します。

s3://adb-iceberg-poc-bucket/adb-sales-iceberg/ADB_NS/SALES/

image.png

Iceberg metadata 用のファイルやディレクトリが作成されていれば OK です!

image.png

おわりに

この記事では、Oracle Autonomous Database から Snowflake Open Catalog / Polaris を Iceberg REST Catalog としてマウントし、ADB 側から DBMS_CATALOG.CREATE_ICEBERG_TABLE を使って Iceberg table を作成する手順を試しました。

今回の構成では、Snowflake Open Catalog / Polaris が Iceberg catalog として機能し、Iceberg table の metadata や data files は S3 に保存されます。ADB からは mounted catalog 名を使って、作成した Iceberg table を ADB_NS.SALES@POLARIS_SALES_CAT のように参照できます。

ADB の Iceberg 対応により、外部 Iceberg catalog や object storage 上のデータを ADB から扱える選択肢が広がってきています。今後、Iceberg table に対する他の操作や、Unity Catalog など他の catalog の更なる連携に期待です。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?