Création de liens de base de données vers des bases de données autres qu'Oracle avec une connectivité hétérogène gérée par Oracle

La prise en charge d'Autonomous Database pour la connectivité hétérogène gérée par Oracle facilite la création de liens de base de données vers des bases de données non Oracle.

Lorsque vous utilisez des liens de base de données avec une connectivité hétérogène gérée par Oracle, Autonomous Database configure et configure la connexion à la base de données non Oracle.

Remarque

Avec la connectivité hétérogène gérée par Oracle, la prise en charge concerne les connexions de requête uniquement sur la base de données distante. Autrement dit, les mises à jour ne sont pas prises en charge lors de l'utilisation de la connectivité hétérogène gérée par Oracle.

Pour utiliser la connectivité hétérogène gérée par Oracle avec Autonomous Database, procédez comme suit :

  • Lorsque la base de données cible se trouve sur une adresse publique, elle doit être configurée pour autoriser les connexions SSL/TLS entrantes avec des certificats signés par l'autorité de certification.

    La connectivité hétérogène gérée par Oracle prend en charge les connexions aux services de base de données cible sur les adresses privées (par exemple, vous pouvez vous connecter à Oracle MySQL Database Service lorsque le service se trouve sur une adresse privée). Lorsque vous vous connectez à une base de données non oracle avec une connectivité hétérogène gérée par Oracle sur une adresse privée, la connexion utilise le protocole TCP et ne nécessite pas que SSL/TLS soit configuré sur la base de données cible.

    Pour plus d'informations, reportez-vous à Création de liens de base de données vers Oracle MySQL sur une adresse privée avec une connectivité hétérogène gérée par Oracle.

