Création de liens de base de données d'une instance Autonomous Database vers une instance Oracle Database sur une adresse privée

Vous pouvez créer des liens de base de données d'une instance Autonomous Database vers une instance Oracle Database cible située sur une adresse privée.

Remarques :

Les liens de base de données d'Autonomous Database vers une base de données Oracle cible située sur une adresse privée ne sont pris en charge que dans les régions commerciales et les régions US Government.

Cette fonctionnalité est activée par défaut dans toutes les régions commerciales.

Cette fonctionnalité est activée par défaut dans les régions US Government pour les bases de données nouvellement provisionnées.

Pour les bases de données US Government existantes situées sur une adresse privée, si vous voulez créer des liens de base de données d'une instance Autonomous Database vers une cible dans une région US Government, vous pouvez enregistrer une demande de service auprès du support technique Oracle Cloud et demander l'activation de l'adresse privée dans la fonctionnalité de liaison de base de données des régions gouvernementales.

Les régions US Government sont les suivantes :

Selon le type et la configuration de la base de données Oracle cible, procédez comme suit :

Rubriques connexes

Prérequis pour les liens de base de données d'Autonomous Database vers des bases de données Oracle sur une adresse privée

Répertorie les prérequis permettant de créer des liens de base de données d'une instance Autonomous Database vers une base de données Oracle cible située sur une adresse privée.

Pour créer un lien de base de données vers une base de données Oracle cible sur une adresse privée, tenez compte des points suivants :

  • La base de données cible doit être accessible à partir du réseau cloud virtuel Oracle Cloud Infrastructure de la base de données source. Par exemple, vous pouvez vous connecter à la base de données cible dans les cas suivants :

    • La base de données cible se trouve sur une adresse privée.

    • La base de données source et la base de données cible se trouvent dans le même réseau cloud virtuel Oracle Cloud Infrastructure.

    • La base de données source et la base de données cible se trouvent dans différents réseaux cloud virtuels Oracle Cloud Infrastructure couplés.

    • La base de données cible est une base de données sur site connectée au réseau cloud virtuel Oracle Cloud Infrastructure de la base de données source à l'aide de FastConnect ou d'un VPN.

  • Deux options permettent d'indiquer la base de données cible, à savoir le paramètre hostname ou le paramètre rac_hostnames :

    • Pour une cible sur une adresse privée, DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK prend en charge la spécification d'un seul nom d'hôte avec le paramètre hostname. Sur une adresse privée, l'utilisation d'une adresse IP ou d'un nom d'hôte SCAN n'est pas prise en charge (lorsque la cible se trouve sur une adresse publique, CREATE_DATABASE_LINK prend en charge l'utilisation d'une adresse IP, d'une adresse SCAN ou d'un nom d'hôte SCAN).

    • Lorsque la cible est une base de données Oracle RAC, utilisez le paramètre rac_hostnames pour indiquer des noms d'hôte avec DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK. Cela vous permet de tirer parti des fonctionnalités de haute disponibilité d'Oracle RAC. L'utilisation d'une adresse IP, d'une adresse IP SCAN ou d'un nom d'hôte SCAN dans la valeur rac_hostnames n'est pas prise en charge.

      Lorsque vous indiquez la liste des noms d'hôte dans le paramètre rac_hostnames, CREATE_DATABASE_LINK utilise tous les noms d'hôte indiqués comme adresses dans la chaîne de connexion. Si l'un des hôtes indiqués n'est pas disponible sur la base de données Oracle RAC cible, Autonomous Database tente automatiquement de se connecter à l'aide d'un autre nom d'hôte de la liste.
  • Les règles entrantes et sortantes suivantes doivent être définies pour l'adresse privée :

    • Définissez une règle sortante dans la liste de sécurité de sous-réseau ou le groupe de sécurité réseau de la base de données source de sorte que le trafic via TCP soit autorisé vers l'adresse IP et le numéro de port de la base de données cible.

    • Définissez une règle entrante dans la liste de sécurité de sous-réseau ou le groupe de sécurité réseau de la base de données cible de sorte que le trafic via TCP soit autorisé de l'adresse IP de la base de données source vers le port de destination.

