Creare database link da un Autonomous Database a un Oracle Database con accesso pubblico con un wallet (mTLS)

È possibile creare i database link da un Autonomous Database a un database Oracle di destinazione che si trova su un endpoint pubblico.

Per utilizzare i database link con Autonomous Database, è necessario configurare il database di destinazione in modo che utilizzi TCP/IP con autenticazione SSL (TCPS). Per impostazione predefinita, gli Autonomous Database utilizzano il TCP/IP con autenticazione SSL (TCPS), pertanto non è necessario eseguire alcuna configurazione aggiuntiva nel database di destinazione per collegarsi a un altro Autonomous Database. Gli altri database Oracle devono essere configurati per utilizzare l'autenticazione TCP/IP con SSL (TCPS). Per ulteriori informazioni, vedere Configuring Secure Sockets Layer Authentication nel manuale Oracle Database 19c Security Guide o Oracle Database 23ai Security Guide.

Per creare database link a una destinazione pubblica, è necessario che l'Oracle Database di destinazione sia accessibile. Alcuni database potrebbero limitare l'accesso (ad esempio, utilizzando le liste di controllo dell'accesso). Assicurarsi di abilitare il database di destinazione per consentire l'accesso dal database di origine per il funzionamento del database link. Se limiti l'accesso con le liste di controllo dell'accesso (ACL, Access Control List), puoi trovare l'indirizzo IP in uscita dell'Autonomous Database di origine e consentire a tale indirizzo IP di connettersi al database di destinazione.

Per ulteriori informazioni, vedere Come creare un database link da Autonomous Database a un'istanza di Database Cloud Service.

Per creare database link a un database Oracle di destinazione con un wallet (mTLS):

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

    Tenere presente quanto riportato di seguito per il file wallet.

    • Il file wallet, insieme all'ID utente e alla password del database, fornisce l'accesso ai dati nell'Oracle Database di destinazione. Memorizzare i file wallet in una posizione sicura. Condividere i file wallet solo con utenti autorizzati.

    • Non rinominare il file wallet. Il file wallet nello storage degli oggetti deve essere denominato cwallet.sso.

  2. Creare le credenziali per accedere all'area di memorizzazione degli oggetti in cui è memorizzato il file wallet cwallet.sso. Per informazioni sui parametri di nome utente e password per diversi servizi di storage degli oggetti, vedere CREATE_CREDENTIAL Procedura.
  3. Creare una directory in Autonomous Database per il file wallet cwallet.sso.

    Ad esempio:

    CREATE DIRECTORY dblink_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, DBLINK_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 => 'DBLINK_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. Nell'istanza di 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 per creare il database link.

    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.

    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 => 'SALESLINK',
            hostname => 'adb.eu-frankfurt-1.oraclecloud.com', 
            port => '1522',
            service_name => 'example_medium.atpc.example.oraclecloud.com',
            ssl_server_cert_dn => 'CN=atpc.example.oraclecloud.com,OU=Oracle BMCS FRANKFURT,O=Oracle Corporation,L=Redwood City,ST=California,C=US',
            credential_name => 'DB_LINK_CRED',
            directory_name => 'DBLINK_WALLET_DIR');
    END;
    /

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

    Se il file wallet nella directory specificata con directory_name non è cwallet.sso, la procedura segnala un errore, ad esempio ORA-28759: failure to open file.

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

    Ad esempio:

    SELECT * FROM employees@SALESLINK;
                

Per le credenziali create nel Passo 5, le credenziali del database di destinazione, 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:

Argomenti correlati

Note di database link con un Oracle Database di destinazione

Fornisce note per la creazione di database link a un database Oracle di destinazione (quando la destinazione non è un Autonomous Database)

Note per i database link ad altri database Oracle:

  • È valido un solo file wallet per directory da utilizzare con i database link. È possibile caricare un solo file cwallet.sso alla volta nella directory scelta per i file wallet (ad esempio, DBLINK_WALLET_DIR). Ciò significa che con un cwallet.sso in DBLINK_WALLET_DIR è possibile creare solo database link ai database per i quali il wallet in tale directory è valido. Per utilizzare più file cwallet.sso con database link, è necessario creare directory aggiuntive e inserire ogni file cwallet.sso in una directory diversa. Quando si creano database link con DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK, specificare la directory che contiene il wallet con il parametro directory_name.

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

  • Le versioni di database Oracle di destinazione supportate per i database link a un altro Oracle Database sono: 19c, 12.2.0 e 12.1.0.

  • Autonomous Database imposta il parametro SEC_CASE_SENSITIVE_LOGON su true e questo valore non può essere modificato. Se il database di destinazione non è un Autonomous Database, è necessario impostare il parametro SEC_CASE_SENSITIVE_LOGON su true nel database di destinazione. Se SEC_CASE_SENSITIVE_LOGON è impostato su false nel database di destinazione, viene generato l'errore ORA-28040: No matching authentication protocol.

  • Per elencare i database link, utilizzare la vista ALL_DB_LINKS. Per ulteriori informazioni, consulta ALL_DB_LINKS in Oracle Database 19c Database Reference o Oracle Database 23ai Database Reference.

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

  • Quando l'istanza di Autonomous Database si trova in un endpoint privato, sono disponibili due opzioni per specificare il database di destinazione: utilizzare il parametro hostname o il parametro rac_hostnames:

    • 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).

    • Quando la destinazione è un database Oracle RAC, utilizzare il parametro rac_hostnames per specificare uno o più nomi host con DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK. Ciò consente di sfruttare le funzionalità ad alta disponibilità di Oracle RAC. L'uso di un indirizzo IP, di un IP SCAN o di un nome host SCAN nel valore rac_hostnames non è supportato.

      Quando si specifica una lista di nomi host nel parametro rac_hostnames, CREATE_DATABASE_LINK utilizza tutti i nomi host specificati come indirizzi nella stringa di connessione. Se uno degli host specificati non è disponibile nel database Oracle RAC di destinazione, Autonomous Database tenta automaticamente di connettersi utilizzando un altro nome host dalla lista.
    • DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK non supporta il valore localhost per il parametro hostname o rac_hostnames.