Pour créer des liens de base de données vers une base de données non Oracle à l'aide de la connectivité hétérogène gérée par Oracle, procédez comme suit :

  1. Sur Autonomous Database, créez des informations d'identification pour accéder à la base de données cible. Les informations d'identification username et password que vous indiquez avec DBMS_CLOUD.CREATE_CREDENTIAL sont celles de la base de données cible utilisée dans le lien de base de données.

    Par exemple :

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

    Cette opération stocke les informations d'identification dans la base de données dans un format crypté. Vous pouvez utiliser n'importe quel nom pour le nom des informations d'identification. Le paramètre credential_name est requis.

    Pour accéder à Google Analytics, Google BigQuery, Google Drive, Youtube, ServiceNow ou Microsoft SharePoint avec OAuth2, les informations d'identification doivent inclure le paramètre params avec la valeur gcp_oauth2.

    Par exemple :

    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;
    /

    Pour plus d'informations, reportez-vous à Procédure CREATE_CREDENTIAL.

  2. Créez le lien de base de données vers la base de données cible à l'aide de DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK.

    Par exemple, pour créer un lien de base de données vers 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 est le nom de la base de données non Oracle.

    La valeur gateway_params db_type que vous fournissez doit être l'une des valeurs prises en charge :

    Valeur db_type Type de base de données

    awsredshift

    Amazon Redshift

    azure

    Microsoft SQL Server

    Azure SQL

    Azure Synapse Analytics

    db2

    IBM Db2

    google_analytics

    Google Analytics

    google_bigquery

    Google BigQuery

    google_drive

    Google Drive

    hive

    Apache Hive

    mongodb

    MongoDB

    mysql

    MySQL

    mysql_community

    MySQL Community Edition

    postgres

    PostgreSQL

    salesforce

    Salesforce

    servicenow ServiceNow
    sharepoint Microsoft SharePoint

    snowflake

    Flocon de neige

    youtube

    YouTube

    Autonomous Database configure et gère automatiquement la connexion sécurisée à une base de données cible, et vos connexions sont cryptées de bout en bout. La connectivité hétérogène gérée par Oracle est préconfigurée avec un portefeuille qui contient la plupart des certificats SSL racine et intermédiaires sécurisés courants. Par conséquent, NULL doit être fourni comme valeur pour le paramètre ssl_server_cert_dn.

    Pour garantir la sécurité lors de l'utilisation de liens de base de données avec une connectivité hétérogène gérée par Oracle, le port de connexion est restreint et SSL/TLS doit être activé. Vous indiquez le port de base de données cible avec le paramètre port.

    Pour obtenir la liste des types de base de données non Oracle pris en charge, reportez-vous à Ports et types de base de données de connectivité hétérogène gérés par Oracle.

    La vue HETEROGENEOUS_CONNECTIVITY_INFO fournit des informations sur les types de connectivité hétérogène Oracle pris en charge et affiche un exemple de code PL/SQL pour chaque type pris en charge. Pour plus d'informations, reportez-vous à Accès aux exemples et aux informations sur la connectivité hétérogène.

    Lorsque vous indiquez le paramètre gateway_params, pour certaines valeurs db_type, des paramètres gateway_params supplémentaires sont pris en charge :

    Valeur db_type Paramètres de passerelle pris en charge avec db_type spécifié
    azure

    Lorsque la valeur db_type est azure, il existe deux paramètres facultatifs, auth_method et domain, pour prendre en charge l'authentification NTLM/AD.

    Lorsque NTLMv2 est configuré, définissez auth_method=10 et domain sur la valeur de domaine Windows.

    Pour utiliser un mot de passe Azure Active Directory, définissez auth_method=13. N'utilisez pas auth_method=13 pour accéder à une base de données sur site Oracle.

    Pour plus d'informations, reportez-vous à Méthode d'authentification Microsoft SQL Server.

    google_analytics

    Lorsque la valeur db_type est google_analytics, hostname n'est pas utilisé et vous pouvez fournir une valeur telle que example.com.

    Pour db_type google_analytics, les informations d'identification doivent être des informations d'identification de type OAuth utilisant le paramètre params avec des valeurs gcp_oauth2 indiquées (client_id, client_secret et refresh_token). Pour plus d'informations, reportez-vous à Procédure CREATE_CREDENTIAL.

    google_bigquery

    Lorsque db_type est défini sur google_bigquery, le paramètre project est valide. Ce paramètre indique le nom du projet sur google_bigquery et est obligatoire.

    Lorsque la valeur db_type est google_bigquery, hostname n'est pas utilisé et vous pouvez fournir une valeur telle que example.com.

    Pour db_type google_bigquery, les informations d'identification doivent être des informations d'identification de type OAuth utilisant le paramètre params avec des valeurs gcp_oauth2 indiquées (client_id, client_secret et refresh_token). Pour plus d'informations, reportez-vous à Procédure CREATE_CREDENTIAL.

    google_drive

    Pour db_type google_drive, les informations d'identification que vous fournissez avec DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK doivent être des informations d'identification de type OAuth utilisant le paramètre params avec des valeurs gcp_oauth2 indiquées (client_id, client_secret et refresh_token).

    Pour vous connecter à Google Drive et obtenir des données, vous devez fournir les paramètres de passerelle directory_name et file_name. Ces paramètres spécifient un fichier de modèle (fichier REST automatique) qui met en correspondance la réponse JSON avec le modèle relationnel. Le fichier modèle indique les adresses, le mapping de table et le code de réponse HTTP pour le traitement de la réponse JSON. Pour plus d'informations, reportez-vous aux sections Syntaxe des fichiers de modèle et Exemple de fichier de modèle.

    Lorsque vous utilisez le paramètre gateway_params avec db_type google_drive, vous devez fournir au paramètre gateway_params db_type la valeur 'google_drive', les paramètres directory_name et file_name, ainsi que les informations d'identification de type OAuth :

    Le paramètre directory_name indique le répertoire avec le fichier de configuration REST. Vous pouvez créer ce répertoire comme suit :

    create or replace directory google_drive_dir as 'GOOGLE_DRIVE_DIR';

    Obtenir et télécharger le fichier REST automatique dans le répertoire spécifié. Par exemple :

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

    Définissez la valeur file_name sur le nom du fichier REST automatique que vous avez téléchargé, "google_drive.rest". Vous pouvez ensuite utiliser le fichier de configuration REST avec OAuth 2.0.

    hive

    Lorsque db_type est défini sur hive, le paramètre http_path est valide. Ce paramètre indique la valeur HttpPath, si nécessaire, pour la connexion à l'instance Hive.

    salesforce

    Lorsque vous utilisez le paramètre gateway_params avec db_type salesforce, vous devez fournir l'option security_token. Le jeton de sécurité est un code alphanumérique sensible à la casse.

    Pour plus d'informations, reportez-vous à Réinitialisation du jeton de sécurité.

    Lorsque vous utilisez le paramètre gateway_params avec db_type salesforce, vous devez fournir le paramètre hostname correct.

    Salesforce fournit deux formes d'URL pour le compte de service Salesforce :

    • xxxx.develop.lightning.force.com forme d'URL
    • Forme d'URL xxxxmy.salesforce.com, comme indiqué sous l'onglet Afficher le profil.

    La connectivité hétérogène gérée par Oracle prend uniquement en charge le format d'URL xxxxmy.salesforce.com pour la valeur de paramètre hostname.

    servicenow

    Pour vous connecter à ServiceNow et obtenir des données, vous devez fournir les paramètres de passerelle directory_name et file_name. Ces paramètres spécifient un fichier de modèle (fichier de configuration REST) qui met en correspondance la réponse JSON avec le modèle relationnel. Le fichier modèle indique les adresses, le mapping de table et le code de réponse HTTP pour le traitement de la réponse JSON. Pour plus d'informations, reportez-vous aux sections Syntaxe des fichiers de modèle et Exemple de fichier de modèle.

    Lorsque vous utilisez le paramètre gateway_params avec db_type servicenow, deux options sont prises en charge :

    • Authentification de base : vous devez fournir le paramètre gateway_params db_type avec la valeur 'servicenow', et fournir les paramètres directory_name et file_name avec les informations d'identification de type nom utilisateur/mot de passe.

    • Authentification OAuth 2.0 : vous devez fournir le paramètre gateway_params db_type avec la valeur 'servicenow', les paramètres directory_name, file_name et token_uri, ainsi que les informations d'identification de type OAuth.

      Pour l'authentification OAuth 2.0 avec db_type servicenow, les informations d'identification doivent être des informations d'identification de type OAuth utilisant le paramètre params avec des valeurs gcp_oauth2 indiquées (client_id, client_secret et refresh_token). Pour plus d'informations, reportez-vous à Procédure CREATE_CREDENTIAL.

    Le paramètre directory_name indique le répertoire avec le fichier de configuration REST ServiceNow. Vous pouvez créer ce répertoire comme suit :

    create or replace directory servicenow_dir as 'SERVICENOW_DIR';

    Obtenez et téléchargez le fichier de configuration REST ServiceNow dans le répertoire indiqué. Par exemple :

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

    Définissez la valeur file_name sur le nom du fichier de configuration REST que vous avez téléchargé, "servicenow.rest".

    Vous pouvez ensuite utiliser le fichier de configuration REST ServiceNow avec l'authentification de base ou OAuth2.0. Pour obtenir des exemples, reportez-vous à HETEROGENEOUS_CONNECTIVITY_INFO View.

    sharepoint

    Lorsque vous utilisez le paramètre gateway_params avec db_type sharepoint, indiquez également des valeurs pour auth_uri, scope, service_url et token_uri.

    Pour db_type sharepoint, les informations d'identification que vous fournissez avec DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK doivent être des informations d'identification de type OAuth utilisant le paramètre params avec des valeurs gcp_oauth2 indiquées (client_id, client_secret et refresh_token). Pour plus d'informations, reportez-vous à Procédure CREATE_CREDENTIAL. Générez le fichier refresh_token pour tenant_id.sharepoint.com/.default offline_access. Pour plus d'informations, reportez-vous aux sections suivantes : Determine the scope et OAuth 2.0 authentication.

    Définissez les valeurs pour gateway_params pour db_type sharepoint :

    snowflake

    Lorsque vous utilisez le paramètre gateway_params avec db_type snowflake, utilisez l'identificateur de compte Snowflake en tant que paramètre hostname. Dans ce cas, le pilote ajoute snowflakecomupting.com, de sorte que vous ne transmettez pas explicitement cette partie du nom d'hôte. Pour rechercher l'identifiant de votre compte Snowflake, reportez-vous à la rubrique Formats d'identifiant de compte par plate-forme et région cloud.

    Par exemple : pour le compte Snowflake :

    https://example-marketing_test_account.snowflakecomputing.com

    Définissez la valeur hostname sur "example-marketing_test_account".

    Lorsque db_type est défini sur SNOWFLAKE, les paramètres facultatifs role, schema et warehouse sont valides. Ces valeurs indiquent une valeur de schéma, de rôle ou d'entrepôt différente de la valeur par défaut. Par exemple :

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

    Pour vous connecter à YouTube et obtenir des données, vous devez fournir les paramètres directory_name et file_name. Ces paramètres spécifient un fichier de modèle (fichier de configuration REST) qui met en correspondance la réponse JSON avec le modèle relationnel. Le fichier modèle indique les adresses, le mapping de table et le code de réponse HTTP pour le traitement de la réponse JSON. Pour plus d'informations, reportez-vous aux sections Syntaxe des fichiers de modèle et Exemple de fichier de modèle.

    Pour db_type youtube, les informations d'identification doivent être des informations d'identification de type OAuth utilisant le paramètre params avec des valeurs gcp_oauth2 indiquées (client_id, client_secret et refresh_token). Pour plus d'informations, reportez-vous à Procédure CREATE_CREDENTIAL.

    Le paramètre directory_name indique le répertoire avec le fichier de configuration REST de YouTube.

    Par exemple, pour créer ce répertoire et ajouter le contenu requis :

    1. Créez un répertoire sur l'instance Autonomous Database :

      create or replace directory youtube_dir as 'YOUTUBE_DIR';
    2. Obtenez et téléchargez le fichier de configuration REST de redémarrage automatique dans le répertoire spécifié. Par exemple :

      exec DBMS_CLOUD.get_object('youtube_dir_cred',
           'https://objectstorage.<...>/youtube.rest','YOUTUBE_DIR');
    3. Définissez la valeur file_name sur le nom du fichier de configuration REST que vous avez téléchargé, 'youtube.rest'.

    Vous pouvez ensuite utiliser le fichier de configuration REST avec OAuth2.0. Pour obtenir des exemples, reportez-vous à HETEROGENEOUS_CONNECTIVITY_INFO View.

    Pour plus d'informations, reportez-vous à Procédure CREATE_DATABASE_LINK.

  3. Utilisez le lien de base de données pour accéder aux données de la base cible.

    Par exemple :

    SELECT count(*) FROM sales@AWSREDSHIFT_LINK

    Le nom de table que vous indiquez lorsque vous utilisez SELECT avec Google BigQuery doit être entre guillemets. Par exemple :

    SELECT count(*) FROM "sales"@GOOGLE_BIGQUERY_LINK
