Oracle データ転送の概要

Oracle データベースから BigQuery にデータを読み込むには、Oracle 用 BigQuery Data Transfer Service コネクタを使用します。このドキュメントでは、Oracle 転送の構成オプションと、データ型のマッピングとメタデータの転送に関する情報を提供します。

Oracle 転送をスケジュールする方法については、Oracle データを BigQuery に読み込むをご覧ください。

データの取り込みオプション

以降のセクションでは、Oracle データ転送を設定する際のデータの取り込みオプションについて詳しく説明します。

TLS 構成

Oracle コネクタは、BigQuery へのデータ転送を暗号化するためのトランスポート レベル セキュリティ(TLS)の構成をサポートしています。Oracle コネクタは、次の TLS 構成をサポートしています。

  • データを暗号化し、CA とホスト名を検証するモード。このモードでは、TCPS プロトコルを介した TLS を使用してサーバーの完全な検証を行います。すべての転送中のデータを暗号化し、データベース サーバーの証明書が信頼できる認証局(CA)によって署名されていることを確認します。このモードでは、接続先のホスト名がサーバーの証明書の共通名(CN)またはサブジェクト代替名(SAN)と完全に一致することも確認します。このモードでは、攻撃者が別のドメインの有効な証明書を使用してデータベース サーバーを偽装することを防止できます。

    ホスト名が証明書の CN または SAN と一致しない場合、接続は失敗します。証明書と一致するように DNS の解決を構成するか、別のセキュリティ モードを使用する必要があります。このモードは、中間者(PITM)攻撃を防ぐための最も安全なオプションです。

  • データを暗号化し、CA のみを検証するモード。このモードでは、TCPS プロトコルを介した TLS を使用してすべてのデータを暗号化し、クライアントが信頼する CA によってサーバーの証明書が署名されていることを検証します。ただし、このモードではサーバーのホスト名は検証されません。このモードでは、証明書が有効で、信頼できる CA によって発行されていれば、証明書のホスト名が接続先のホスト名と一致するかどうかに関係なく、接続が成功します。

    このモードは、証明書が信頼できる CA によって署名されているサーバーに接続していることを確認したいものの、ホスト名が検証できない場合や、ホスト名構成を制御できない場合に使用します。

  • [暗号化のみ] モード。このモードでは、標準の TCP ポートを介して Oracle のネイティブ ネットワーク暗号化を使用して、クライアントとサーバー間で転送されるすべてのデータが暗号化されます。証明書やホスト名の検証は行いません。

    このモードでは、転送中のデータを保護することで一定のセキュリティが確保されますが、PITM 攻撃に対して脆弱になる可能性があります。

    すべてのデータを暗号化する必要があるものの、サーバーの ID を検証できない場合や検証したくない場合は、このモードを使用します。プライベート VPC を使用する場合は、このモードを使用することをおすすめします。

  • 暗号化または検証なしモード。このモードでは、データは暗号化されず、証明書やホスト名の検証も行われません。すべてのデータは書式なしテキストとして送信されます。

    機密データが処理される環境では、このモードを使用しないことをおすすめします。このモードは、セキュリティが問題にならない分離されたネットワークでのテスト目的でのみ使用することをおすすめします。

信頼できるサーバー証明書(PEM)