Création de liens de base de données vers des bases de données Oracle sur une adresse privée sans portefeuille

Utilisez DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK pour créer des liens de base de données d'une instance Autonomous Database vers une base de données Oracle cible située sur une adresse privée et vous connecter sans portefeuille (TCP).

Remarques :

Cette option est destinée aux bases de données Oracle cible situées sur une adresse privée et pour lesquelles SSL/TCPS n'est pas configuré.

Effectuez les étapes prérequises, le cas échéant. Pour plus de détails, reportez-vous à Prérequis pour les liens de base de données d'Autonomous Database vers des bases de données Oracle sur une adresse privée.

Pour créer un lien de base de données vers une base de données cible sur une adresse privée à l'aide d'une connexion TCP sécurisée sans portefeuille, procédez comme suit :

  1. Sur Autonomous Database, créez des informations d'identification permettant d'accéder à la base de données cible. Les valeurs username et password que vous indiquez avec DBMS_CLOUD.CREATE_CREDENTIAL correspondent aux informations d'identification de la base de données cible utilisées dans le lien de base de données (où l'accès à la base de données cible est effectué via le réseau cloud virtuel).

    Exemple :

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

    Les caractères du paramètre username doivent être en majuscules.

    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 d'informations d'identification.

  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.

    Exemple :

    BEGIN
         DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
             db_link_name => 'PRIVATE_ENDPOINT_LINK', 
             hostname => 'exampleHostname',
             port => '1522',
             service_name => 'exampleServiceName',
             ssl_server_cert_dn => NULL,
             credential_name => 'PRIVATE_ENDPOINT_CRED',
             directory_name => NULL,
             private_target => TRUE);
    END;
    /

    Pour une cible sur une adresse privée, DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK prend en charge la spécification d'un seul nom d'hôte avec le paramètre hostname. Sur une adresse privée, l'utilisation d'une adresse IP ou d'un nom d'hôte SCAN n'est pas prise en charge (lorsque la cible se trouve sur une adresse publique, CREATE_DATABASE_LINK prend en charge l'utilisation d'une adresse IP, d'une adresse SCAN ou d'un nom d'hôte SCAN).

    Lorsque la cible est une base de données Oracle RAC, utilisez le paramètre rac_hostnames pour indiquer des noms d'hôte avec DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK. Cela vous permet de tirer parti des fonctionnalités de haute disponibilité d'Oracle RAC. L'utilisation d'une adresse IP, d'une adresse IP SCAN ou d'un nom d'hôte SCAN dans la valeur rac_hostnames n'est pas prise en charge.

    Par exemple, avec une base de données Oracle RAC cible, utilisez le paramètre rac_hostnames :

    BEGIN
         DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
             db_link_name => 'PRIVATE_ENDPOINT_LINK', 
             rac_hostnames => '["sales1-svr1.example.adb.us-ashburn-1.oraclecloud.com", 
                                "sales1-svr2.example.adb.us-ashburn-1.oraclecloud.com", 
                                "sales1-svr3.example.adb.us-ashburn-1.oraclecloud.com"]', 
             port => '1522',
             service_name => 'exampleServiceName',
             ssl_server_cert_dn => NULL,
             credential_name => 'PRIVATE_ENDPOINT_CRED',
             directory_name => NULL,
             private_target => TRUE);
    END;
    /

    DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK ne prend pas en charge la valeur localhost pour hostname ou dans le paramètre rac_hostnames.

    Les utilisateurs autres que l'utilisateur ADMIN nécessitent des privilèges pour exécuter DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK.

    Comme indiqué dans l'exemple, pour créer un lien de base de données avec DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK vers une base de données cible sur une adresse privée à l'aide d'une connexion TCP sécurisée sans portefeuille, tous les éléments suivants sont requis :

    • Le paramètre directory_name doit être défini sur NULL.

    • Le paramètre ssl_server_cert_dn doit être défini sur NULL.

    • Le paramètre private_target doit être défini sur TRUE.

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

    Exemple :

    SELECT * FROM employees@PRIVATE_ENDPOINT_LINK;
                  