Remarque

Pour les informations d'identification que vous créez à l'étape 1, les informations d'identification de base de données cible, si le mot de passe de l'utilisateur cible change, vous pouvez mettre à jour les informations d'identification qui contiennent les informations d'identification de l'utilisateur cible comme suit :

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

password correspond au nouveau mot de passe.

Après cette opération, les liens de base de données existants qui utilisent ces informations d'identification continuent de fonctionner sans avoir à supprimer ni à recréer les liens de base de données.

Pour plus d'informations, voir :

Création de liens de base de données vers Oracle MySQL sur une adresse privée avec une connectivité hétérogène gérée par Oracle

La prise en charge d'Autonomous Database pour la connectivité hétérogène gérée par Oracle facilite la création de liens de base de données vers Oracle MySQL Database Service sur une adresse privée. Lorsque vous utilisez des liens de base de données avec une connectivité hétérogène gérée par Oracle, Autonomous Database configure et configure la connexion à Oracle MySQL Database Service.

Les prérequis suivants permettent d'utiliser une connectivité hétérogène gérée par Oracle avec Oracle MySQL Database Service sur une adresse privée :

  • Créez un nom DNS à l'aide d'une zone DNS privée pointant vers une adresse IP privée de votre instance Oracle MySQL Database Service dans votre VCN. Reportez-vous à DNS privé.
  • Créez une instance Autonomous Database avec une adresse privée sur le même sous-réseau.
  • Configurez le VCN pour Oracle MySQL Database Service afin d'autoriser les connexions entrantes sur le port 3306.

