Oracle管理の異種間接続によるOracle以外のデータベースへのデータベース・リンクの作成

Autonomous Databaseは、Oracle管理の異機種間接続をサポートしているため、Oracle以外のデータベースへのデータベース・リンクを簡単に作成できます。

Oracle管理の異機種間接続でデータベース・リンクを使用する場合、Autonomous Databaseは、Oracle以外のデータベースへの接続を構成および設定します。

ノート

Oracle管理の異機種間接続では、リモート・データベースでの問合せ専用接続がサポートされます。つまり、Oracle管理の異機種間接続を使用する場合、更新はサポートされていません。

Autonomous DatabaseでOracle管理の異機種間接続を使用するための前提条件を次に示します:

  • ターゲット・データベースがパブリック・エンドポイントにある場合、CA署名証明書との着信SSL/TLS接続を許可するようにデータベースを構成する必要があります。

    Oracle管理の異機種間接続では、プライベート・エンドポイント上のターゲット・データベース・サービスへの接続がサポートされます(たとえば、サービスがプライベート・エンドポイントにある場合にOracle MySQL Database Serviceに接続できます)。プライベート・エンドポイントでOracle管理の異機種間接続を使用してoracle以外のデータベースに接続する場合、接続ではTCPプロトコルが使用されるため、ターゲット・データベースでSSL/TLSを構成する必要はありません。

    詳細は、Oracle管理の異機種間接続を使用したプライベート・エンドポイントでのOracle MySQLへのデータベース・リンクの作成を参照してください。