Remarques :

Pour les informations d'identification que vous créez à l'étape 1, les informations d'identification Oracle Database, si le mot de passe de l'utilisateur cible est modifié, vous pouvez mettre à jour les informations d'identification qui contiennent celles de l'utilisateur cible comme suit :
BEGIN
     DBMS_CLOUD.UPDATE_CREDENTIAL (
         credential_name => 'DB_LINK_CRED',
         attribute => 'PASSWORD',
         value => 'password');
END;
/

password est le 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 que vous deviez supprimer et créer à nouveau les liens de base de données.

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

Création de liens de base de données d'Autonomous Database vers des bases de données Oracle sur une adresse privée avec un portefeuille (mTLS)

Vous pouvez créer des liens de base de données d'une instance Autonomous Database vers une base de données Oracle cible située sur une adresse privée.

Remarques :

Cette option est destinée aux bases de données Oracle cible sur lesquelles SSL/TCPS est configuré et qui se trouvent sur une adresse privée.

Si SSL/TCPS n'est pas configuré pour la base de données Oracle cible, deux options s'offrent à vous :

Effectuez les étapes prérequises, le cas échéant. Pour plus de détails, reportez-vous à Prérequis pour les liens de base de données d'Autonomous Database vers des bases de données Oracle sur une adresse privée.