Pour créer des liens de base de données vers une instance Oracle MySQL Database Service sur une adresse privée à l'aide de la connectivité hétérogène gérée par Oracle, procédez comme suit :

  1. Sur Autonomous Database, créez des informations d'identification pour accéder à Oracle MySQL Database Service. username et password que vous indiquez avec DBMS_CLOUD.CREATE_CREDENTIAL sont les informations d'identification pour Oracle MySQL Database Service utilisées dans le lien de base de données.
    Remarque

    Vous devez indiquer le paramètre credential_name.

    Par exemple :

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

    Cette opération stocke les informations d'identification dans la base de données dans un format crypté. Vous pouvez utiliser n'importe quel nom pour le nom des informations d'identification.

  2. Créez le lien de base de données vers Oracle MySQL Database Service à l'aide de la commande DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK.

    Pour créer un lien de base de données, par exemple :

    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. Utilisez le lien de base de données pour accéder aux données de la base cible.

    Par exemple :

    SELECT count(*) FROM sales@MYSQL_LINK
Remarque

Pour les informations d'identification que vous créez à l'étape 1, les informations d'identification de base de données cible, si le mot de passe de l'utilisateur cible change, vous pouvez mettre à jour les informations d'identification qui contiennent les informations d'identification de l'utilisateur cible comme suit :

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

