Openflow Connector for Oracle について

注釈

このコネクタは、 Snowflakeコネクタ規約 に従うものとします。

注釈

|OracleOFC|には、標準のコネクタ利用規約以外の追加利用規約も適用されます。詳しくは、`Openflow Connector for Oracle Addendum<https://www.snowflake.com/en/legal/optional-offerings/offering-specific-terms/openflow-oracle-terms/>`_を参照してください。

このトピックでは、Openflow Connector for Oracle の基本的な概念、ワークフロー、および制限について説明します。

Openflow Connector for Oracle について

|OracleOFC|はOracleデータベースインスタンスをSnowflakeに接続し、ほぼリアルタイムまたは指定されたスケジュールで選択したテーブルからデータを複製します。コネクタは、複製されたテーブルの現在の状態とともに利用可能なすべてのデータ変更のログも作成します。

ユースケース

コネクタは、次のユースケースをサポートします。

  • 包括的で一元化されたレポートのために、OracleデータベーステーブルをSnowflakeに複製します。

ライセンスモデルと重要な制約

|OracleOFC|は、2つの異なるライセンスモデルをサポートしています。インストール前に正しいモデルを選択する必要があります。正しいモデルの選択に失敗すると、展開の失敗や意図しない財務コミットメントが発生する可能性があります。

詳細なライセンス期間、比較、および構成手順について詳しくは、:ref:`Oracle XStreamライセンス<label-oracle_xstream_licensing>`を参照してください。

1.組み込みライセンス(Snowflake提供)

SnowflakeはOracle XStreamライセンスを有料で直接提供します。このモデルにより、Oracleとの直接契約なしでXStreamの複製を利用できます。詳しくは、:ref:`組み込みライセンスの詳細<label-oracle_embedded_license_details>`および`Openflow Connector for Oracle Addendum<https://www.snowflake.com/en/legal/optional-offerings/offering-specific-terms/openflow-oracle-terms/>`_を参照してください。

用語

詳細

請求

ライセンスおよびサポート&メンテナンス(S&M)の料金は、Snowflake容量から差し引かれます。

契約

アクティベーションにより、キャンセルできない36か月間の期間(60日間のトライアル後)が開始されます。

ライフサイクル

  • 期間後(36か月以上):最初の36か月の期間が過ぎると、ライセンス料金は0ドルに下がりますが、S&M料金は毎年継続します。

  • ロックアウトのリスク:S&M更新をオプトアウトした場合、S&M範囲が終了すると、コネクタは完全にロックされます。コネクタのロックを解除するには、新しい組み込みライセンスを購入する必要があります。これにより、全額の新しい36か月の契約がトリガーされます。

管理 UI

すべてのライセンスアクション(トライアルの開始/キャンセル、使用状況のモニター、オプトアウト)は、Admin » Terms » Openflow for Oracle`の下にある|sf-web-interface|のORGADMINによって実行されます。ステップバイステップの手順については、 :doc:`manage-commercial-terms をご参照ください。

制限事項

以下のお客様は対象外です。

  • 公共部門のエンティティ。

  • GCP Marketplaceを通じてSnowflakeを購入しているお客様。

  • サードパーティの再販業者を通じてSnowflakeと契約しているお客様。

2.独立ライセンス(Bring Your Own License - BYOL)

XStream資格を含む独自のOracleライセンス(たとえば、Oracle GoldenGateライセンス)を提供します。詳しくは、:ref:`独立ライセンス(BYOL)の詳細<label-oracle_byol_license_details>`を参照してください。

用語

詳細

請求

Snowflakeからの追加ライセンス料金はありません。標準のストレージおよびコンピューティングコスト(たとえば、Openflow Compute)が適用されます。

コンプライアンス

Oracleライセンスに準拠する責任はお客様にのみあります。

使用状況

公共部門、GCP Marketplace、再販業者のお客様に必須です。

Oracle XStreamライセンスモデルを選択する

|OracleOFC|にはOracle XStreamサービスの有料ライセンスが必要です。以下の2つのライセンスモデルが利用可能です。

  • 組み込みのOracleライセンス

  • 独立したOracleライセンス(Bring Your Own License -BYOL )

以下の表を使用して、組織に適したモデルを決定してください。

考慮事項

