Creare database link da Autonomous Database a un Autonomous Database su un endpoint privato

È possibile creare database link da un Autonomous Database a un Autonomous Database di destinazione che si trova in un endpoint privato.

Temi

Prerequisiti per i database link da Autonomous Database a un Autonomous Database di destinazione su un endpoint privato

Elenca i prerequisiti per creare i database link a un Autonomous Database di destinazione che si trova in un endpoint privato.

Per creare un database link a un Autonomous Database di destinazione in un endpoint privato, effettuare le operazioni riportate di seguito.

  • Il database di destinazione deve essere accessibile dalla VCN Oracle Cloud Infrastructure del database di origine. Ad esempio, è possibile connettersi al database di destinazione quando:

    • Il database di destinazione si trova in un endpoint privato.

    • Sia il database di origine che il database di destinazione si trovano nella stessa VCN di Oracle Cloud Infrastructure.

    • Il database di origine e il database di destinazione si trovano in diverse VCN di Oracle Cloud Infrastructure abbinate.

    • Il database di destinazione è connesso alla VCN di Oracle Cloud Infrastructure del database di origine utilizzando FastConnect o VPN.

  • Per una destinazione in un endpoint privato, DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK supporta la specifica di un singolo nome host con il parametro hostname. In un endpoint privato non è supportato l'uso di un indirizzo IP, di un IP SCAN o di un nome host SCAN (quando la destinazione si trova su un endpoint pubblico, CREATE_DATABASE_LINK supporta l'uso di un indirizzo IP, di un IP SCAN o di un nome host SCAN).

  • DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK non supporta un valore di localhost per il parametro hostname.

  • Per l'endpoint privato devono essere definite le regole di entrata e uscita seguenti:

    • Definire una regola di uscita nella lista di sicurezza della subnet del database di origine o nel gruppo di sicurezza di rete in modo che il traffico su TCP sia consentito all'indirizzo IP e al numero di porta del database di destinazione.

    • Definire una regola di entrata nella lista di sicurezza della subnet del database di destinazione o nel gruppo di sicurezza di rete in modo che il traffico su TCP sia consentito dall'indirizzo IP del database di origine alla porta di destinazione.

    Per informazioni sulla configurazione degli endpoint privati con regole di entrata e uscita, vedere Configura accesso di rete con endpoint privati.

Nota

Quando l'istanza di Autonomous Database è configurata con un endpoint privato, impostare la proprietà del database ROUTE_OUTBOUND_CONNECTIONS su 'PRIVATE_ENDPOINT' per specificare che tutti i database link in uscita sono soggetti alle regole di uscita della VCN dell'endpoint privato dell'istanza di Autonomous Database. Per ulteriori informazioni, vedere Maggiore sicurezza per le connessioni in uscita con endpoint privati.

Crea database link a un Autonomous Database di destinazione in un endpoint privato senza un wallet (TLS)

È possibile creare database link da un Autonomous Database a un Autonomous Database di destinazione che si trova in un endpoint privato e si connette senza un wallet (TLS).

Per creare un database link a un Autonomous Database di destinazione in un endpoint privato senza un wallet, effettuare le operazioni riportate di seguito.

  1. Se non è già stato fatto, abilitare le connessioni TLS nell'istanza di Autonomous Database.
  2. Creare le credenziali per accedere all'istanza di Autonomous Database di destinazione. I valori username e password specificati con DBMS_CLOUD.CREATE_CREDENTIAL sono le credenziali per il database di destinazione utilizzato all'interno del database link, dove si accede al database di destinazione tramite la VCN.

    Ad esempio:

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

    I caratteri nel parametro username devono essere tutte lettere maiuscole.

    Nota

    È possibile utilizzare una credenziale segreta del vault per la credenziale del database di destinazione in un database link. Per ulteriori informazioni, vedere Usa credenziali segrete del vault.

    Questa operazione memorizza le credenziali nel database in formato cifrato. È possibile utilizzare qualsiasi nome per il nome della credenziale.

  3. Creare il database link nel database di destinazione utilizzando DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK.

    Ad esempio:

    BEGIN
         DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
             db_link_name => 'PRIVATE_ENDPOINT_LINK', 
             hostname => 'exampleHostname',
             port => '1521',
             service_name => 'example_high.adb.oraclecloud.com',
             credential_name => 'PRIVATE_ENDPOINT_CRED',
             directory_name => NULL,
             private_target => TRUE);
    END;
    /

    Per una destinazione in un endpoint privato, DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK supporta la specifica di un singolo nome host con il parametro hostname. In un endpoint privato non è supportato l'uso di un indirizzo IP, di un IP SCAN o di un nome host SCAN (quando la destinazione si trova su un endpoint pubblico, CREATE_DATABASE_LINK supporta l'uso di un indirizzo IP, di un IP SCAN o di un nome host SCAN).

    Gli utenti diversi da ADMIN richiedono privilegi per eseguire DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK.

    Come illustrato nell'esempio, per creare un database link con DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK in un database di destinazione in un endpoint privato senza un wallet, sono necessarie tutte le operazioni riportate di seguito.

    • Il parametro directory_name deve essere NULL.

    • Il parametro ssl_server_cert_dn può essere omesso oppure, se incluso, specificare un valore NULL.

    • Il parametro private_target deve essere TRUE.

      Nota

      Se si imposta ROUTE_OUTBOUND_CONNECTIONS su PRIVATE_ENDPOINT, l'impostazione del parametro private_target su TRUE non è richiesta in questa API. Per ulteriori informazioni, vedere Maggiore sicurezza per le connessioni in uscita con endpoint privati.
  4. Utilizzare il database link creato per accedere ai dati nel database di destinazione.

    Ad esempio:

    SELECT * FROM employees@PRIVATE_ENDPOINT_LINK;
                  
