Crea database link a database non Oracle con connettività eterogenea gestita da Oracle

Il supporto di Autonomous Database per la connettività eterogenea gestita da Oracle semplifica la creazione di collegamenti al database a database non Oracle.

Quando utilizzi i database link con connettività eterogenea gestita da Oracle, Autonomous Database configura e imposta la connessione al database non Oracle.

Nota

Con la connettività eterogenea gestita da Oracle, il supporto è per le connessioni solo query sul database remoto. In altre parole, gli aggiornamenti non sono supportati quando si utilizza una connettività eterogenea gestita da Oracle.

Di seguito è riportato un prerequisito per utilizzare la connettività eterogenea gestita da Oracle con Autonomous Database.

  • Quando il database di destinazione si trova su un endpoint pubblico, è necessario configurare il database per consentire connessioni SSL/TLS in entrata con certificati firmati CA.

    La connettività eterogenea gestita da Oracle supporta le connessioni ai servizi di database di destinazione sugli endpoint privati (ad esempio, è possibile connettersi a Oracle MySQL Database Service quando il servizio si trova su un endpoint privato). Quando ci si connette a un database non oracle con connettività eterogenea gestita da Oracle su un endpoint privato, la connessione utilizza il protocollo TCP e non richiede la configurazione di SSL/TLS nel database di destinazione.

    Per ulteriori informazioni, vedere Creare database link a Oracle MySQL in un endpoint privato con connettività eterogenea gestita da Oracle.