Oracle管理の異機種間接続を使用してOracle以外のデータベースへのデータベース・リンクを作成するには、次を実行します:

  1. Autonomous Databaseで、ターゲット・データベースにアクセスするための資格証明を作成します。DBMS_CLOUD.CREATE_CREDENTIALで指定するusernameおよびpasswordは、データベース・リンク内で使用されるターゲット・データベースの資格証明である。

    たとえば:

    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'AWS_REDSHIFT_LINK_CRED',
        username => 'nick',
        password => 'password'
      );
    END;
    /

    この操作では、資格証明が暗号化された形式でデータベースに格納されます。資格証明名には任意の名前を使用できます。credential_nameパラメータの指定は必須です。

    OAuth2を使用してGoogle Analytics、Google BigQuery、Google Drive、Youtube、ServiceNowまたはMicrosoft SharePointにアクセスするには、資格証明にparamsパラメータと値gcp_oauth2を含める必要があります。

    たとえば:

    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'SERVICENOW_OAUTH',
        params => JSON_OBJECT(
                     'gcp_oauth2' value JSON_OBJECT(
                            'client_id' value 'CLIENT_ID', 
                            'client_secret' value 'CLIENT_SECRET', 
                            'refresh_token' value 'Refresh_Token')));
    END;
    /

    詳細は「CREATE_CREDENTIALプロシージャ」を参照してください。

  2. DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKを使用して、ターゲット・データベースに対するデータベース・リンクを作成します。

    たとえば、AWS Redshiftへのデータベース・リンクを作成するには:

    BEGIN
         DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
              db_link_name => 'AWSREDSHIFT_LINK', 
              hostname => 'example.com', 
              port => '5439',
              service_name => 'example_service_name',
              credential_name => 'AWS_REDSHIFT_LINK_CRED',
              gateway_params => JSON_OBJECT('db_type'  value 'awsredshift'),
              ssl_server_cert_dn => NULL);
    END;
    /

    service_nameは、Oracle以外のデータベースのデータベース名です。

    指定するgateway_params db_type値は、サポートされている値のいずれかである必要があります。

    db_type値 データベース・タイプ

    awsredshift

    Amazon Redshift

    azure

    Microsoft SQL Server

    Azure SQL

    Azure Synapse Analytics

    db2

    IBM Db2

    google_analytics

    Googleアナリティクス

    google_bigquery

    Google BigQuery

    google_drive

    Googleドライブ

    hive

    Apache Hive

    mongodb

    MongoDB

    mysql

    MySQL

    mysql_community

    MySQL Community Edition

    postgres

    PostgreSQL

    salesforce

    Salesforce

    servicenow ServiceNow
    sharepoint Microsoft SharePoint

    snowflake

    雪片

    youtube

    YouTube

    Autonomous Databaseは、ターゲット・データベースへのセキュアな接続を自動的に構成および処理し、接続はエンドツーエンドで暗号化されます。Oracle管理の異機種間接続は、一般的な信頼できるルートおよび中間SSL証明書の大部分を含むウォレットで事前構成されています。したがって、ssl_server_cert_dnパラメータの値としてNULLを指定する必要があります。

    Oracle管理の異機種間接続でデータベース・リンクを使用する場合のセキュリティを確保するには、接続ポートが制限され、SSL/TLSが有効になっている必要があります。ターゲット・データベース・ポートは、portパラメータで指定します。

    サポートされているOracle以外のデータベース・タイプのリストは、Oracle管理の異機種間接続データベース・タイプおよびポートを参照してください。

    HETEROGENEOUS_CONNECTIVITY_INFOビューは、サポートされているOracle異機種間接続タイプに関する情報を提供し、サポートされている各タイプのPL/SQLコード・サンプルを示します。詳細は、異機種間接続情報およびサンプルへのアクセスを参照してください。

    gateway_paramsパラメータを指定する場合、一部のdb_type値では、追加のgateway_paramsパラメータがサポートされます。

    db_type 指定されたdb_typeでサポートされるゲートウェイ・パラメータ
    azure

    db_type値がazureの場合、NTLM/AD認証をサポートする2つのオプション・パラメータauth_methodおよびdomainがあります。

    NTLMv2が構成されている場合は、auth_method=10を設定し、domainをWindowsドメイン値に設定します。

    Azure Active Directoryパスワードを使用するには、auth_method=13を設定します。auth_method=13を使用してOracleオンプレミス・データベースにアクセスしないでください。

    詳細は、Microsoft SQL Serverの認証方法を参照してください。

    google_analytics

    db_type値がgoogle_analyticsの場合、hostnameは使用されず、example.comなどの値を指定できます。

    db_type google_analyticsの場合、資格証明は、gcp_oauth2値(client_idclient_secretおよびrefresh_token)を指定したparamsパラメータを使用して、OAuthタイプの資格証明である必要があります。詳細は「CREATE_CREDENTIALプロシージャ」を参照してください。

    google_bigquery

    db_typegoogle_bigqueryの場合、パラメータprojectは有効です。このパラメータは、google_bigqueryのプロジェクト名を指定します。これは必須です。

    db_type値がgoogle_bigqueryの場合、hostnameは使用されず、example.comなどの値を指定できます。

    db_type google_bigqueryの場合、資格証明は、gcp_oauth2値(client_idclient_secretおよびrefresh_token)を指定したparamsパラメータを使用して、OAuthタイプの資格証明である必要があります。詳細は「CREATE_CREDENTIALプロシージャ」を参照してください。

    google_drive

    db_type google_driveの場合、DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKで指定する資格証明は、gcp_oauth2値(client_idclient_secretおよびrefresh_token)を指定したparamsパラメータを使用して、OAuthタイプの資格証明である必要があります。

    Google Driveに接続してデータを取得するには、ゲートウェイ・パラメータdirectory_nameおよびfile_nameを指定する必要があります。これらのパラメータは、JSONレスポンスをリレーショナル・モデルにマップするモデル・ファイル(自動RESTファイル)を指定します。モデル・ファイルは、JSONレスポンスを処理するためのエンドポイント、表マッピングおよびHTTPレスポンス・コードを指定します。詳細は、モデル・ファイルの構文およびモデル・ファイルの例を参照してください。

    gateway_paramsパラメータをdb_type google_driveとともに使用する場合は、gateway_paramsパラメータdb_typeに値'google_drive'を指定し、directory_nameおよびfile_nameパラメータをOAuthタイプの資格証明とともに指定する必要があります。

    directory_nameパラメータは、REST構成ファイルを含むディレクトリを指定します。このディレクトリは、次のように作成できます。

    create or replace directory google_drive_dir as 'GOOGLE_DRIVE_DIR';

    自動RESTファイルを取得して、指定したディレクトリにダウンロードします。たとえば:

    exec DBMS_CLOUD.get_object('google_drive_dir_cred',
         'https://objectstorage.<...>/google_drive.rest','GOOGLE_DRIVE_DIR');

    file_name値を、ダウンロードした自動RESTファイルの名前であるgoogle_drive.restに設定します。その後、OAuth 2.0でREST構成ファイルを使用できます。

    hive

    db_typehiveの場合、パラメータhttp_pathは有効です。このパラメータは、必要に応じて、Hiveインスタンスに接続するためのHttpPath値を指定します。

    salesforce

    gateway_paramsパラメータをdb_type salesforceとともに使用する場合は、security_tokenオプションを指定する必要があります。セキュリティ・トークンは、大/小文字が区別される英数字コードです。

    詳細は、セキュリティ・トークンのリセットを参照してください。

    gateway_paramsパラメータをdb_type salesforceとともに使用する場合は、正しいhostnameパラメータを指定する必要があります。

    Salesforceでは、Salesforceサービス・アカウントに次の2つの形式のURLが提供されます。

    • xxxx.develop.lightning.force.com形式のURL
    • 「プロファイルの表示」タブに示されているURLのxxxxmy.salesforce.com形式。

    Oracle管理の異機種間接続では、hostnameパラメータ値のxxxxmy.salesforce.com形式のURLのみがサポートされます。

    servicenow

    ServiceNowに接続してデータを取得するには、ゲートウェイ・パラメータdirectory_nameおよびfile_nameを指定する必要があります。これらのパラメータは、JSONレスポンスをリレーショナル・モデルにマップするモデル・ファイル(REST構成ファイル)を指定します。モデル・ファイルは、JSONレスポンスを処理するためのエンドポイント、表マッピングおよびHTTPレスポンス・コードを指定します。詳細は、モデル・ファイルの構文およびモデル・ファイルの例を参照してください。

    gateway_paramsパラメータをdb_type servicenowとともに使用すると、次の2つのオプションがサポートされます。

    • 基本認証: gateway_paramsパラメータdb_typeに値'servicenow'を指定し、ユーザー名/パスワード・タイプの資格証明とともにdirectory_nameおよびfile_nameパラメータを指定する必要があります。

    • OAuth 2.0認証: gateway_paramsパラメータdb_typeに値'servicenow'を指定し、directory_namefile_nameおよびtoken_uriパラメータをOAuthタイプの資格証明とともに指定する必要があります。

      db_type servicenowを使用したOAuth 2.0認証の場合、gcp_oauth2値が指定されたparamsパラメータ(client_idclient_secretおよびrefresh_token)を使用して、資格証明はOAuthタイプの資格証明である必要があります。詳細は「CREATE_CREDENTIALプロシージャ」を参照してください。

    directory_nameパラメータは、ServiceNow REST構成ファイルを使用してディレクトリを指定します。このディレクトリは、次のように作成できます。

    create or replace directory servicenow_dir as 'SERVICENOW_DIR';

    ServiceNow REST構成ファイルを取得して、指定したディレクトリにダウンロードします。たとえば:

    exec DBMS_CLOUD.get_object('servicenow_dir_cred',
         'https://objectstorage.<...>/servicenow.rest','SERVICENOW_DIR');

    file_name値を、ダウンロードしたREST構成ファイルservicenow.restの名前に設定します。

    次に、ServiceNow REST構成ファイルと基本認証またはOAuth2.0のいずれかを使用できます。サンプルについては、HETEROGENEOUS_CONNECTIVITY_INFOビューを参照してください。

    sharepoint

    gateway_paramsパラメータをdb_type sharepointとともに使用する場合は、auth_uriscopeservice_urlおよびtoken_uriの値も指定します。

    db_type sharepointの場合、DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKで指定する資格証明は、gcp_oauth2値(client_idclient_secretおよびrefresh_token)を指定したparamsパラメータを使用して、OAuthタイプの資格証明である必要があります。詳細は「CREATE_CREDENTIALプロシージャ」を参照してください。tenant_id.sharepoint.com/.default offline_accessのrefresh_tokenを生成します。詳細は、スコープの決定およびOAuth 2.0認証を参照してください。

    db_type sharepointgateway_paramsの値を設定します。

    snowflake

    gateway_paramsパラメータをdb_type snowflakeとともに使用する場合は、スノーフレーク・アカウント識別子をhostnameパラメータとして使用します。この場合、ドライバはsnowflakecomupting.comを追加するため、ホスト名のこの部分を明示的に渡しません。Snowflakeアカウント識別子を検索するには、クラウド・プラットフォームおよびリージョン別のアカウント識別子フォーマットを参照してください。

    たとえば、Snowflakeアカウントの場合:

    https://example-marketing_test_account.snowflakecomputing.com

    hostname値を"example-marketing_test_account"に設定します。

    db_typeSNOWFLAKEの場合、オプションのパラメータroleschemaおよびwarehouseは有効です。これらの値は、デフォルト以外の異なるスキーマ、ロールまたはウェアハウスの値を指定します。たとえば:

    gateway_params => JSON_OBJECT(
         'db_type' value 'snowflake',
         'role' value 'ADMIN',
         'schema' value 'PUBLIC',
         'warehouse' value 'TEST' )
    youtube

    YouTubeに接続してデータを取得するには、パラメータdirectory_nameおよびfile_nameを指定する必要があります。これらのパラメータは、JSONレスポンスをリレーショナル・モデルにマップするモデル・ファイル(REST構成ファイル)を指定します。モデル・ファイルは、JSONレスポンスを処理するためのエンドポイント、表マッピングおよびHTTPレスポンス・コードを指定します。詳細は、モデル・ファイルの構文およびモデル・ファイルの例を参照してください。

    db_type youtubeの場合、資格証明は、gcp_oauth2値(client_idclient_secretおよびrefresh_token)を指定したparamsパラメータを使用して、OAuthタイプの資格証明である必要があります。詳細は「CREATE_CREDENTIALプロシージャ」を参照してください。

    directory_nameパラメータは、YouTube REST構成ファイルを含むディレクトリを指定します。

    たとえば、このディレクトリを作成し、必要なコンテンツを追加するには:

    1. Autonomous Databaseインスタンスにディレクトリを作成します:

      create or replace directory youtube_dir as 'YOUTUBE_DIR';
    2. 自動保存REST構成ファイルを取得して、指定したディレクトリにダウンロードします。たとえば:

      exec DBMS_CLOUD.get_object('youtube_dir_cred',
           'https://objectstorage.<...>/youtube.rest','YOUTUBE_DIR');
    3. file_name値を、ダウンロードしたREST構成ファイル'youtube.rest'の名前に設定します。

    その後、OAuth2.0でREST構成ファイルを使用できます。サンプルについては、HETEROGENEOUS_CONNECTIVITY_INFOビューを参照してください。

    詳細は、CREATE_DATABASE_LINKプロシージャを参照してください。

  3. 作成したデータベース・リンクを使用すると、ターゲット・データベースのデータにアクセスできます。

    たとえば:

    SELECT count(*) FROM sales@AWSREDSHIFT_LINK

    SELECTをGoogle BigQueryとともに使用するときに指定する表名は、引用符で囲む必要があります。たとえば:

    SELECT count(*) FROM "sales"@GOOGLE_BIGQUERY_LINK