組み込みライセンス

独立ライセンス(BYOL)

対象

Oracle XStreamテクノロジーのライセンスが必要で、Snowflakeとの契約を通じて直接購入することを希望しているお客様。

すでにOracle GoldenGateライセンス、またはXStreamの資格を提供する別のOracle契約を持っているお客様。

請求

ソースOracle DBのプロセッサコアの数に基づいて、Snowflakeを通じて請求されます。キャンセルできない36か月間の契約が含まれます。サポートおよびメンテナンスサービスの料金も請求されます。

さらに、標準的なストレージおよびコンピューティングコスト(Openflow Computeなど)が適用されます。

SnowflakeからのOracle XStreamサービスに対する追加のライセンス、またはサポートおよびメンテナンス料金はありません。Oracleとの直接のライセンスおよびコンプライアンスにはすべてご自身に責任があります。

標準のストレージおよびコンピューティングコスト(たとえば、Openflow Compute)が適用されます。

設定

コネクタパラメーターにOracle DBのCPUコア数とプロセッサ乗数係数を入力する必要があります。

CPUコア情報をSnowflakeに提供する必要はありません。

トライアル期間

最大16個のライセンス済みコアに対する60日間の無料トライアルが含まれます。請求は61日目から自動的に開始されます。

Snowflake経由での試用期間は提供されません。使用には、既存のOracle契約が適用されます。

組み込みライセンスの詳細

このオプションを選択すると、Snowflakeを通じて、コネクタでOracle XStreamテクノロジーを使用する権利を調達することになります。次の重要な条件に注意してください。

請求

Oracle XStreamサービスは毎月請求され、Snowflakeの容量残高から差し引かれます。料金には、ライセンス料金とサポート&メンテナンス(S&M)料金の2つの要素があります。ライセンス料金は、ソースOracleデータベースのプロセッサーコアの数に、Oracleプロセッサーコア係数を掛けて計算されます。

契約(「61日」ルール)

最初の60日間は、ライセンスされたコア16個まで無料です。ただし、60日間の試用期間を超えてコネクタをアクティブ化すると、キャンセルできない36か月の請求期間(「初期期間」)が開始されます。

  • 自動変換:請求は61日目から自動的に開始されます。請求を回避するには、60日目より前に:ui:Admin » Terms » :ui:`Openflow for Oracle`ダッシュボードでトライアルをキャンセルする必要があります。

  • ロックイン:この初期期間中にSnowflake契約が終了した場合、初期期間の残額全体がすぐに支払われます。

期限後の更新とペナルティ

初期期間の後、ライセンス料金は0ドルになりますが、サポートおよびメンテナンス(S&M)料金は継続します。

  • オプトアウトの結果:Admin » Terms » :ui:`Openflow for Oracle`のダッシュボードからS&M更新をオプトアウトできます。ただし、S&Mカバレッジが停止すると、コネクタプロセッサはロックされます。操作を再開するには、NEW組み込みライセンスを購入する必要があります(36か月の全額契約がリセットされます)。

要件

コネクタ構成において、プロセッサーコアの数と正しいコア係数を正確に報告する責任があります。ソースデータベースのハードウェアが変更された場合、この情報を最新の状態に保つ必要があります。

制限事項

このオプションは以下には利用できません。

  • 公共部門のエンティティ(例:政府や教育のエンティティ)。

  • GCP Marketplaceを通じてSnowflakeを購入しているお客様。

  • サードパーティの再販業者を通じてSnowflakeと契約しているお客様(例:CDW、Optiv)。

設定

組み込みライセンスの設定方法:

  • UIで提示される`Openflow Connector for Oracle Addendum<https://www.snowflake.com/en/legal/optional-offerings/offering-specific-terms/openflow-oracle-terms/>`_を確認して同意します。

  • :ui:`Embedded License`のタイプを選択します。

  • ソースOracleデータベースのCPUコア数の詳細を入力します。**合計コア**(ソースデータベースサーバー上の物理コアの合計数)および**コア係数**(Oracleプロセッサーコア係数。たとえば、Intelプロセッサーの場合は0.5)。正しい値については、Oracleプロセッサコア係数表を参照してください。

独立ライセンス(BYOL)の詳細