Per creare database link a un database non Oracle utilizzando una connettività eterogenea gestita da Oracle, effettuare le operazioni riportate di seguito.

  1. In Autonomous Database creare le credenziali per accedere al database di destinazione. Le credenziali username e password specificate con DBMS_CLOUD.CREATE_CREDENTIAL sono le credenziali per il database di destinazione utilizzato all'interno del database link.

    Ad esempio:

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

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

    Per accedere a Google Analytics, Google BigQuery, Google Drive, Youtube, ServiceNow o Microsoft SharePoint con OAuth2, la credenziale deve includere il parametro params con il valore gcp_oauth2.

    Ad esempio:

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

    Per ulteriori informazioni, vedere CREATE_CREDENTIAL Procedure.

  2. Creare il database link al database di destinazione utilizzando DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK.

    Ad esempio, per creare un database link ad 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 è il nome del database non Oracle.

    Il valore gateway_params db_type fornito deve essere uno dei valori supportati:

    Valore db_type Tipo di database

    awsredshift

    Amazon Redshift

    azure

    Microsoft SQL Server

    SQL Azure

    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

    Addetti alle vendite

    servicenow ServiceNow
    sharepoint Microsoft SharePoint

    snowflake

    Snowflake

    youtube

    YouTube

    Autonomous Database configura e gestisce automaticamente la connessione sicura a un database di destinazione e le connessioni vengono cifrate end-to-end. La connettività eterogenea gestita da Oracle è preconfigurata con un wallet che contiene la maggior parte dei comuni certificati SSL root e intermedi sicuri. Pertanto, è necessario fornire NULL come valore per il parametro ssl_server_cert_dn.

    Per garantire la sicurezza durante l'utilizzo dei database link con connettività eterogenea gestita da Oracle, la porta di connessione è limitata e deve avere SSL/TLS abilitato. Specificare la porta del database di destinazione con il parametro port.

    Per la lista dei tipi di database non Oracle supportati, vedere Oracle-Managed Heterogeneous Connectivity Database Types and Ports.

    La vista HETEROGENEOUS_CONNECTIVITY_INFO fornisce informazioni sui tipi di connettività eterogenea Oracle supportati e mostra un esempio di codice PL/SQL per ogni tipo supportato. Per ulteriori informazioni, vedere Accesso a esempi e informazioni sulla connettività eterogenea.

    Quando si specifica il parametro gateway_params, per alcuni valori db_type sono supportati parametri gateway_params aggiuntivi:

    Valore db_type Parametri del gateway supportati con db_type specificato
    azure

    Quando il valore db_type è azure, sono disponibili due parametri facoltativi, auth_method e domain per supportare l'autenticazione NTLM/AD.

    Quando NTLMv2 è configurato, impostare auth_method=10 e impostare domain sul valore del dominio Windows.

    Per utilizzare una password di Azure Active Directory, impostare auth_method=13. Non utilizzare auth_method=13 per accedere a un database Oracle on-premise.

    Per ulteriori informazioni, vedere Metodo di autenticazione di Microsoft SQL Server.

    google_analytics

    Se il valore db_type è google_analytics, hostname non viene utilizzato ed è possibile fornire un valore come example.com.

    Per db_type google_analytics, la credenziale deve essere una credenziale di tipo OAuth che utilizza il parametro params con i valori gcp_oauth2 specificati (client_id, client_secret e refresh_token). Per ulteriori informazioni, vedere CREATE_CREDENTIAL Procedure.

    google_bigquery

    Se db_type è google_bigquery, il parametro project è valido. Questo parametro specifica il nome del progetto in google_bigquery ed è obbligatorio.

    Se il valore db_type è google_bigquery, hostname non viene utilizzato ed è possibile fornire un valore come example.com.

    Per db_type google_bigquery, la credenziale deve essere una credenziale di tipo OAuth che utilizza il parametro params con i valori gcp_oauth2 specificati (client_id, client_secret e refresh_token). Per ulteriori informazioni, vedere CREATE_CREDENTIAL Procedure.

    google_drive

    Per db_type google_drive, la credenziale fornita con DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK deve essere una credenziale di tipo OAuth che utilizza il parametro params con i valori gcp_oauth2 specificati (client_id, client_secret e refresh_token).

    Per connettersi a Google Drive e ottenere i dati è necessario fornire i parametri del gateway directory_name e file_name. Questi parametri specificano un file modello (file REST automatico) che mappa la risposta JSON al modello relazionale. Il file modello specifica gli endpoint, il mapping delle tabelle e il codice di risposta HTTP per l'elaborazione della risposta JSON. Per ulteriori informazioni, vedere Sintassi dei file modello e File modello di esempio.

    Quando si utilizza il parametro gateway_params con db_type google_drive, è necessario fornire il parametro gateway_params db_type con il valore 'google_drive' e i parametri directory_name e file_name, insieme alle credenziali di tipo OAuth:

    Il parametro directory_name specifica la directory con il file di configurazione REST. È possibile creare questa directory come indicato di seguito.

    create or replace directory google_drive_dir as 'GOOGLE_DRIVE_DIR';

    Ottenere e scaricare il file REST automatico nella directory specificata. Ad esempio:

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

    Impostare il valore file_name sul nome del file REST automatico scaricato, "google_drive.rest". Quindi è possibile utilizzare il file di configurazione REST con OAuth 2.0.

    hive

    Se db_type è hive, il parametro http_path è valido. Questo parametro specifica il valore HttpPath, se necessario, per connettersi all'istanza Hive.

    salesforce

    Quando si utilizza il parametro gateway_params con db_type salesforce, è necessario fornire l'opzione security_token. Il token di sicurezza è un codice alfanumerico con distinzione tra maiuscole e minuscole.

    Per ulteriori informazioni, vedere Reimposta token di sicurezza.

    Quando si utilizza il parametro gateway_params con db_type salesforce, è necessario fornire il parametro hostname corretto.

    Salesforce fornisce due forme di URL per l'account del servizio Salesforce:

    • Modulo xxxx.develop.lightning.force.com di URL
    • Form xxxxmy.salesforce.com dell'URL come mostrato nella scheda Visualizza profilo.

    La connettività eterogenea gestita da Oracle supporta solo il form xxxxmy.salesforce.com dell'URL per il valore del parametro hostname.

    servicenow

    Per connettersi a ServiceNow e ottenere i dati è necessario fornire i parametri del gateway directory_name e file_name. Questi parametri specificano un file modello (file di configurazione REST) che mappa la risposta JSON al modello relazionale. Il file modello specifica gli endpoint, il mapping delle tabelle e il codice di risposta HTTP per l'elaborazione della risposta JSON. Per ulteriori informazioni, vedere Sintassi dei file modello e File modello di esempio.

    Quando si utilizza il parametro gateway_params con db_type servicenow, sono supportate due opzioni:

    • Autenticazione di base: è necessario fornire il parametro gateway_params db_type con il valore 'servicenow' e fornire i parametri directory_name e file_name insieme alle credenziali di tipo nome utente/password.

    • Autenticazione OAuth 2.0: è necessario fornire il parametro gateway_params db_type con il valore 'servicenow' e i parametri directory_name, file_name e token_uri, insieme alle credenziali di tipo OAuth.

      Per l'autenticazione OAuth 2.0 con db_type servicenow, la credenziale deve essere una credenziale di tipo OAuth che utilizza il parametro params con i valori gcp_oauth2 specificati (client_id, client_secret e refresh_token). Per ulteriori informazioni, vedere CREATE_CREDENTIAL Procedure.

    Il parametro directory_name specifica la directory con il file di configurazione REST ServiceNow. È possibile creare questa directory come indicato di seguito.

    create or replace directory servicenow_dir as 'SERVICENOW_DIR';

    Ottenere e scaricare il file di configurazione REST ServiceNow nella directory specificata. Ad esempio:

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

    Impostare il valore file_name sul nome del file di configurazione REST scaricato, "servicenow.rest".

    Quindi è possibile utilizzare il file di configurazione REST ServiceNow con autenticazione di base o OAuth2.0. Per gli esempi, vedere HETEROGENEOUS_CONNECTIVITY_INFO View.

    sharepoint

    Quando si utilizza il parametro gateway_params con db_type sharepoint, specificare anche i valori per auth_uri, scope, service_url e token_uri.

    Per db_type sharepoint, la credenziale fornita con DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK deve essere una credenziale di tipo OAuth che utilizza il parametro params con i valori gcp_oauth2 specificati (client_id, client_secret e refresh_token). Per ulteriori informazioni, vedere CREATE_CREDENTIAL Procedure. Generare il valore refresh_token per tenant_id.sharepoint.com/.default offline_access. Per ulteriori informazioni, vedere: Determinare l'ambito e OAuth 2.0 authentication.

    Impostare i valori per gateway_params per db_type sharepoint:

    snowflake

    Quando si utilizza il parametro gateway_params con db_type snowflake, utilizzare l'identificativo dell'account Snowflake come parametro hostname. In questo caso, il driver aggiunge snowflakecomupting.com, in modo da non passare esplicitamente questa parte del nome host. Per trovare l'identificativo dell'account Snowflake, vedere Formati identificativo account per piattaforma e area cloud.

    Ad esempio: per l'account Snowflake:

    https://example-marketing_test_account.snowflakecomputing.com

    Impostare il valore hostname su "example-marketing_test_account".

    Se db_type è SNOWFLAKE, sono validi i parametri facoltativi role, schema e warehouse. Questi valori specificano uno schema, un ruolo o un valore warehouse diverso da quello predefinito. Ad esempio:

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

    Per connettersi a YouTube e ottenere i dati, è necessario fornire i parametri directory_name e file_name. Questi parametri specificano un file modello (file di configurazione REST) che mappa la risposta JSON al modello relazionale. Il file modello specifica gli endpoint, il mapping delle tabelle e il codice di risposta HTTP per l'elaborazione della risposta JSON. Per ulteriori informazioni, vedere Sintassi dei file modello e File modello di esempio.

    Per db_type youtube, la credenziale deve essere una credenziale di tipo OAuth che utilizza il parametro params con i valori gcp_oauth2 specificati (client_id, client_secret e refresh_token). Per ulteriori informazioni, vedere CREATE_CREDENTIAL Procedure.

    Il parametro directory_name specifica la directory con il file di configurazione REST di YouTube.

    Ad esempio, per creare questa directory e aggiungere i contenuti richiesti:

    1. Creare una directory nell'istanza di Autonomous Database:

      create or replace directory youtube_dir as 'YOUTUBE_DIR';
    2. Ottenere e scaricare il file di configurazione REST di riposo automatico nella directory specificata. Ad esempio:

      exec DBMS_CLOUD.get_object('youtube_dir_cred',
           'https://objectstorage.<...>/youtube.rest','YOUTUBE_DIR');
    3. Impostare il valore file_name sul nome del file di configurazione REST scaricato, 'youtube.rest'.

    È quindi possibile utilizzare il file di configurazione REST con OAuth2.0. Per gli esempi, vedere HETEROGENEOUS_CONNECTIVITY_INFO View.

    Per ulteriori informazioni, vedere CREATE_DATABASE_LINK Procedure.

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

    Ad esempio:

    SELECT count(*) FROM sales@AWSREDSHIFT_LINK

    Il nome della tabella specificato quando si utilizza SELECT con Google BigQuery deve essere tra virgolette. Ad esempio:

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