データを暗号化して、CA とホスト名を検証するモードまたはデータを暗号化し、CA を検証するモードを使用している場合は、1 つ以上の PEM エンコード証明書を指定することもできます。これらの証明書は、BigQuery Data Transfer Service が TLS 接続中にデータベース サーバーの ID を確認する必要があるシナリオで必要になります。

  • 組織内のプライベート CA によって署名された証明書または自己署名証明書を使用している場合は、完全な証明書チェーンまたは単一の自己署名証明書を指定する必要があります。これは、Amazon Relational Database Service(RDS)などのマネージド クラウド プロバイダ サービスの内部 CA によって発行された証明書に必要です。
  • データベース サーバーの証明書がパブリック CA(Let's Encrypt、DigiCert、GlobalSign など)によって署名されている場合は、証明書を指定する必要はありません。これらのパブリック CA のルート証明書は、BigQuery Data Transfer Service によってプリインストールされ、信頼されています。

転送構成の [信頼できる PEM 証明書] フィールドに、次の要件を満たす PEM エンコード証明書を指定できます。

  • 証明書は、有効な PEM エンコード証明書チェーンである必要があります。
  • 証明書は完全に正しいものである必要があります。チェーン内の証明書が欠落している場合や、内容が正しくない場合、TLS 接続は失敗します。
  • 単一の証明書の場合は、データベース サーバーから単一の自己署名証明書を指定できます。
  • プライベート CA が発行した完全な証明書チェーンの場合は、完全な信頼チェーンを指定する必要があります。これには、データベース サーバーの証明書と、中間およびルート CA 証明書が含まれます。

完全転送または増分転送

Oracle 転送を設定するときに、転送構成で [完全] または [増分] の書き込み設定を選択することで、BigQuery へのデータの読み込み方法を指定できます。増分転送はプレビュー版でサポートされています。

完全データ転送を構成すると、データ転送のたびに Oracle データセットからすべてのデータが転送されます。

または、増分データ転送(プレビュー版)を構成して、データ転送ごとにデータセット全体を読み込むのではなく、最後のデータ転送以降に変更されたデータのみを転送することもできます。データ転送で [増分] を選択した場合は、[追加] または [Upsert] の書き込みモードを指定して、データの増分転送中に BigQuery にデータを書き込む方法を定義する必要があります。以降のセクションでは、使用可能な書き込みモードについて説明します。

[追加] 書き込みモード

追加書き込みモードでは、宛先テーブルに新しい行のみが挿入されます。このオプションでは、既存のレコードをチェックせずに転送されたデータが厳密に追加されるため、このモードでは宛先テーブルでデータが重複する可能性があります。

追加モードを選択した場合は、ウォーターマーク列を選択する必要があります。Oracle コネクタがソーステーブルの変更を追跡するには、ウォーターマーク列が必要です。

Oracle の転送では、レコードの作成時にのみ更新され、その後の更新では変更されない列を選択することをおすすめします。たとえば、CREATED_AT 列です。

[Upsert] 書き込みモード

Upsert 書き込みモードでは、主キーを確認して、宛先テーブルの行を更新するか、新しい行を挿入します。主キーを指定すると、Oracle コネクタは、宛先テーブルをソーステーブルと同期するために必要な変更を特定できます。データ転送中に指定された主キーが宛先 BigQuery テーブルに存在している場合、Oracle コネクタはソーステーブルの新しいデータでその行を更新します。データ転送中に主キーが存在していない場合、Oracle コネクタは新しい行を挿入します。

Upsert モードを選択する場合は、ウォーターマーク列と主キーを選択する必要があります。

  • Oracle コネクタがソーステーブルの変更を追跡するには、ウォーターマーク列が必要です。
    • 行が変更されるたびに更新されるウォーターマーク列を選択します。UPDATED_AT 列または LAST_MODIFIED 列に類似した列をおすすめします。
  • 主キーは、行の挿入または更新が必要かどうかを Oracle コネクタが判断するために必要なテーブルの 1 つ以上の列です。

    テーブルのすべての行で一意の null 以外の値を含む列を選択します。システムが生成した識別子、一意の参照コード(自動増分式の ID など)、不変の時間ベースのシーケンス ID を含む列をおすすめします。

    データの損失や破損を防ぐため、選択する主キー列には一意の値が必要です。選択した主キー列の一意性に疑問がある場合は、代わりに [追加] 書き込みモードを使用することをおすすめします。

増分取り込みの動作

データソースのテーブル スキーマを変更すると、これらのテーブルからの増分データ転送は、次の方法で BigQuery に反映されます。

データソースの変更 増分取り込みの動作
新しい列を追加する 宛先の BigQuery テーブルに新しい列が追加されます。この列の以前のレコードはすべて null 値になります。
列の削除 削除された列は、宛先 BigQuery テーブルに残ります。この削除された列への新しいエントリには null 値が入力されます。
列のデータ型を変更する このコネクタは、 ALTER COLUMN DDL ステートメントでサポートされているデータ型変換のみをサポートします。これ以外のデータ型の変換を行うと、データ転送が失敗します。

問題が発生した場合は、新しい転送構成を作成することをおすすめします。

列の名前を変更する 元の列は宛先 BigQuery テーブルにそのまま残り、更新された名前の新しい列が宛先テーブルに追加されます。

データ型マッピング

次の表に、Oracle のデータ型と対応する BigQuery データ型を示します。

Oracle のデータ型 BigQuery のデータ型
BFILE BYTES
BINARY_DOUBLE FLOAT
BINARY_FLOAT FLOAT
BLOB BYTES
CHAR STRING
CLOB STRING
DATE DATETIME
FLOAT FLOAT
INTERVAL DAY TO SECOND STRING
INTERVAL YEAR TO MONTH STRING
LONG STRING
LONG RAW BYTES
NCHAR STRING
NCLOB STRING
NUMBER (without precision and scale) STRING
NUMBER (with precision and scale lower than the BigQuery Numeric range) NUMERIC
NUMBER (with precision and scale lower than the BigQuery BigNumeric range) BIGNUMERIC
NUMBER (with precision and scale greater than the BigQuery BigNumeric range) STRING
NVARCHAR2 STRING
RAW BYTES
ROWID STRING
TIMESTAMP DATETIME
TIMESTAMP WITH LOCAL TIME ZONE DATETIME
TIMESTAMP WITH TIME ZONE TIMESTAMP
UROWID STRING
VARCHAR STRING
VARCHAR2 STRING

メタデータを転送する

Oracle コネクタを使用して、メタデータを Knowledge Catalog に転送することもできます。詳細については、Oracle メタデータを Knowledge Catalog に読み込むをご覧ください。

料金

Oracle 転送の料金については、Data Transfer Service の料金をご覧ください。

次のステップ