このオプションは、必要なOracleテクノロジーのライセンスをすでに取得しているお客様向けです。

要件

コネクタの使用が既存のOracleライセンス契約の条項に準拠していることを確認する責任はご自身にのみあります。Snowflakeは、Oracle資格を検証または監査しません。

設定

独立ライセンスの設定方法(BYOL):

コネクタを構成する場合は、コア数や請求関連情報を入力せずに続行します。

Openflow要件

以下のOpenflowランタイム要件は|OracleOFC|に適用されます。

  • ランタイムのサイズは:ui:`Medium`以上である必要があります。大量のデータを複製する場合、特に行サイズが大きい場合は、より大きなランタイムを使用します。

  • コネクタは、マルチノードのOpenflowランタイムをサポートしていません。このコネクタのランタイムを、 Min nodes および Max nodes1 に設定して構成します。

サポートされているOracleバージョンとプラットフォーム

次のOracleデータベースのバージョンとプラットフォームがサポートされています。

  • Oracleデータベースバージョン12cR2以降

  • オンプレミスサーバー

  • Oracle Exadata

  • OCI VM/ベアメタル

  • Oracle向けカスタムAWS RDS

  • Oracle向け標準シングルテナントAWS RDS

制限事項

以下の制限が|OracleOFC|に適用されます。

  • Oracle向け標準マルチテナントAWS RDSはサポートされていません。

  • Oracle Autonomous Databases(ATP/ADW)はサポートされていません。

  • Oracle Fusion Cloud ApplicationsやNetSuiteといったOracle SaaS製品はサポートされていません。

  • コネクタには、BYOC向けのOpenflowデプロイメントバージョン0.55.0以降が必要です。

  • Openflowランタイムは、必要なOpenflowデプロイメントバージョンがインストールされた後に作成する必要があります。

  • 主キーを含むデータベーステーブルのみを複製できます。

  • コネクタは単一のデータベース/コンテナ内で動作します(PDBまたはCDB)。複数のコンテナからテーブルを複製するには、コンテナごとに個別のコネクタインスタンスを構成する必要があります。

  • コネクタは、ドロップされた列の再追加をサポートしていません。

  • コネクタは、16MBより大きい個々の値を複製しません。デフォルトでは、このような値を処理すると、関連するテーブルは永続的な失敗としてマークされます。テーブルの失敗を防ぐには、**オーバーサイズ値戦略**の宛先パラメーターを変更します。

コネクタの仕組み

次のセクションでは、複製、スキーマ変更、データ保持など、さまざまなコンテキストでコネクタがどのように機能するかについて説明します。

テーブルの複製方法

テーブルは以下のステージで複製されます。

  1. スキーマのイントロスペクション:コネクタは、列名やタイプなどのソーステーブル内の列を検出し、それらをSnowflakeとコネクタの`制限`_に照らして検証します。検証に失敗するとこのステージは失敗し、サイクルが完了します。このステージが正常に完了すると、コネクタはSnowflakeに空の宛先テーブルを作成します。

  2. スナップショットロード: コネクタは、ソーステーブルで利用可能なすべてのデータを宛先テーブルにコピーします。このステージが失敗した場合、それ以上のデータは複製されません。正常に完了すると、ソーステーブルのデータが宛先テーブルで利用可能になります。

  3. 増分ロード: コネクタはソーステーブルの変更を追跡し、その変更を宛先テーブルに適用します。このプロセスはテーブルが複製から削除されるまで続きます。このプロセスは、テーブルが複製から削除されるまで続きます。このステージで失敗すると、問題が解決されるまで、ソーステーブルの複製が完全に停止します。

テーブル複製ステータス

接続エラーなどの一時的な障害は、テーブルの複製を妨げません。ただし、サポートされていないデータ型などの永続的な障害はテーブルの複製を妨げます。

複製の問題をトラブルシューティングする、または複製フローからテーブルが正常に削除されたことを確認するには、テーブル状態ストアをチェックします。

  1. Openflowランタイムキャンバスで、プロセッサーグループを右クリックし、Controller Services を選択します。コントローラーサービスをリストしたテーブルが表示されます。

  2. Table State Store というラベルの行を見つけて、行の右側にある More 他のオプションを示す3つの垂直の点 ボタンをクリックし、View State を選択します。

