Oracle データを BigQuery に読み込む
Oracle から BigQuery にデータを読み込むには、BigQuery Data Transfer Service for Oracle コネクタを使用します。BigQuery Data Transfer Service を使用すると、Oracle から BigQuery に最新のデータを追加する定期的な転送ジョブのスケジュールを設定できます。
制限事項
Oracle の転送には次の制限があります。
- Oracle データベースへの同時接続の最大数には上限があります。そのため、1 つの Oracle データベースへの同時転送実行数はその上限に制約されます。
- 次の要件を満たす Oracle データベース接続でパブリック IP が使用できない場合には、ネットワーク アタッチメントを設定する必要があります。
- ネットワーク アタッチメントが存在するサブネットからデータソースにアクセスできる必要があります。
- ネットワーク アタッチメントは、範囲
240.0.0.0/24内のサブネット内に存在してはなりません。 - アタッチメントへのアクティブな接続がある場合、ネットワーク アタッチメントは削除できません。ネットワーク アタッチメントを削除するには、Cloud カスタマーケアにお問い合わせください。
usマルチリージョンの場合、ネットワーク アタッチメントはus-central1リージョンに存在する必要があります。euマルチリージョンの場合、ネットワーク アタッチメントはeurope-west4リージョンに存在する必要があります。
- Oracle の定期的な転送の最小間隔は 15 分です。デフォルトの定期的な転送間隔は 24 時間です。
- 1 つの転送構成でサポートできるデータ転送の実行は、一度に 1 回だけです。最初の転送が完了する前に 2 回目のデータ転送が実行されるようにスケジュールされている場合、最初のデータ転送のみが完了し、最初の転送と重複するその他のデータ転送はスキップされます。
- 1 つの転送構成内で転送がスキップされないようにするには、繰り返し頻度を構成して、大規模なデータ転送間の時間を長くすることをおすすめします。
- 構成済みのネットワーク アタッチメントと仮想マシン(VM)インスタンスが異なるリージョンにある場合、Oracle からデータを転送するときにリージョン間でデータが移動する可能性があります。
データの取り込みオプション
以降のセクションでは、Oracle データ転送を設定する際のデータの取り込みオプションについて説明します。
TLS 構成
Oracle コネクタは、BigQuery へのデータ転送を暗号化するためのトランスポート レベル セキュリティ(TLS)の構成をサポートしています。Oracle コネクタは、次の TLS 構成をサポートしています。
- データを暗号化し、CA とホスト名を検証する: このモードでは、TCPS プロトコルを介した TLS を使用してサーバーの完全な検証を行います。すべての転送中のデータを暗号化し、データベース サーバーの証明書が信頼できる認証局(CA)によって署名されていることを確認します。このモードでは、接続先のホスト名がサーバーの証明書のコモンネーム(CN)またはサブジェクトの別名(SAN)と完全に一致することも確認します。このモードでは、攻撃者が別のドメインの有効な証明書を使用してデータベース サーバーの権限を借用するのを防ぐことができます。
- ホスト名が証明書の CN または SAN と一致しない場合、接続は失敗します。証明書と一致するように DNS の解決を構成するか、別のセキュリティ モードを使用する必要があります。
- このモードは、中間者(PITM)攻撃を防ぐための最も安全なオプションです。
- データを暗号化し、CA のみを検証する: このモードでは、TCPS プロトコルを介して TLS を使用することですべてのデータを暗号化し、サーバーの証明書がクライアントが信頼する CA によって署名されていることを検証します。ただし、このモードではサーバーのホスト名は検証されません。このモードでは、証明書が有効で、信頼できる VA によって発行されていれば、証明書のホスト名が接続先のホスト名と一致するかどうかに関係なく、接続が成功します。
- このモードは、証明書が信頼できる 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 によってプリインストールされ、信頼されています。
Oracle 転送構成を作成するときに、次の要件を満たす PEM エンコード証明書を [信頼できる PEM 証明書] フィールドに指定できます。
- 証明書は、PEM エンコードされた有効な証明書チェーンである必要があります。
- 証明書は完全に正しいものである必要があります。チェーン内の証明書が欠落している場合や、内容が正しくない場合、TLS 接続は失敗します。
- 単一の証明書の場合は、データベース サーバーから単一の自己署名証明書を指定できます。
- プライベート CA が発行した完全な証明書チェーンの場合は、完全な信頼チェーンを指定する必要があります。これには、データベース サーバーの証明書と、中間およびルート CA 証明書が含まれます。
始める前に
以降のセクションでは、Oracle の転送を作成する前に必要な手順について説明します。
Oracle の前提条件
- Oracle データベースにユーザー認証情報を作成します。
- ユーザーに
Create Sessionシステム権限を付与して、セッションの作成を許可します。 - ユーザー アカウントにテーブルスペースを割り当てます。
Oracle の転送を作成する場合は、Oracle データベースについて次の情報も必要です。
| パラメータ名 | 説明 |
|---|---|
database |
データベースの名前。 |
host |
データベースのホスト名または IP アドレス。 |
port |
データベースのポート番号。 |
username |
データベースにアクセスするためのユーザー名。 |
password |
データベースにアクセスするためのパスワード。 |
BigQuery の前提条件
- BigQuery Data Transfer Service を有効にするために必要なすべての操作が完了していることを確認します。
- データを保存する BigQuery データセットを作成します。
- Pub/Sub の転送実行通知を設定する場合は、
pubsub.topics.setIamPolicyIdentity and Access Management(IAM)権限があることを確認します。メール通知を設定するだけの場合、Pub/Sub の権限は必要ありません。詳細については、BigQuery Data Transfer Service の実行通知をご覧ください。
必要な BigQuery のロール
BigQuery Data Transfer Service データ転送の作成に必要な権限を取得するには、プロジェクトに対する BigQuery 管理者(roles/bigquery.admin)IAM ロールを付与するよう管理者に依頼します。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
この事前定義ロールには、BigQuery Data Transfer Service データ転送の作成に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
BigQuery Data Transfer Service データ転送を作成するには、次の権限が必要です。
- BigQuery Data Transfer Service の権限:
-
bigquery.transfers.update -
bigquery.transfers.get
-
- BigQuery の権限:
-
bigquery.datasets.get -
bigquery.datasets.getIamPolicy -
bigquery.datasets.update -
bigquery.datasets.setIamPolicy -
bigquery.jobs.create
-
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
詳細については、bigquery.admin のアクセス権を付与するをご覧ください。
Oracle データを BigQuery に読み込む
次のいずれかのオプションを使用して転送構成を設定し、Oracle データを BigQuery に追加します。
コンソール
Google Cloud コンソールの [データ転送] ページに移動します。
[転送を作成] をクリックします。
[ソースタイプ] セクションの [ソース] で、[Oracle] を選択します。
[データソースの詳細] セクションで、次のようにします。
- [ネットワーク アタッチメント] で、既存のネットワーク アタッチメントを選択するか、[ネットワーク アタッチメントの作成] をクリックします。
- [ホスト] に、データベースのホスト名または IP を入力します。
- [ポート] に、Oracle データベースが受信接続に使用しているポート番号(
1521など)を入力します。 - [データベース名] に、Oracle データベースの名前を入力します。
- [接続タイプ] に、接続 URL タイプ(
SERVICE、SID、TNSのいずれか)を入力します。 - [ユーザー名] に、Oracle データベース接続を開始するユーザーのユーザー名を入力します。
- [パスワード] に、Oracle データベース接続を開始するユーザーのパスワードを入力します。
- [TLS Mode] で、プルダウン メニューからオプションを選択します。TLS モードの詳細については、TLS 構成をご覧ください。
- [Trusted PEM Certificate] に、データベース サーバーの TLS 証明書を発行した認証局(CA)の公開証明書を入力します。詳細については、信頼できるサーバー証明書(PEM)をご覧ください。
- [Oracle objects to transfer] で [BROWSE] をクリックして、BigQuery の宛先データセットに転送するテーブルを選択します。このフィールドには、データ転送に含めるオブジェクトを手動で入力することもできます。
[転送先の設定] セクションの [データセット] には、データを保存するために作成したデータセットを選択します。
[転送構成名] セクションの [表示名] に、データ転送の名前を入力します。
[スケジュール オプション] セクションで:
- [繰り返しの頻度] リストで、この転送の実行頻度を指定するオプションを選択します。カスタムの繰り返しの頻度を指定するには、[カスタム] を選択します。[オンデマンド] を選択した場合、手動で転送をトリガーすると、この転送が実行されます。
- 必要に応じて、[すぐに開始] を選択するか、[設定した時刻に開始] を選択して開始日と実行時間を指定します。
省略可: [通知オプション] セクションで、次のようにします。
- メール通知を有効にするには、[メール通知] をクリックします。このオプションを有効にすると、転送の実行が失敗した場合、転送管理者にメール通知が送信されます。
- この転送の Pub/Sub 転送実行通知を有効にするには、[Pub/Sub 通知] をクリックします。トピック名を選択するか、[トピックを作成] をクリックしてトピックを作成します。
[保存] をクリックします。
bq
bq mk コマンドを入力して、転送作成フラグ --transfer_config を指定します。
bq mk --transfer_config --project_id=PROJECT_ID --data_source=DATA_SOURCE --display_name=DISPLAY_NAME --target_dataset=DATASET --params='PARAMETERS'
各パラメータの説明は次のとおりです。
- PROJECT_ID(省略可): Google Cloud プロジェクト ID。
--project_idで特定のプロジェクトを指定しない場合は、デフォルトのプロジェクトが使用されます。 - DATA_SOURCE: データソース -
oracle。 - DISPLAY_NAME: 転送構成の表示名。データ転送名には、後で修正が必要になった場合に識別できる任意の名前を使用できます。
- DATASET: 転送構成のターゲット データセット。
PARAMETERS: 作成される転送構成のパラメータを JSON 形式で指定します(例:
--params='{"param":"param_value"}')。Oracle データ転送のパラメータは次のとおりです。connector.networkAttachment(省略可): Oracle データベースに接続するネットワーク アタッチメントの名前。connector.authentication.Username: Oracle アカウントのユーザー名。connector.authentication.Password: Oracle アカウントのパスワード。connector.database: Oracle データベースの名前。connector.endpoint.host: データベースのホスト名または IP。connector.endpoint.port: Oracle データベースが受信接続に使用しているポート番号(1520など)。connector.connectionType: 接続 URL タイプ(SERVICE、SID、TNSのいずれか)。connector.tls.mode: この転送で使用する TLS 構成を指定します。ENCRYPT_VERIFY_CA_AND_HOST: データを暗号化し、CA とホスト名を確認するENCRYPT_VERIFY_CA: データを暗号化し、CA のみを検証するENCRYPT_VERIFY_NONE: データ暗号化のみDISABLE: 暗号化や検証を行わない
connector.tls.trustedServerCertificate: (省略可)1 つ以上の PEM エンコード証明書を指定します。connector.tls.modeがENCRYPT_VERIFY_CA_AND_HOSTまたはENCRYPT_VERIFY_CAの場合にのみ必須です。assets: BigQuery に転送する Oracle オブジェクトのパス。形式はDATABASE_NAME/SCHEMA_NAME/TABLE_NAMEです。
たとえば、次のコマンドは、すべての必須パラメータを使用してデフォルト プロジェクトに Oracle データ転送を作成します。
bq mk --transfer_config --target_dataset=mydataset --data_source=oracle --display_name='My Transfer' --params='{"assets":["DB1/USER1/DEPARTMENT","DB1/USER1/EMPLOYEES"], "connector.authentication.username": "User1", "connector.authentication.password":"ABC12345", "connector.database":"DB1", "connector.endpoint.host":"192.168.0.1", "connector.endpoint.port":1520, "connector.connectionType":"SERVICE", "connector.tls.mode": "ENCRYPT_VERIFY_CA_AND_HOST", "connector.tls.trustedServerCertificate": "PEM-encoded certificate", "connector.networkAttachment": "projects/dev-project1/regions/us-central1/networkattachments/na1"}'
API
projects.locations.transferConfigs.create メソッドを使用して、TransferConfig リソースのインスタンスを指定します。
定期的なスケジュール外でデータ転送を手動で実行するには、バックフィル実行を開始します。
データ型マッピング
次の表に、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 の転送に関する問題をご覧ください。
料金
この機能のプレビュー版では、Oracle データを BigQuery に転送する際に費用は発生しません。
次のステップ
- BigQuery Data Transfer Service の概要については、BigQuery Data Transfer Service の概要をご覧ください。
- 転送構成に関する情報の取得、転送構成の一覧表示、転送の実行履歴の表示など、転送の使用方法については、転送の操作をご覧ください。
- クロスクラウドの操作でデータを読み込む方法を学習する。