ノート

ステップ1で作成した資格証明(ターゲット・データベースの資格証明)では、ターゲット・ユーザーのパスワードが変更された場合、ターゲット・ユーザーの資格証明が含まれている資格証明は、次のように更新できます:

BEGIN
    DBMS_CLOUD.UPDATE_CREDENTIAL (
       credential_name => 'AWS_REDSHIFT_LINK_CRED',
       attribute => 'PASSWORD',
       value => 'password');
END;
/

ここで、passwordは新しいパスワードです。

この操作の後、この資格証明を使用する既存のデータベース・リンクは、データベース・リンクを削除して再作成しなくても引き続き機能します。

その他の情報については、次のWebサイトを参照してください。

Oracle管理の異機種間接続を使用したプライベート・エンドポイントでのOracle MySQLへのデータベース・リンクの作成

Autonomous Databaseは、Oracle管理の異機種間接続をサポートしているため、プライベート・エンドポイントでOracle MySQL Database Serviceへのデータベース・リンクを簡単に作成できます。Oracle管理の異機種間接続でデータベース・リンクを使用する場合、Autonomous DatabaseはOracle MySQL Database Serviceへの接続を構成および設定します。

プライベート・エンドポイントでOracle MySQL Database ServiceとOracle管理の異機種間接続を使用するための前提条件を次に示します。

  • VCN内のOracle MySQL Database ServiceのプライベートIPを指すプライベートDNSゾーンを使用して、DNS名を作成します。プライベートDNSを参照してください。
  • 同じサブネット上にプライベート・エンドポイントを含むAutonomous Databaseを作成します。
  • Oracle MySQL Database ServiceのVCNを構成して、ポート3306での受信接続を許可します。

