Oracle DB(バージョン 2)

Oracle DB コネクタを使用すると、Oracle データベース(バージョン 11.2 以降)インスタンスに接続し、サポートされているデータベース オペレーションを実行できます。

始める前に

Oracle DB コネクタを使用する前に、次の作業を行います。

  • Google Cloud プロジェクトで次の操作を行います。
    • ネットワーク接続が設定されていることを確認します。ネットワーク パターンの詳細については、Network Connectivity をご覧ください。
    • コネクタを構成するユーザーに roles/connectors.admin IAM ロールを付与します。
    • コネクタに使用するサービス アカウントに、次の IAM ロールを付与します。
      • roles/secretmanager.viewer
      • roles/secretmanager.secretAccessor

      サービス アカウントは特別なタイプの Google アカウントで、Google API のデータにアクセスするのに認証を受ける必要がある人間以外のユーザーを表します。サービス アカウントがない場合は、サービス アカウントを作成する必要があります。詳細については、サービス アカウントを作成するをご覧ください。

    • 次のサービスを有効にします。
      • secretmanager.googleapis.com(Secret Manager API)
      • connectors.googleapis.com(Connectors API)

      サービスを有効にする方法については、サービスを有効にするをご覧ください。

    以前にプロジェクトでこうしたサービスを有効にしていない場合は、コネクタを構成するときにそれを有効にすることを求められます。

コネクタを構成する

コネクタを構成するには、データソース(バックエンド システム)への接続を作成する必要があります。接続はデータソースに特有です。つまり、多数のデータソースがある場合は、データソースごとに別々の接続を作成する必要があります。接続を作成する手順は次のとおりです。

  1. Cloud コンソールで、[Integration Connectors] > [接続] ページに移動し、Google Cloud プロジェクトを選択または作成します。

    [接続] ページに移動

  2. [+ 新規作成] をクリックして [接続の作成] ページを開きます。
  3. [ロケーション] セクションで、接続のロケーションを選択します。
    1. リージョン: プルダウン リストからロケーションを選択します

      サポートされているすべてのリージョンの一覧については、ロケーションをご覧ください。

    2. [次へ] をクリックします。
  4. [接続の詳細] セクションで、次の操作を行います。
    1. コネクタ: 使用可能なコネクタのプルダウン リストから [Oracle DB] を選択します。
    2. コネクタのバージョン: 使用可能なバージョンのプルダウン リストからバージョン 2 を選択します。
    3. [接続名] フィールドに、接続インスタンスの名前を入力します。

      接続名は次の条件を満たす必要があります。

      • 接続名には英字、数字、ハイフンを使用できます。
      • 文字は小文字のみを使用できます。
      • 接続名の先頭には英字を設定し、末尾には英字または数字を設定する必要があります。
      • 接続名は 49 文字以内で指定してください。
    4. 必要に応じて、接続インスタンスの [説明] を入力します。
    5. 必要に応じて、Cloud Logging を有効にして、ログレベルを選択します。デフォルトのログレベルは Error に設定されています。
    6. 必要に応じて、[Cloud Logging を有効にする] を選択して Cloud Logging を有効にします。
    7. サービス アカウント: 必要なロールを持つサービス アカウントを選択します。
    8. 必要に応じて、接続ノードの設定を構成します。

      • ノードの最小数: 接続ノードの最小数を入力します。
      • ノードの最大数: 接続ノードの最大数を入力します。

      ノードは、トランザクションを処理する接続の単位(またはレプリカ)です。1 つの接続でより多くのトランザクションを処理するには、より多くのノードが必要になります。逆に、より少ないトランザクションを処理するには、より少ないノードが必要になります。ノードがコネクタの料金に与える影響については、接続ノードの料金をご覧ください。値を入力しない場合は、デフォルトで最小ノード数は 2 に設定され(可用性を高めるため)、最大ノード数は 50 に設定されます。

    9. Oracle DB 接続がサーバーベースの接続と TNS 接続のどちらを使用するかに基づいて、ServiceName または DataSource(TNS 接続文字列)を指定します。両方を指定すると、DataSource が使用されます。
      • ServiceName: サーバーベースの認証を使用する場合は、宛先の詳細とともにサービス名を指定します。
      • DataSource: TNS 接続を使用する場合は、Oracle Net サービス名、Connect Descriptor(TNS 接続文字列とも呼ばれます)、または接続先のデータベースを識別する簡単な接続名を指定します。宛先の詳細を指定する必要はありません。TNS 接続文字列を指定するには、次の形式を使用します: (DESCRIPTION=(ADDRESS=(protocol_address_information))(CONNECT_DATA= (SERVICE_NAME=service_name)))
    10. 必要に応じて、[Include Synonyms] を選択します。
    11. 放棄済み接続タイムアウト: 借用した接続が放棄済みとみなされる前に未使用にしておける期間を指定するタイムアウト値(秒単位)を入力します。
    12. 非アクティブな接続タイムアウト: 接続タイムアウト値(秒単位)を入力します。
    13. 最大接続再利用時間: 接続再利用時間(秒単位)を入力します。
    14. TTL 接続タイムアウト: 接続が引き続き使用できる最大時間(秒単位)を入力します。
    15. 閲覧可能なスキーマ: エンティティとアクションの取得時に使用するスキーマ名をカンマ区切りで入力します。例: schemaA, schemaB, schemaC
    16. 必要に応じて、[+ ラベルを追加] をクリックして Key-Value ペアの形式でラベルを接続に追加します。
    17. [NEXT] をクリックします。
  5. [宛先] セクションに、接続するリモートホスト(バックエンド システム)の詳細を入力します。
    1. 宛先の種類: 宛先の種類を選択します。
      • リストから [ホストアドレス] を選択し、宛先のホスト名または IP アドレスを指定します。
      • バックエンド システムへのプライベート接続を確立する場合は、リストからエンドポイント アタッチメントを選択し、次にエンドポイント アタッチメントリストから必要なエンドポイント アタッチメントを選択します。

      セキュリティをさらに強化してバックエンドシステムへのパブリック接続を確立する場合は、接続用の静的アウトバウンド IP アドレスの構成を検討してから、特定の静的 IP アドレスのみを許可リストに登録するようファイアウォール ルールを構成します。

      他の宛先を入力するには、[+ 宛先を追加] をクリックします。

    2. [NEXT] をクリックします。
  6. [認証] セクションで、認証の詳細を入力します。
    1. [認証タイプ] を選択し、関連する詳細を入力します。

      Oracle DB 接続でサポートされる認証タイプは次のとおりです。

      • ユーザー名とパスワードを指定する
    2. これらの認証タイプを構成する方法については、認証を構成するをご覧ください。

    3. [NEXT] をクリックします。
  7. Review: 接続と認証の詳細を確認します。
  8. [作成] をクリックします。