Per le credenziali create nel Passo 1, le credenziali del database di destinazione, se la password dell'utente di destinazione cambia, è possibile aggiornare la credenziale che contiene le credenziali dell'utente di destinazione come indicato di seguito.

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

Dove password corrisponde alla 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:

Creare database link a Oracle MySQL su un endpoint privato con connettività eterogenea gestita da Oracle

Il supporto di Autonomous Database per la connettività eterogenea gestita da Oracle semplifica la creazione di collegamenti al database a Oracle MySQL Database Service su un endpoint privato. Quando si utilizzano i database link con connettività eterogenea gestita da Oracle, Autonomous Database configura e imposta la connessione a Oracle MySQL Database Service.

Di seguito sono riportati i prerequisiti per l'uso della connettività eterogenea gestita da Oracle con Oracle MySQL Database Service su un endpoint privato.

  • Creare un nome DNS utilizzando la zona DNS privata che punta all'IP privato di Oracle MySQL Database Service nella VCN. Vedere DNS privato.
  • Creare un Autonomous Database con un endpoint privato nella stessa subnet.
  • Configurare la VCN per Oracle MySQL Database Service per consentire le connessioni in entrata sulla porta 3306.

Per creare database link a Oracle MySQL Database Service su un endpoint privato utilizzando la connettività eterogenea gestita da Oracle, effettuare le operazioni riportate di seguito.

  1. In Autonomous Database creare le credenziali per accedere a Oracle MySQL Database Service. Le credenziali username e password specificate con DBMS_CLOUD.CREATE_CREDENTIAL sono le credenziali per Oracle MySQL Database Service utilizzate all'interno del database link.
    Nota

    È necessario specificare il parametro credential_name.

    Ad esempio:

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

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

  2. Creare il database link a Oracle MySQL Database Service utilizzando DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK.

    Ad esempio, per creare un database link, procedere come segue.

    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. Utilizzare il database link per accedere ai dati nel database di destinazione.

    Ad esempio:

    SELECT count(*) FROM sales@MYSQL_LINK