password correspond au nouveau mot de passe.

Après cette opération, les liens de base de données existants qui utilisent ces informations d'identification continuent de fonctionner sans avoir à supprimer ni à recréer les liens de base de données.

Pour plus d'informations, voir :

Ports et types de base de données de connectivité hétérogène gérés par Oracle

Affiche les bases de données non Oracle auxquelles vous pouvez vous connecter à partir d'Autonomous Database avec une connectivité hétérogène gérée par Oracle, et répertorie la valeur de port prise en charge pour chaque type de base de données. Fournit également un lien permettant de voir les versions de base de données prises en charge pour chaque type de base de données.

Remarque

Oracle utilise des connecteurs Progress DataDirect. La colonne Support de base de données fournit des liens vers le site Web Progress où vous pouvez trouver les versions de base de données prises en charge pour chaque type de base de données.
Type de base de données Valeur db_type Port requis Prise en charge des bases de données

Amazon Redshift

awsredshift

5 439

Versions prises en charge par Amazon Redshift

Azure SQL

Microsoft SQL Server

Azure Synapse Analytics

azure

1 433

Versions prises en charge par Azure SQL

Versions prises en charge par Azure Synapse Analytics

Apache Hive

hive

443

Versions prises en charge par Hive

Google Analytics

google_analytics

443

Versions prises en charge par Google Analytics

Google BigQuery

google_bigquery

443

Versions prises en charge par Google BigQuery

Google Drive

google_drive

443

Versions prises en charge par Google Drive

Apache Hive

hive

443

Versions prises en charge par Hive

IBM Db2 11.5.6 ou version ultérieure

IBM Db2 11.5.5 ou moins

db2

25 000

50 000

Versions prises en charge par IBM Db2

Microsoft SharePoint

sharepoint

443

Versions prises en charge par Microsoft SharePoint

MongoDB

mongodb

27 017

MongoDB Versions prises en charge

MySQL

mysql

3 306

MySQL Versions prises en charge

MySQL Community Edition

mysql_community

3 306

 

PostgreSQL

postgres

5 432

PostgreSQL Versions prises en charge

Salesforce

salesforce

19 937

Versions prises en charge par Salesforce

ServiceNow

servicenow

443

ServiceNow Versions prises en charge

Flocon de neige

snowflake

443

Versions prises en charge par le flocon de neige

YouTube

youtube

443 Versions prises en charge par Youtube

Accéder à des informations et exemples de connectivité hétérogènes

Oracle Autonomous Database fournit des informations de connectivité hétérogènes pour les liens de base de données vers des bases de données non Oracle.

La vue HETEROGENEOUS_CONNECTIVITY_INFO fournit des informations sur les types de connectivité hétérogène Oracle pris en charge et affiche un exemple de code PL/SQL pour chaque type pris en charge.

Par exemple :

SELECT * FROM HETEROGENEOUS_CONNECTIVITY_INFO WHERE DATABASE_TYPE = 'hive';

HETEROGENEOUS_CONNECTIVITY_INFO Vue

La vue HETEROGENEOUS_CONNECTIVITY_INFO répertorie les informations de connectivité et des exemples de connexion à PL/SQL à l'aide de liens de base de données et de la connectivité hétérogène gérée par Oracle.

Colonne Type de données Description
DATABASE_TYPE VARCHAR2(32)

Valeur de type de base de données utilisée avec le paramètre gateway_params.

REQUIRED_PORT NUMBER

Valeurs de port prises en charge pour le type de base de données.

DESCRIPTION CLOB

Spécifie une description pour DATABASE_TYPE.

OPTIONAL_PARAMETERS VARCHAR2(1024)

Spécifie les paramètres facultatifs valides pour DATABASE_TYPE.

SAMPLE_USAGE CLOB

Affiche un exemple d'utilisation de PL/SQL pour DATABASE_TYPE.