認証を構成する

使用する認証に基づいて詳細を入力します。

  • ユーザー名とパスワード
    • ユーザー名: 認証に使用される Oracle アカウントのユーザー名。
    • パスワード: Oracle アカウントのユーザー名に関連付けられたパスワードを含む Secret Manager の Secret。

エンティティ、オペレーション、アクション

すべての Integration Connectors が、接続されたアプリケーションのオブジェクトを抽象化するレイヤを提供します。アプリケーションのオブジェクトには、この抽象化を通じてのみアクセスできます。抽象化は、エンティティ、オペレーション、アクションとして公開されます。

  • エンティティ: エンティティは、接続されているアプリケーションやサービスのオブジェクト、またはプロパティのコレクションと考えることができます。エンティティの定義は、コネクタによって異なります。たとえば、データベース コネクタでは、テーブルがエンティティであり、ファイル サーバー コネクタでは、フォルダがエンティティです。また、メッセージング システム コネクタでは、キューがエンティティです。

    ただし、コネクタでいずれのエンティティもサポートされていない、またはエンティティが存在しない可能性があります。その場合、Entities リストは空になります。

  • オペレーション: エンティティに対して行うことができるアクティビティです。エンティティに対して次のいずれかのオペレーションを行うことができます。

    使用可能なリストからエンティティを選択すると、そのエンティティで使用可能なオペレーションのリストが生成されます。オペレーションの詳細については、コネクタタスクのエンティティ オペレーションをご覧ください。ただし、コネクタがいずれかのエンティティ オペレーションをサポートしていない場合、サポートされていないオペレーションは Operations リストに含まれません。

  • アクション: コネクタ インターフェースを介して統合で使用できる主要な関数の一つです。アクションを使用すると、1 つまたは複数のエンティティに対して変更を加えることができます。また、使用できるアクションはコネクタごとに異なります。通常、アクションには入力パラメータと出力パラメータがあります。ただし、コネクタがどのアクションもサポートしていない可能性があります。その場合は、Actions リストが空になります。

システムの上限