Nota

Per le credenziali create nel Passo 1, le credenziali di Oracle Database, se la password dell'utente di destinazione viene modificata, è possibile aggiornare la credenziale che contiene le credenziali dell'utente di destinazione come indicato di seguito.
BEGIN
     DBMS_CLOUD.UPDATE_CREDENTIAL (
         credential_name => 'DB_LINK_CRED',
         attribute => 'PASSWORD',
         value => 'password');
END;
/

Dove password è la nuova password.

Dopo questa operazione, i database link esistenti che utilizzano questa credenziale continuano a funzionare senza dover eliminare e ricreare i database link.

Per ulteriori informazioni, vedere CREATE_DATABASE_LINK Procedura.

Crea database link a un Autonomous Database di destinazione in un endpoint privato con un wallet (mTLS)

È possibile creare database link da un Autonomous Database a un Autonomous Database di destinazione che si trova su un endpoint privato (mTLS).

Per creare un database link a un Autonomous Database di destinazione in un endpoint privato, con un wallet:

  1. Copiare il wallet del database di destinazione, cwallet.sso, contenente i certificati per il database di destinazione nell'area di memorizzazione degli oggetti.
    Nota

    Il file wallet, insieme all'ID utente e alla password del database, fornisce l'accesso ai dati nel database Oracle di destinazione. Memorizzare i file wallet in una posizione sicura. Condividere i file wallet solo con utenti autorizzati.
  2. Creare le credenziali per accedere all'area di memorizzazione degli oggetti in cui è memorizzato cwallet.sso. Vedere CREATE_CREDENTIAL Procedura per informazioni sui parametri del nome utente e della password per diversi servizi di storage degli oggetti.
  3. Creare una directory in Autonomous Database per il file wallet cwallet.sso.

    Ad esempio:

    CREATE DIRECTORY wallet_dir AS 'directory_path_of_your_choice';
                  

    Per informazioni sulla creazione di directory, vedere Crea directory in Autonomous Database.

  4. Utilizzare DBMS_CLOUD.GET_OBJECT per caricare il wallet del database di destinazione nella directory creata nel passo precedente, WALLET_DIR.

    Ad esempio:

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

    In questo esempio, namespace-string è lo spazio di nomi dello storage degli oggetti Oracle Cloud Infrastructure e bucketname è il nome del bucket. Per ulteriori informazioni, vedere Informazioni sugli spazi di nomi dello storage degli oggetti.

    Nota

    Il valore credential_name utilizzato in questo passo sono le credenziali per l'area di memorizzazione degli oggetti. Nel passo successivo si creano le credenziali per accedere al database di destinazione.
  5. In Autonomous Database creare le credenziali per accedere al database di destinazione. I valori username e password specificati con DBMS_CLOUD.CREATE_CREDENTIAL sono le credenziali per il database di destinazione utilizzato all'interno del database link, dove si accede al database di destinazione tramite la VCN.
    Nota

    È necessario specificare il parametro credential_name.

    Ad esempio:

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

    I caratteri nel parametro username devono essere tutte lettere maiuscole.

    Nota

    È possibile utilizzare una credenziale segreta del vault per la credenziale del database di destinazione in un database link. Per ulteriori informazioni, vedere Usa credenziali segrete del vault.

    Questa operazione memorizza le credenziali nel database in formato cifrato. È possibile utilizzare qualsiasi nome per il nome della credenziale.

  6. Creare il database link nel database di destinazione utilizzando DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK.

    Ad esempio:

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

    Se si imposta ROUTE_OUTBOUND_CONNECTIONS su PRIVATE_ENDPOINT, l'impostazione del parametro private_target su TRUE non è richiesta in questa API. Per ulteriori informazioni, vedere Maggiore sicurezza per le connessioni in uscita con endpoint privati.

    Per una destinazione in un endpoint privato, DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK supporta la specifica di un singolo nome host con il parametro hostname. In un endpoint privato non è supportato l'uso di un indirizzo IP, di un IP SCAN o di un nome host SCAN (quando la destinazione si trova su un endpoint pubblico, CREATE_DATABASE_LINK supporta l'uso di un indirizzo IP, di un IP SCAN o di un nome host SCAN).

    DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK non supporta un valore di localhost per il parametro hostname.

    Gli utenti diversi da ADMIN richiedono privilegi per eseguire DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK.

  7. Utilizzare il database link creato per accedere ai dati nel database di destinazione.

    Ad esempio:

    SELECT * FROM employees@PEDBLINK1;
                  
Nota

Per le credenziali create nel Passo 5, le credenziali di Oracle Database, se la password dell'utente di destinazione viene modificata, è possibile aggiornare la credenziale che contiene le credenziali dell'utente di destinazione come indicato di seguito.
BEGIN
    DBMS_CLOUD.UPDATE_CREDENTIAL (
        credential_name => 'DB_LINK_CRED',
        attribute => 'PASSWORD',
        value => 'password');
END;
/

Dove password è la nuova password.

Dopo questa operazione, i database link esistenti che utilizzano questa credenziale continuano a funzionare senza dover eliminare e ricreare i database link.

Per ulteriori informazioni, vedere CREATE_DATABASE_LINK Procedura.