Pour créer un lien de base de données vers une base de données Oracle cible sur une adresse privée à l'aide du protocole TCP/IP avec l'authentification (TCPS), procédez comme suit :

  1. Copiez le portefeuille de la base de données cible, cwallet.sso, contenant les certificats de la base de données cible dans la banque d'objets.

    Remarques :

    Le fichier de portefeuille, ainsi que l'ID utilisateur et le mot de passe de la base de données, permettent d'accéder aux données de la base de données Oracle cible. Stockez les fichiers de portefeuille dans un emplacement sécurisé. Partagez les fichiers de portefeuille uniquement avec les utilisateurs autorisés.
  2. Créez des informations d'identification permettant d'accéder à la banque d'objets dans laquelle vous stockez cwallet.sso. Reportez-vous à Procédure CREATE_CREDENTIAL pour plus d'informations sur les paramètres de nom utilisateur et de mot de passe des différents services de stockage d'objet.
  3. Créez un répertoire sur Autonomous Database pour le fichier de portefeuille cwallet.sso.

    Exemple :

    CREATE DIRECTORY wallet_dir AS 'directory_path_of_your_choice';
                  

    Pour plus d'informations sur la création de répertoires, reportez-vous à Création d'un répertoire dans Autonomous Database.

  4. Utilisez DBMS_CLOUD.GET_OBJECT afin de télécharger le portefeuille de la base de données cible vers le répertoire créé à l'étape précédente, WALLET_DIR.

    Exemple :

    BEGIN 
        DBMS_CLOUD.GET_OBJECT(
            credential_name => 'DEF_CRED_NAME',
            object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/cwallet.sso',
            directory_name => 'WALLET_DIR'); 
    END;
    /

    Dans cet exemple, namespace-string est l'espace de noms de stockage d'objet Oracle Cloud Infrastructure et bucketname est le nom du bucket. Pour plus d'informations, reportez-vous à Présentation des espaces de noms Object Storage.

    Remarques :

    La valeur de credential_name utilisée à cette étape correspond aux informations d'identification de la banque d'objets. A l'étape suivante, vous allez créer les informations d'identification permettant d'accéder à la base de données cible.
  5. Sur Autonomous Database, créez des informations d'identification permettant d'accéder à la base de données cible. Les valeurs username et password que vous indiquez avec DBMS_CLOUD.CREATE_CREDENTIAL correspondent aux informations d'identification de la base de données cible utilisées dans le lien de base de données (où l'accès à la base de données cible est effectué via le réseau cloud virtuel).

    Remarques :

    Vous devez indiquer le paramètre credential_name.

    Exemple :

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

    Les caractères du paramètre username doivent être en majuscules.

    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 d'informations d'identification.

  6. 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.

    Exemple :

    BEGIN
        DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
            db_link_name => 'PEDBLINK1', 
            hostname => 'example1.adb.ap-osaka-1.oraclecloud.com',
            port => '1522',
            service_name => 'example_high.adb.oraclecloud.com',
            ssl_server_cert_dn => 'ssl_server_cert_dn',
            credential_name => 'DB_LINK_CRED',
            directory_name => 'WALLET_DIR',
            private_target => TRUE);
    END;
    /

    Pour une cible sur une adresse privée, DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK prend en charge la spécification d'un seul nom d'hôte avec le paramètre hostname. Sur une adresse privée, l'utilisation d'une adresse IP ou d'un nom d'hôte SCAN n'est pas prise en charge (lorsque la cible se trouve sur une adresse publique, CREATE_DATABASE_LINK prend en charge l'utilisation d'une adresse IP, d'une adresse SCAN ou d'un nom d'hôte SCAN).

    Lorsque la cible est une base de données Oracle RAC, utilisez le paramètre rac_hostnames pour indiquer des noms d'hôte avec DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK. Cela vous permet de tirer parti des fonctionnalités de haute disponibilité d'Oracle RAC. L'utilisation d'une adresse IP, d'une adresse IP SCAN ou d'un nom d'hôte SCAN dans la valeur rac_hostnames n'est pas prise en charge.

    Par exemple, avec une base de données Oracle RAC cible, utilisez le paramètre rac_hostnames :

    BEGIN
        DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
            db_link_name => 'PEDBLINK1', 
            rac_hostnames => '["sales1-svr1.example.adb.us-ashburn-1.oraclecloud.com",
                               "sales1-svr2.example.adb.us-ashburn-1.oraclecloud.com",
                               "sales1-svr3.example.adb.us-ashburn-1.oraclecloud.com"]',
            port => '1522',
            service_name => 'example_high.adb.oraclecloud.com',
            ssl_server_cert_dn => 'ssl_server_cert_dn',
            credential_name => 'DB_LINK_CRED',
            directory_name => 'WALLET_DIR',
            private_target => TRUE);
    END;
    /

    DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK ne prend pas en charge la valeur localhost pour hostname ou dans le paramètre rac_hostnames.

    Les utilisateurs autres que l'utilisateur ADMIN nécessitent des privilèges pour exécuter DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK.

  7. Utilisez le lien de base de données que vous avez créé pour accéder aux données de la base de données cible.

    Exemple :

    SELECT * FROM employees@PEDBLINK1;
                  

Remarques :

Pour les informations d'identification que vous créez à l'étape 5, les informations d'identification Oracle Database, si le mot de passe de l'utilisateur cible est modifié, vous pouvez mettre à jour les informations d'identification qui contiennent celles de l'utilisateur cible comme suit :
BEGIN
    DBMS_CLOUD.UPDATE_CREDENTIAL (
        credential_name => 'DB_LINK_CRED',
        attribute => 'PASSWORD',
        value => 'password');
END;
/

password est le 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 que vous deviez supprimer et créer à nouveau les liens de base de données.

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

Remarques relatives aux liens de base de données avec une base de données Oracle Database cible