Oracle DB コネクタは、ノードごとに 1 秒あたり最大 70 件のトランザクションを処理することができ、この上限を超えるトランザクションはすべてスロットルされます。 デフォルトでは、Integration Connectors は、接続に 2 つのノードを割り当てます(可用性を高めるため)。

Integration Connectors に適用される上限の詳細については、上限をご覧ください。

サポートされているデータ型

このコネクタでサポートされているデータ型は次のとおりです。

  • BIGINT
  • BINARY
  • BIT
  • BOOLEAN
  • CHAR
  • DATE
  • DECIMAL
  • DOUBLE
  • FLOAT
  • INTEGER
  • LONGN VARCHAR
  • LONG VARCHAR
  • NCHAR
  • NUMERIC
  • NVARCHAR
  • REAL
  • SMALL INT
  • TIME
  • TIMESTAMP
  • TINY INT
  • VARBINARY
  • VARCHAR

アクション

Oracle DB コネクタを使用すると、Oracle データベースでサポートされている形式でストアド プロシージャ、関数、カスタム SQL クエリを実行できます。カスタム SQL クエリを実行するため、コネクタは [カスタムクエリを実行する] アクションを備えています。

カスタムクエリを作成する手順は次のとおりです。

  1. 詳細な手順に沿って、コネクタタスクを追加します。
  2. コネクタタスクを構成するときに、実行するアクションの種類で [Actions] を選択します。
  3. [Actions] リストで [Execute custom query] を選択し、[Done] をクリックします。

    execute-custom-query-action を示す画像 execute-custom-query-action を示す画像

  4. [Task input] セクションを開き、次の操作を行います。
    1. [タイムアウト後] フィールドに、クエリが実行されるまで待機する秒数を入力します。

      デフォルト値: 180

    2. [最大行数]フィールドに、データベースから返される最大行数を入力します。

      デフォルト値: 25

    3. カスタムクエリを更新するには、[Edit Custom Script] をクリックします。[Script editor] ダイアログが開きます。

      custom-sql-query を示す画像 custom-sql-query を示す画像

    4. [Script editor] ダイアログで、SQL クエリを入力して [Save] をクリックします。

      SQL ステートメントで疑問符(?)を使用して、クエリ パラメータ リストで指定する必要がある 1 つのパラメータを表すことができます。たとえば、次の SQL クエリは、LastName 列に指定された値と一致する Employees テーブルからすべての行を選択します。

      SELECT * FROM Employees where LastName=?

    5. SQL クエリで疑問符を使用した場合は、各疑問符の [+ パラメータ名を追加] をクリックして、パラメータを追加する必要があります。統合の実行中に、これらのパラメータにより SQL クエリ内の疑問符(?)が順番に置き換わります。たとえば、3 つの疑問符(?)を追加した場合、3 つのパラメータを順番に追加する必要があります。

      add-query-param を示す画像 add-query-param を示す画像

      クエリ パラメータを追加する手順は次のとおりです。

      1. [Type] リストから、パラメータのデータ型を選択します。
      2. [] フィールドに、パラメータの値を入力します。
      3. 複数のパラメータを追加するには、[+ クエリ パラメータを追加] をクリックします。

カスタムクエリ アクションの使用方法については、アクションの例をご覧ください。

アクションの例

このセクションでは、このコネクタでいくつかのアクションを実行する方法について説明します。

例 - GROUP BY クエリを実行する

  1. [Configure connector task] ダイアログで、[アクション] を選択します。
  2. [カスタムクエリを実行] アクションを選択して、[完了] をクリックします。
  3. [コネクタ] タスクの [タスク入力] セクションで、[カスタム クエリを編集] をクリックします。[カスタムクエリ] ダイアログが開きます。
  4. [カスタムクエリ] ダイアログで、次の SQL クエリを入力し、[保存] をクリックします。
          Select E.EMPLOYEE_ID, E.EMPLOYEE_NAME, E.CITY
          FROM EMPLOYEES E
          LEFT JOIN EMPLOYEE_DEPARTMENT ED ON E.EMPLOYEE_ID=ED.ID 
          WHERE E.EMPLOYEE_NAME = 'John'
          GROUP BY E.CITY,E.EMPLOYEE_ID,E.EMPLOYEE_NAME
        

    この例では、EMPLOYEES テーブルと EMPLOYEE_DEPARTMENT テーブルから従業員レコードを選択します。アクションが成功すると、コネクタタスクの connectorOutputPayload レスポンス パラメータにクエリ結果セットが設定されます。