テーブルとその現在の状態が書かれたリストが表示されます。検索ボックスに入力して、テーブル名でリストをフィルタリングします。可能な状態は次のとおりです。

  • NEW:テーブルは複製がスケジュールされていますが、複製は開始されていません。

  • SNAPSHOT_REPLICATION:コネクタは既存のデータをコピーしています。このステータスは、すべての記録が宛先テーブルに保存されるまで表示されます。

  • INCREMENTAL_REPLICATION:コネクタは変更をアクティブに複製しています。このステータスは、スナップショット複製の終了後に表示され、テーブルが複製から削除されるか、複製が失敗するまで無期限に表示され続けます。

  • FAILED:エラーのため、複製が完全に停止しています。

注釈

Openflowランタイムキャンバスにはテーブルステータスの変更は表示されず、現在のテーブルステータスのみが表示されます。ただし、テーブルステータスの変更は発生するとログに記録されます。次のログメッセージを探します。

Replication state for table <database_name>.<schema_name>.<table_name> changed from <old_state> to <new_state>
Copy

永続的な障害によりテーブルの複製が妨げられた場合は、複製からテーブルが削除されます。失敗の原因となった問題に対処した後、複製にテーブルを追加し直すことができます。詳細については、:ref:`テーブル複製の再開 <label-of_oracle_restart_table_replication>`をご参照ください。

データ保持

データ保持について

コネクタは、顧客データが自動的に削除されることのないデータ保持原則に従います。お客様は複製されたデータに対する完全な所有権と制御を維持し、コネクタは履歴情報を完全に削除するのではなく保持します。

このアプローチには次のような意味があります。

  • ソーステーブルから削除された行は、物理的に削除されるのではなく、宛先テーブルでソフト削除されます。

  • ソーステーブルからドロップされた列は、宛先テーブルではドロップされるのではなく名前が変更されます。

  • ジャーナルテーブルは無期限に保持され、自動的にクリーンアップされません。

宛先テーブルのメタデータ列

各宛先テーブルには、複製情報を追跡する次のメタデータ列が含まれます。

列名

説明

_SNOWFLAKE_INSERTED_AT

TIMESTAMP_NTZ

行が最初に宛先テーブルに挿入されたときのタイムスタンプ。

_SNOWFLAKE_UPDATED_AT

TIMESTAMP_NTZ

宛先テーブルで行が最後に更新されたときのタイムスタンプ。

_SNOWFLAKE_DELETED

BOOLEAN

行がソーステーブルから削除されたかどうかを示します。``true``の場合、行はソフト削除されており、ソースには存在しなくなります。

ソフト削除された行

ソーステーブルから行が削除されても、コネクタはそれを宛先テーブルから物理的に削除しません。代わりに、``_SNOWFLAKE_DELETED``メタデータ列を``true``に設定することにより、行は削除済みとしてマークされます。

このアプローチにより、以下が可能になります。

  • 監査またはコンプライアンスの目的で履歴データを保持する。

  • 必要に応じて削除されたレコードをクエリする。

  • 要件に基づいて、データを完全に削除するタイミングと方法を決定する。

アクティブな(削除されていない)行のみをクエリするには、``_SNOWFLAKE_DELETED``列でフィルターします。

SELECT * FROM my_table WHERE _SNOWFLAKE_DELETED = FALSE;
Copy

削除された行をクエリするには、以下のようにします。

SELECT * FROM my_table WHERE _SNOWFLAKE_DELETED = TRUE;
Copy

ドロップされた列

ソーステーブルから列がドロップされても、コネクタは宛先テーブルから対応する列をドロップしません。代わりに、履歴値を保持するために``__SNOWFLAKE_DELETED``サフィックスを追加して列の名前が変更されます。

たとえば、``EMAIL``という名前の列がソーステーブルからドロップされた場合、宛先テーブルでは``EMAIL__SNOWFLAKE_DELETED``に名前が変更されます。列がドロップされる前に存在していた行は元の値を保持しますが、ドロップ後に追加された行はこの列に``NULL``を持ちます。

名前が変更された列から履歴値を引き続きクエリできます。

SELECT EMAIL__SNOWFLAKE_DELETED FROM my_table;
Copy

列の名前の変更