Nota

Per le credenziali create nel Passo 1, le credenziali del database di destinazione, se la password dell'utente di destinazione cambia, è possibile aggiornare la credenziale che contiene le credenziali dell'utente di destinazione come indicato di seguito.

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

Dove password corrisponde alla 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:

Tipi e porte di database di connettività eterogenea gestiti da Oracle

Mostra i database non Oracle a cui è possibile connettersi da Autonomous Database con connettività eterogenea gestita da Oracle ed elenca il valore della porta supportato per ogni tipo di database. Fornisce inoltre un collegamento in cui è possibile visualizzare le versioni di database supportate per ciascun tipo di database.

Nota

Oracle utilizza connettori Progress DataDirect. La colonna Supporto database fornisce collegamenti al sito Web Progress in cui è possibile trovare le versioni di database supportate per ogni tipo di database.
Tipo di database Valore db_type Porta richiesta Supporto database

Amazon Redshift

awsredshift

5.439

Versioni supportate da Amazon Redshift

SQL Azure

Microsoft SQL Server

Azure Synapse Analytics

azure

1.433

Versioni supportate da Azure SQL

Versioni supportate di Azure Synapse Analytics

Apache Hive

hive

443

Versioni supportate da Hive

Google Analytics

google_analytics

443

Versioni supportate di Google Analytics

Google BigQuery

google_bigquery

443

Versioni supportate di Google BigQuery

Google Drive

google_drive

443

Versioni supportate da Google Drive

Apache Hive

hive

443

Versioni supportate da Hive

IBM Db2 11.5.6 o versione successiva

IBM Db2 11.5.5 o versione successiva

db2

25.000

50.000

Versioni supportate per IBM Db2

Microsoft SharePoint

sharepoint

443

Versioni supportate di Microsoft SharePoint

MongoDB

mongodb

27.017

MongoDB Versioni supportate

MySQL

mysql

3.306

MySQL Versioni supportate

MySQL Community Edition

mysql_community

3.306

 

PostgreSQL

postgres

5.432

PostgreSQL Versioni supportate

Addetti alle vendite

salesforce

19.937

Versioni supportate da Salesforce

ServiceNow

servicenow

443

ServiceNow Versioni supportate

Snowflake

snowflake

443

Versioni supportate da Snowflake

Youtube

youtube

443 Versioni supportate da Youtube

Accedi a informazioni ed esempi sulla connettività eterogenea

Oracle Autonomous Database fornisce informazioni di connettività eterogenee per i database link a database non Oracle.

La vista HETEROGENEOUS_CONNECTIVITY_INFO fornisce informazioni sui tipi di connettività eterogenea Oracle supportati e mostra un esempio di codice PL/SQL per ogni tipo supportato.

Ad esempio:

SELECT * FROM HETEROGENEOUS_CONNECTIVITY_INFO WHERE DATABASE_TYPE = 'hive';

Vista HETEROGENEOUS_CONNECTIVITY_INFO

La vista HETEROGENEOUS_CONNECTIVITY_INFO elenca le informazioni e gli esempi di connettività per la connessione a PL/SQL mediante i database link e la connettività eterogenea gestita da Oracle.

Colonna Tipo di dati Descrizione
DATABASE_TYPE VARCHAR2(32)

Valore del tipo di database utilizzato con il parametro gateway_params.

REQUIRED_PORT NUMBER

Valori di porta supportati per il tipo di database.

DESCRIPTION CLOB

Specifica una descrizione per DATABASE_TYPE.

OPTIONAL_PARAMETERS VARCHAR2(1024)

Specifica i parametri facoltativi validi per DATABASE_TYPE.

SAMPLE_USAGE CLOB

Mostra l'uso PL/SQL di esempio per DATABASE_TYPE.