例 - パラメータ化されたクエリを実行する

  1. [Configure connector task] ダイアログで、[アクション] を選択します。
  2. [カスタムクエリを実行] アクションを選択して、[完了] をクリックします。
  3. [コネクタ] タスクの [タスク入力] セクションで、フィールドに次の値を設定します。
    1. タイムアウト時間: 10
    2. 最大行数: 3
  4. [+ パラメータ名を追加] をクリックして、次の値を入力します。
    1. タイプ: VARCHAR
    2. 値: John
  5. [カスタムクエリを編集] をクリックします。[カスタムクエリ] ダイアログが開きます。
  6. [カスタムクエリ] ダイアログで、次の SQL クエリを入力し、[保存] をクリックします。
      Select C.ID,C.NAME,C.CITY,C.O_DATE,E.EMPLOYEE_ID 
      FROM customqueries C,Employees E 
      WHERE C.ID=E.Employee_id and C.NAME=?
  7. この例では、従業員の名前が John である従業員レコードを選択します。従業員の名前はパラメータ化されています。 アクションが成功すると、コネクタタスクの connectorOutputPayload レスポンス パラメータの値は次のようになります。

    [{
    "NAME": "John",
    "O_DATE": "2023-06-01 00:00:00.0",
    "EMPLOYEE_ID": 1.0
    }, {
    "NAME": "John",
    "O_DATE": "2021-07-01 00:00:00.0",
    "EMPLOYEE_ID": 3.0
    }, {
    "NAME": "John",
    "O_DATE": "2022-09-01 00:00:00.0",
    "EMPLOYEE_ID": 4.0
    }]

例 - シーケンス値を使用してレコードを挿入する

  1. [Configure connector task] ダイアログで、[アクション] を選択します。
  2. [カスタムクエリを実行] アクションを選択して、[完了] をクリックします。
  3. [カスタムクエリ] ダイアログで、次の SQL クエリを入力し、[保存] をクリックします。
      INSERT INTO AUTHOR(id,title) VALUES(author_table_id_seq.NEXTVAL,'Sample_book_title')
  4. この例では、既存の author_table_id_seq シーケンス オブジェクトを使用して、AUTHOR テーブルにレコードを挿入します。アクションが成功すると、コネクタタスクの connectorOutputPayload レスポンス パラメータの値は次のようになります。

    [{
    }]

例 - 集計関数を使用してクエリを実行する

  1. [Configure connector task] ダイアログで、[アクション] を選択します。
  2. [カスタムクエリを実行] アクションを選択して、[完了] をクリックします。
  3. [カスタムクエリ] ダイアログで、次の SQL クエリを入力し、[保存] をクリックします。
      SELECT SUM(SALARY) as Total FROM EMPLOYEES
      
  4. この例では、EMPLOYEES テーブルの給与の集計値を計算します。アクションが成功すると、コネクタタスクの connectorOutputPayload レスポンス パラメータの値は次のようになります。

    [{
    "TOTAL": 13000.0
    }]  
      

例 - 新しいテーブルを作成する

  1. [Configure connector task] ダイアログで、[アクション] を選択します。
  2. [カスタムクエリを実行] アクションを選択して、[完了] をクリックします。
  3. [カスタムクエリ] ダイアログで、次の SQL クエリを入力し、[保存] をクリックします。
        CREATE TABLE TEST1 (ID INT, NAME VARCHAR(40),DEPT VARCHAR(20),CITY VARCHAR(10))
     
  4. この例では、TEST1 テーブルを作成します。アクションが成功すると、コネクタタスクの connectorOutputPayload レスポンス パラメータの値は次のようになります。

    [{
    }]

エンティティ オペレーションの例

例 - 全従業員を一覧表示する

この例では、Employee エンティティ内のすべての従業員を一覧表示します。

  1. [Configure connector task] ダイアログで、[Entities] をクリックします。
  2. Entity から Employee を選択します。
  3. [List] オペレーションを選択してから、[完了] をクリックします。
  4. 必要に応じて、コネクタタスクの [タスク入力] セクションでフィルタ句を指定して、結果セットをフィルタリングできます。

例 - 従業員の詳細を取得する