Oracle管理の異機種間接続を使用して、プライベート・エンドポイントでOracle MySQL Database Serviceへのデータベース・リンクを作成するには、次を実行します:

  1. Autonomous Databaseで、Oracle MySQL Database Serviceにアクセスするための資格証明を作成します。DBMS_CLOUD.CREATE_CREDENTIALで指定するusernameおよびpasswordは、データベース・リンク内で使用されるOracle MySQL Database Serviceの資格証明です。
    ノート

    credential_nameパラメータの指定は必須です。

    たとえば:

    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'MYSQL_LINK_CRED',
        username => 'NICK',
        password => 'password'
      );
    END;
    /
    

    この操作では、資格証明が暗号化された形式でデータベースに格納されます。資格証明名には任意の名前を使用できます。

  2. DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKを使用して、Oracle MySQL Database Serviceへのデータベース・リンクを作成します。

    たとえば、データベース・リンクを作成するには、次のようにします。

    BEGIN
         DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
              db_link_name => 'MYSQL_LINK', 
              hostname => 'mysql.example.com', 
              port => '3306',
              service_name => 'mysql.example_service_name',
              ssl_server_cert_dn => NULL,
              credential_name => 'MYSQL_LINK_CRED',
              private_target => TRUE,
              gateway_params => JSON_OBJECT('db_type' value 'mysql'));
    END;
    /
  3. 作成したデータベース・リンクを使用すると、ターゲット・データベースのデータにアクセスできます。

    たとえば:

    SELECT count(*) FROM sales@MYSQL_LINK