CDC(変更データキャプチャ)メカニズムの制限により、コネクタは、列の名前変更と、列のドロップおよびその後の新しい列の追加を区別できません。その結果、ソーステーブルで列の名前を変更すると、コネクタはこれを元の列のドロップと、新しい名前の新しい列の追加という2つの別個の操作として扱います。

たとえば、ソーステーブルで列の名前を``A``から``B``に変更した場合、宛先テーブルには次が含まれます。

  • A__SNOWFLAKE_DELETED:名前変更前の値が含まれます。名前変更後に追加された行は、この列が``NULL``です。

  • B:名前変更後の値が含まれます。名前変更前に存在していた行は、この列が``NULL``です。

名前を変更した列のクエリ

元の列と名前が変更された列の両方からデータを、単一の統合された列として取得するには、``COALESCE``または``CASE``式を使用します。

SELECT
    COALESCE(B, A__SNOWFLAKE_DELETED) AS A_RENAMED_TO_B
FROM my_table;
Copy

または、``CASE``式を使用します。

SELECT
    CASE
        WHEN B IS NOT NULL THEN B
        ELSE A__SNOWFLAKE_DELETED
    END AS A_RENAMED_TO_B
FROM my_table;
Copy

名前を変更した列のビューの作成

宛先テーブルを手動で変更するのではなく、名前が変更された列を単一の統合された列として表示するビューを作成できます。このアプローチは、元のデータを保持し、進行中の複製に関する潜在的な問題を回避するために、推奨されます。

CREATE VIEW my_table_unified AS
SELECT
    *,
    COALESCE(B, A__SNOWFLAKE_DELETED) AS A_RENAMED_TO_B
FROM my_table;
Copy

重要

宛先テーブルの構造(列のドロップや名前変更など)を手動で変更することは推奨されません。進行中の複製に干渉して、データの不整合を引き起こす可能性があるためです。

ジャーナルテーブル

増分複製において、ソースデータベースからの変更は、宛先テーブルにマージされる前に、最初にジャーナルテーブルに書き込まれます。コネクタは、ジャーナルテーブルからデータを自動的に削除しません。このデータは、監査、デバッグ、再処理の目的で役立つ場合があります。

ジャーナルテーブルは、対応する宛先テーブルと同じスキーマで作成され、次の命名規則に従います。

<TABLE_NAME>_JOURNAL_<timestamp>_<number>

条件:

  • ``<TABLE_NAME>``は宛先テーブルの名前である。

  • ``<timestamp>``はUnixエポック形式(1970年1月1日からの秒数)の作成タイムスタンプであり、一意性を確保する。

  • ``<number>``は1から始まり、ソーステーブルのスキーマ変更または列フィルターの変更により宛先テーブルスキーマが変更されるたびに増加します。

たとえば、宛先テーブルが``SALES.ORDERS``の場合、ジャーナルテーブルの名前は``SALES.ORDERS_JOURNAL_1705320000_1``になる可能性があります。

重要

複製の進行中はジャーナルテーブルをドロップしないでください。アクティブなジャーナルテーブルを削除すると、データが失われたり、複製に失敗したりする可能性があります。対応するソーステーブルが複製から完全に削除された後にのみ、ジャーナルテーブルをドロップします。

ジャーナルテーブルストレージの管理

古いジャーナルデータを削除してストレージコストを管理する必要がある場合は、複製されなくなったテーブルのジャーナルテーブルを定期的にクリーンアップするSnowflakeタスクを作成できます。

ジャーナルのクリーンアップを実装する前に、次を確認してください。

  • 対応するソーステーブルが複製から完全に削除されていること。

  • 監査や処理の目的でジャーナルデータが不要であること。

自動クリーンアップのためのタスクの作成と管理について詳しくは、:doc:`タスクの紹介</user-guide/tasks-intro>`を参照してください。

次のステップ

このトピックを確認したら、次のステップを検討します。

  • :doc:`manage-commercial-terms`を確認してコネクタを有効にし、Oracle XStreamの規約に同意して、ライセンスモデルを構成します。

  • コネクタがデータ型をSnowflakeのデータ型にどのようにマップするかを理解するには、:doc:`data-mapping`を確認してください。

  • コネクタを設定するには、:doc:`setup-tasks`を確認してください。