Oracle に接続する
BigQuery 管理者は、接続を作成して Oracle データにアクセスできます。この接続により、データ アナリストは Oracle のデータにクエリを実行できるようになります。
サポートされている Oracle 環境とバージョン
BigQuery 連携は、次の Oracle デプロイ環境をサポートしています。
- Oracle Database@Google Cloud
- Oracle Exadata Database Service
- Cloud VPN または Cloud Interconnect を介して Google Cloud に接続されたオンプレミスの Oracle インスタンス
BigQuery 連携は、次の Oracle バージョンをサポートしています。
- Oracle Database 23.x(23ai)
- Oracle Database 21.x
- Oracle Database 19.x(19c)
始める前に
必要な API を有効にし、Oracle データベースを構成して、このドキュメントの各タスクを実行するために必要な権限をユーザーに付与する Identity and Access Management ロールを付与します。
BigQuery Connection API を有効にします。
ネットワーク アタッチメントを使用してプライベート ネットワーク経由でトラフィックをルーティングする場合は、Compute Engine API も有効にします。
Oracle データベースで、BigQuery 専用のユーザー認証情報を作成します。
- Oracle データベースにユーザー認証情報を作成します。
CREATE SESSIONシステム権限を付与して、ユーザーがデータベース セッションを確立できるようにします。GRANT CREATE SESSION TO USER_NAME;
クエリを実行するテーブルまたはビューに対する
SELECT専用の権限を付与します。GRANT SELECT ON SCHEMA_NAME.TABLE_NAME TO USER_NAME;
次のように置き換えます。
USER_NAME: データベース ユーザーのユーザー名。SCHEMA_NAME: クエリするテーブルのスキーマ。TABLE_NAME: クエリするテーブル。
次のいずれかの方法で、Oracle データベース インスタンスへのネットワーク接続を構成します。
- プライベート ネットワーク経由でトラフィックをルーティングする場合は、BigQuery 接続と同じリージョンにネットワーク アタッチメントを作成します。DNS ピアリングはサポートされていません。VPC ネットワーク内で解決可能な IP アドレスまたはホスト名を使用して接続します。
- パブリック インターネット経由で接続する場合は、すべての Google IP アドレス範囲を Oracle データベースのファイアウォール ルールに追加します。
必要なロール
Oracle への接続に必要な権限を取得するには、管理者に次の IAM ロールを付与するよう依頼してください。
-
接続を作成する: プロジェクトに対する BigQuery 接続管理者(
roles/bigquery.connectionAdmin) -
ネットワーク アタッチメントを構成する: プロジェクトに対する Compute 管理者(
roles/compute.admin)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
BigQuery を Oracle に接続する
BigQuery を Oracle に接続するには、Google Cloud コンソールまたは bq コマンドライン ツールを使用します。
コンソール
Google Cloud コンソールで、[BigQuery] ページに移動します。
[エクスプローラ] ペインで、 [データを追加] をクリックします。
[データを追加] ページが開きます。
[フィルタ条件] ペインの [データソースのタイプ] セクションで、[データベース] を選択します。
または、[データソースを検索] フィールドに「
oracle」と入力します。[特徴量データソース] セクションで、[Oracle] をクリックします。
[外部データへのアクセス] セクションで、[BigQuery フェデレーション] ソリューション カードをクリックします。説明には「Oracle への連携クエリ」と記載されています。
[外部データソース] ペインが開きます。
[外部データソース] ペインで、次の構成を行います。
- [接続 ID] フィールドに、一意の接続 ID(
oracle_prod_connなど)を入力します。 - [ロケーション タイプ] セクションで [リージョン] を選択し、BigQuery データセットが存在するリージョンを選択します。この接続を使用するクエリは、このリージョンから実行する必要があります。
- (省略可)[わかりやすい名前] フィールドに、接続のわかりやすい名前を入力します。
- (省略可)[説明] フィールドに、この接続リソースの説明を入力します。
- [暗号化] セクションで、[Google-managed encryption key] を選択するか、[Cloud KMS 鍵] を選択して顧客管理の暗号鍵(CMEK)を使用します。
- [Host:port] フィールドに、Oracle データベース サーバーのホストとポートを
HOST:PORT形式で入力します(例:10.10.1.2:1521、db.example.com:2484)。 - [ユーザー名] フィールドに、前提条件で作成したデータベース ユーザーを入力します。
- [パスワード] フィールドに、データベース ユーザーのパスワードを入力します。
- [データベース] フィールドに、Oracle データベースのサービス名を入力します。
- (省略可)[ネットワーク アタッチメント] フィールドで、プライベート接続を使用している場合は、ネットワーク アタッチメントのリソースパスを
projects/PROJECT_ID/regions/NA_REGION/networkAttachments/ATTACHMENT_NAME形式で入力します。 - [TLS モード] リストで、サポートされている TLS モードのいずれかを選択します(例: データを暗号化し、CA とホスト名を検証する(推奨))。
- [認証局(CA)] リストで、[Public CA(Web PKI)] を選択するか、カスタム CA を選択して PEM 形式の証明書を貼り付けます。
- [接続 ID] フィールドに、一意の接続 ID(
[接続を作成] をクリックします。
bq
bq mkコマンド に --connection フラグを指定します。
bq mk --connection \ --location=LOCATION \ --project_id=PROJECT_ID \ --connector_configuration '{ "connector_id": "oracle", "endpoint": { "host_port": "HOST_PORT" }, "asset": { "database": "DATABASE" }, "authentication": { "username_password": { "username": "USERNAME", "password": { "plaintext": "PASSWORD" } } }, "tls": { "mode": "TLS_MODE" }, "network": { "private_service_connect": { "network_attachment": "projects/PROJECT_ID/regions/NA_REGION/networkAttachments/ATTACHMENT_NAME" } } }' \ CONNECTION_ID
次のように置き換えます。
LOCATION: Oracle と一緒にクエリするデータセットに一致する BigQuery リージョン(例:us-central1)。この接続を使用するクエリは、このリージョンから実行する必要があります。PROJECT_ID: 実際の Google Cloud プロジェクト ID。HOST_PORT: Oracle データベース サーバーのホストとポート(HOST:PORT形式、例:10.10.1.2:1521)。DATABASE: Oracle データベースのサービス名。USERNAME: Oracle データベース ユーザー。PASSWORD: データベース ユーザーのパスワード。TLS_MODE: TLS 暗号化モード(ENCRYPT_VERIFY_CA_AND_HOST、ENCRYPT_VERIFY_CA、ENCRYPT_VERIFY_NONE、DISABLE)。ENCRYPT_VERIFY_CA_AND_HOSTまたはENCRYPT_VERIFY_CAでカスタム CA 証明書を使用する場合は、"tls"の下に"private_pki": { "trusted_certificates_pem": "CERT_CONTENT" }オブジェクトを含めます。NA_REGION: ネットワーク アタッチメントが配置されているリージョン。ATTACHMENT_NAME: ネットワーク アタッチメントの名前。パブリック IP 経由で接続する場合は、"network"オブジェクトを省略します。CONNECTION_ID: この接続の固有識別子。- (省略可)
--kms_key_name=KMS_KEY_NAME: 顧客管理の暗号鍵(CMEK)。省略した場合、認証情報はデフォルトの Google-owned and Google-managed encryption keyによって保護されます。
Transport Layer Security(TLS)の構成
Oracle コネクタは、BigQuery と Oracle データベース間の転送中のクエリ トラフィックを暗号化するために、Transport Layer Security(TLS)をサポートしています。BigQuery を Oracle に接続する場合は、次のいずれかの TLS モードを選択します。
データを暗号化し、認証局(CA)とホスト名を検証する(
ENCRYPT_VERIFY_CA_AND_HOSTモード)。TLS を使用して完全なサーバー検証を実行します。転送中のすべてのデータを暗号化し、データベース サーバーの証明書が信頼できる CA によって署名されていることを確認します。また、接続先のホスト名が証明書の共通名(CN)またはサブジェクト代替名(SAN)と一致していることを確認します。パブリック IP 経由の接続では必須です。データを暗号化し、CA のみを検証する(
ENCRYPT_VERIFY_CAモード)。転送中のすべてのデータを暗号化し、サーバーの証明書が信頼できる CA によって署名されていることを確認しますが、サーバーのホスト名は確認しません。このモードは、サーバー証明書が信頼できる CA によって署名されているものの、証明書の CN または SAN と一致しない IP アドレスまたはホスト名を使用して接続する場合に使用します。暗号化のみ(
ENCRYPT_VERIFY_NONEモード)。標準の TCP ポートを介して Oracle ネットワーク暗号化を使用して、BigQuery とサーバー間で転送されるすべてのデータを暗号化します。証明書やホスト名の検証は行いません。プライベート VPC 内でのみ推奨されます。暗号化または検証なし(
DISABLEモード)。データを暗号化せず、証明書やホスト名の検証も行いません。保護された VPC ネットワーク内のプライベート ネットワーク アタッチメントを介して接続する場合にのみ許可されます。
PEM 形式の信頼できるサーバー証明書
ENCRYPT_VERIFY_CA_AND_HOST モードまたは ENCRYPT_VERIFY_CA モードを使用する場合は、次の操作を行います。
- データベース サーバーの証明書がパブリック CA(Mozilla Root CA Program に含まれる Let's Encrypt、DigiCert、Google Trust Services など)によって署名されている場合は、証明書を指定する必要はありません。パブリック CA のルート証明書は、デフォルトで信頼されています。
- 組織内の内部またはプライベート CA によって署名された証明書、または自己署名証明書を使用する場合は、接続の設定時に [信頼できる PEM 証明書] フィールドに、Privacy-Enhanced Mail(PEM)形式の完全な証明書チェーンを指定する必要があります。
ユーザーと接続を共有する
次のロールを付与することで、ユーザーがデータをクエリして接続を管理できます。
roles/bigquery.connectionUser: ユーザーが接続を使用して外部データソースに接続し、クエリを実行できるようにします。roles/bigquery.connectionAdmin: ユーザーが接続を管理できるようにします。
BigQuery での IAM のロールと権限について詳しくは、事前定義ロールと権限をご覧ください。
次のオプションのいずれかを選択します。
コンソール
[BigQuery] ページに移動します。
接続は、プロジェクトで [接続] というグループに一覧表示されます。
左側のペインで、 [エクスプローラ] をクリックします。
![ハイライト表示された [エクスプローラ] ペインのボタン。](https://docs.cloud.google.cn/static/bigquery/images/explorer-tab.png?hl=ja)
左側のペインが表示されていない場合は、 [左ペインを開く] をクリックしてペインを開きます。
プロジェクトをクリックし、[接続] をクリックして、接続を選択します。
[詳細] ペインで、[共有] をクリックして接続を共有します。次に、以下の操作を行います。
[接続の権限] ダイアログで、プリンシパルを追加または編集して、他のプリンシパルと接続を共有します。
[保存] をクリックします。
bq
bq コマンドライン ツールを使用して接続を共有することはできません。接続を共有するには、 Google Cloud コンソールまたは BigQuery Connections API の接続を共有するためのメソッドを使用します。
API
BigQuery Connections REST API リファレンス セクションの projects.locations.connections.setIAM メソッドを使用して、policy リソースのインスタンスを指定します。
Java
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Java の設定手順を完了してください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
料金
連携クエリと接続には、次の料金が適用されます。
- 標準の連携クエリの料金が適用されます。
- VPC の使用には Virtual Private Cloud の料金が適用されます。
- Cloud VPN の使用には、Cloud VPN の料金が適用されます。
- Cloud NAT の使用には、Cloud NAT の料金が適用されます。
次のステップ
- さまざまな接続タイプについて確認する。
- 接続の管理について確認する。
- Oracle データのクエリを実行する方法を確認する。