Fournit des remarques sur la création de liens de base de données vers une base de données Oracle cible (lorsque la cible n'est pas une instance Autonomous Database)

Remarques relatives aux liens de base de données vers d'autres bases de données Oracle :

  • Un seul fichier de portefeuille est valide par répertoire pour utilisation avec les liens de base de données. Vous ne pouvez télécharger qu'un seul fichier cwallet.sso à la fois vers le répertoire choisi pour les fichiers de portefeuille (par exemple, DBLINK_WALLET_DIR). Ainsi, avec un fichier cwallet.sso dans DBLINK_WALLET_DIR, vous pouvez uniquement créer des liens de base de données vers les bases de données pour lesquelles le portefeuille de ce répertoire est valide. Pour utiliser plusieurs fichiers cwallet.sso avec des liens de base de données, vous devez créer des répertoires supplémentaires et placer chaque fichier cwallet.sso dans un répertoire différent. Lorsque vous créez des liens de base de données avec DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK, indiquez le répertoire qui contient le portefeuille avec le paramètre directory_name.

    Pour plus d'informations sur la création de répertoires, reportez-vous à Création d'un répertoire dans Autonomous Database.

  • Les versions de base de données Oracle cible prises en charge pour les liens de base de données vers une autre base de données Oracle Database sont : 19c, 12.2.0 et 12.1.0.

    Remarques :

    Pour obtenir des informations complètes sur les versions prises en charge, reportez-vous à Client Server Interoperability Support Matrix for Different Oracle Versions (ID de document 207303.1)
  • Autonomous Database définit le paramètre SEC_CASE_SENSITIVE_LOGON sur true et cette valeur ne peut pas être modifiée. Si la base de données cible n'est pas une instance Autonomous Database, vous devez définir le paramètre SEC_CASE_SENSITIVE_LOGON sur true pour la base de données. Si SEC_CASE_SENSITIVE_LOGON est défini sur false sur la base de données cible, l'erreur ORA-28040: No matching authentication protocol est générée.

  • Pour répertorier les liens de base de données, utilisez la vue ALL_DB_LINKS. Pour plus d'informations, reportez-vous à ALL_DB_LINKS dans Référence de base de données Oracle Database 19c ou Référence de base de données Oracle Database 23ai.

  • Le fichier de portefeuille, ainsi que l'ID utilisateur et le mot de passe de la base de données, permettent d'accéder aux données de la base de données Oracle cible. Stockez les fichiers de portefeuille dans un emplacement sécurisé. Partagez les fichiers de portefeuille uniquement avec les utilisateurs autorisés.

  • Lorsque l'instance Autonomous Database se trouve sur une adresse privée, deux options permettent d'indiquer la base de données cible : utilisez le paramètre hostname ou le paramètre rac_hostnames :

    • Pour une cible sur une adresse privée, DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK prend en charge la spécification d'un seul nom d'hôte avec le paramètre hostname. Sur une adresse privée, l'utilisation d'une adresse IP ou d'un nom d'hôte SCAN n'est pas prise en charge (lorsque la cible se trouve sur une adresse publique, CREATE_DATABASE_LINK prend en charge l'utilisation d'une adresse IP, d'une adresse SCAN ou d'un nom d'hôte SCAN).

    • Lorsque la cible est une base de données Oracle RAC, utilisez le paramètre rac_hostnames pour indiquer des noms d'hôte avec DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK. Cela vous permet de tirer parti des fonctionnalités de haute disponibilité d'Oracle RAC. L'utilisation d'une adresse IP, d'une adresse IP SCAN ou d'un nom d'hôte SCAN dans la valeur rac_hostnames n'est pas prise en charge.

      Lorsque vous indiquez la liste des noms d'hôte dans le paramètre rac_hostnames, CREATE_DATABASE_LINK utilise tous les noms d'hôte indiqués comme adresses dans la chaîne de connexion. Si l'un des hôtes indiqués n'est pas disponible sur la base de données Oracle RAC cible, Autonomous Database tente automatiquement de se connecter à l'aide d'un autre nom d'hôte de la liste.
    • DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK ne prend pas en charge la valeur localhost pour hostname ou dans le paramètre rac_hostnames.