この例では、Employee エンティティから ID が 45 の従業員の詳細を取得します。

  1. [Configure connector task] ダイアログで、[Entities] をクリックします。
  2. Entity から Employee を選択します。
  3. [Get] オペレーションを選択してから、[完了] をクリックします。
  4. [コネクタタスクの [タスク入力 セクションで [entityId] をクリックし、[デフォルト値] フィールドに 45 を入力します。

    ここで、45Employee エンティティの主キー値です。

例 - 従業員レコードを作成する

この例では、Employee エンティティに新しい従業員レコードを追加します。

  1. [Configure connector task] ダイアログで、[Entities] をクリックします。
  2. Entity から Employee を選択します。
  3. [Create] オペレーションを選択してから、[完了] をクリックします。
  4. [コネクタ] タスクの [タスク入力] セクションで、connectorInputPayload をクリックし、Default Valueフィールドに次のような値を入力します。
    {
    "EMPLOYEE_ID": 69.0,
    "EMPLOYEE_NAME": "John",
    "CITY": "Bangalore"
    }

    統合に成功すると、コネクタタスクの connectorOutputPayload フィールドには次と似たような値が含まれます。

     {
    "ROWID": "AAAoU0AABAAAc3hAAF"
    }

例 - 従業員レコードを更新する

この例では、Employee エンティティでの ID が 69 である従業員レコードを更新します。

  1. [Configure connector task] ダイアログで、[Entities] をクリックします。
  2. Entity から Employee を選択します。
  3. [Update] オペレーションを選択してから、[完了] をクリックします。
  4. [コネクタ] タスクの [タスク入力] セクションで、connectorInputPayload をクリックし、Default Valueフィールドに次のような値を入力します。
    {
    "EMPLOYEE_NAME": "John",
    "CITY": "Mumbai"
    }
  5. [エンティティ ID] をクリックし、[デフォルト値] フィールドに「69」と入力します。

    [entityId] を指定する代わりに、[filterClause] を 69 に設定することもできます。

    統合に成功すると、コネクタタスクの connectorOutputPayload フィールドの値は次のようになります。

    {
    }

例 - 従業員レコードを削除する

この例では、Employee エンティティ内の ID が 35 の従業員レコードを削除します。

  1. [Configure connector task] ダイアログで、[Entities] をクリックします。
  2. Entity から Employee を選択します。
  3. [Delete] オペレーションを選択してから、[完了] をクリックします。
  4. [コネクタタスクの [タスク入力 セクションで [entityId] をクリックし、[デフォルト値] フィールドに 35 を入力します。

Terraform を使用して接続を作成する

Terraform リソースを使用して、新しい接続を作成できます。

Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。

接続作成用の Terraform テンプレートのサンプルを表示するには、サンプル テンプレートをご覧ください。

Terraform を使用してこの接続を作成する場合は、Terraform 構成ファイルで次の変数を設定する必要があります。

パラメータ名 データ型 必須 説明
service_name STRING False Oracle データベースのサービス名。
data_source STRING False Oracle Net サービス名、Connect Descriptor(TNS Connect 文字列とも呼ばれます)、接続先のデータベースを識別する簡単な接続名。
include_synonyms BOOLEAN False 類義語についてメタデータをクエリし、エンティティとして利用できるようにします。このプロパティを false に設定すると、メタデータのパフォーマンスが向上する場合があります。
abandoned_connection_timeout INTEGER False 放棄された接続のタイムアウト(秒単位)は、借用した接続が放棄済みとみなされ、接続プールによって再利用されるまでの未使用の状態を維持できる時間を決定します。
inactive_connection_timeout INTEGER False 非アクティブな接続タイムアウト(秒単位)は、使用可能な接続がプールから削除されるまでに接続プールに保持される時間を決定します。
max_connection_reuse_time INTEGER False 最大接続再利用時間(秒単位)は、プールが接続を削除してからクローズするまでの、接続を再利用できる最大時間を指定します。
ttl_connection_timeout INTEGER False 接続が引き続き使用できる最大時間(秒単位)。
browsable_schemas STRING False カンマ区切りのスキーマ(例:SchemaA、SchemaB など)を使用して、接続のエンティティとアクションを取得するときに使用します。デフォルトでユーザーのスキーマを使用します

統合で Oracle DB 接続を使用する

接続を作成すると、Apigee Integration と Application Integration の両方で使用できるようになります。この接続は、コネクタタスクを介して統合で使用できます。

  • Apigee Integration で Connectors タスクを作成して使用する方法については、Connectors タスクをご覧ください。
  • Application Integration で Connectors タスクを作成して使用する方法については、Connectors タスクをご覧ください。

Google Cloud コミュニティの助けを借りる

Google Cloud コミュニティの Cloud フォーラムで質問を投稿したり、このコネクタについてディスカッションしたりできます。

次のステップ