ノート

ステップ1で作成した資格証明(ターゲット・データベースの資格証明)では、ターゲット・ユーザーのパスワードが変更された場合、ターゲット・ユーザーの資格証明が含まれている資格証明は、次のように更新できます:

BEGIN
    DBMS_CLOUD.UPDATE_CREDENTIAL (
       credential_name => 'MYSQL_LINK_CRED',
       attribute => 'PASSWORD',
       value => 'password');
END;
/

ここで、passwordは新しいパスワードです。

この操作の後、この資格証明を使用する既存のデータベース・リンクは、データベース・リンクを削除して再作成しなくても引き続き機能します。

その他の情報については、次のWebサイトを参照してください。

Oracle管理の異機種間接続データベース・タイプおよびポート

Oracle管理の異機種間接続でAutonomous Databaseから接続できるOracle以外のデータベースを示し、各データベース・タイプでサポートされているポート値を示します。また、各データベース・タイプでサポートされているデータベース・バージョンを確認できるリンクも用意されています。

ノート

Oracleでは、Progress DataDirectコネクタを使用します。「データベース・サポート」列には、Progress Webサイトへのリンクがあり、各データベース・タイプでサポートされているデータベース・バージョンを確認できます。
データベース・タイプ db_type値 必須ポート データベース・サポート

Amazon Redshift

awsredshift

5439

Amazon Redshiftでサポートされているバージョン

Azure SQL

Microsoft SQL Server

Azure Synapse Analytics

azure

1433

Azure SQLでサポートされているバージョン

Azure Synapse Analyticsでサポートされているバージョン

Apache Hive

hive

443

Hiveでサポートされているバージョン

Googleアナリティクス

google_analytics

443

Google Analyticsでサポートされているバージョン

Google BigQuery

google_bigquery

443

Google BigQueryでサポートされているバージョン

Googleドライブ

google_drive

443

Googleドライブでサポートされているバージョン

Apache Hive

hive

443

Hiveでサポートされているバージョン

IBM Db2 11.5.6以上

IBM Db2 11.5.5以降

db2

25000

50000

IBM Db2でサポートされているバージョン

Microsoft SharePoint

sharepoint

443

Microsoft SharePointでサポートされているバージョン

MongoDB

mongodb

27017

MongoDBサポートされるバージョン

MySQL

mysql

3306

MySQLサポートされるバージョン

MySQL Community Edition

mysql_community

3306

 

PostgreSQL

postgres

5432

PostgreSQLサポートされるバージョン

Salesforce

salesforce

19937

Salesforceでサポートされているバージョン

ServiceNow

servicenow

443

ServiceNowサポートされるバージョン

雪片

snowflake

443

スノーフレークでサポートされているバージョン

ユーチューブ

youtube

443 Youtubeでサポートされているバージョン

異機種間の接続情報およびサンプルへのアクセス

Oracle Autonomous Databaseは、Oracle以外のデータベースへのデータベース・リンクの異機種間接続情報を提供します。

HETEROGENEOUS_CONNECTIVITY_INFOビューは、サポートされているOracle異機種間接続タイプに関する情報を提供し、サポートされている各タイプのPL/SQLコード・サンプルを示します。

たとえば:

SELECT * FROM HETEROGENEOUS_CONNECTIVITY_INFO WHERE DATABASE_TYPE = 'hive';

HETEROGENEOUS_CONNECTIVITY_INFOビュー

HETEROGENEOUS_CONNECTIVITY_INFOビューには、データベース・リンクおよびOracle Managed Heterogeneous Connectivityを使用してPL/SQLに接続するための接続情報および例が表示されます。

データ型 摘要
DATABASE_TYPE VARCHAR2(32)

gateway_paramsパラメータで使用されるデータベース・タイプ値。

REQUIRED_PORT NUMBER

データベース・タイプでサポートされるポート値。

DESCRIPTION CLOB

DATABASE_TYPEの説明を指定します。

OPTIONAL_PARAMETERS VARCHAR2(1024)

DATABASE_TYPEの有効なオプション・パラメータを指定します。

SAMPLE_USAGE CLOB

DATABASE_TYPEのPL/SQLの使用例を示します。