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 database link a database non Oracle.

Quando si utilizzano 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 di sola 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 le 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 Crea database link a Oracle MySQL su 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 formato cifrato. È possibile utilizzare qualsiasi nome per il nome della credenziale. È necessario 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 Procedura.

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

    Ad esempio, per creare un database link per 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

    Azure SQL

    Azure Synapse Analytics

    db2

    IBM Db2

    google_analytics

    Google Analytics

    google_bigquery

    Google BigQuery

    google_drive

    Google Drive

    hive

    Apache Hive e dintorni

    mongodb

    MongoDB

    mysql

    MySQL

    mysql_community

    MySQL Community Edition

    postgres

    PostgreSQL

    salesforce

    Salesforce

    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 sono cifrate end-to-end. La connettività eterogenea gestita da Oracle è preconfigurata con un wallet che contiene la maggior parte dei certificati SSL sicuri comuni e intermedi. Pertanto, è necessario fornire NULL come valore per il parametro ssl_server_cert_dn.

    Per garantire la sicurezza quando si utilizzano i 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 Tipi e porte di database di connettività eterogenea gestiti da 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. Per ulteriori informazioni, vedere Accedere a informazioni ed esempi di connettività eterogenea.

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

    Valore db_type Parametri gateway supportati con il valore 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 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 in locale.

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

    google_analytics

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

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

    google_bigquery

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

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

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

    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 il 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 di servizio Salesforce:

    • Form xxxx.develop.lightning.force.com dell'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 gateway directory_name e file_name. Questi parametri specificano un file modello (file di configurazione REST) che esegue il mapping della 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.

    • OAuth 2.0 Autenticazione: è 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 utilizzando il parametro params con i valori gcp_oauth2 specificati (client_id, client_secret e refresh_token). Per ulteriori informazioni, vedere CREATE_CREDENTIAL Procedura.

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

    Successivamente, puoi utilizzare il file di configurazione REST ServiceNow con l'autenticazione di base o OAuth2.0. Per esempi, vedere HETEROGENEOUS_CONNECTIVITY_INFO Visualizza.

    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 utilizzando il parametro params con i valori gcp_oauth2 specificati (client_id, client_secret e refresh_token). Per ulteriori informazioni, vedere CREATE_CREDENTIAL Procedura. Generare il file refresh_token per tenant_id.sharepoint.com/.default offline_access. Per ulteriori informazioni, vedere: Determinare l'ambito e OAuth 2.0, autenticazione.

    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 del conto 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 identificativi account per piattaforma cloud e area.

    Per esempio: per il conto Snowflake:

    https://example-marketing_test_account.snowflakecomputing.com

    Impostare il valore hostname su "example-marketing_test_account".

    Se db_type è SNOWFLAKE, i parametri facoltativi: role, schema e warehouse sono validi. Questi valori specificano un valore di schema, ruolo o 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 esegue il mapping della 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 di tipo OAuth utilizzando il parametro params con i valori gcp_oauth2 specificati (client_id, client_secret e refresh_token). Per ulteriori informazioni, vedere CREATE_CREDENTIAL Procedura.

    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 esempi, vedere HETEROGENEOUS_CONNECTIVITY_INFO Visualizza.

    Per ulteriori informazioni, vedere CREATE_DATABASE_LINK Procedura.

  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 racchiuso 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 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 => 'AWS_REDSHIFT_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:

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

Il supporto di Autonomous Database per la connettività eterogenea gestita da Oracle semplifica la creazione di database link 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 utilizzare la connettività eterogenea gestita da Oracle con Oracle MySQL Database Service in un endpoint privato.

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

Per creare database link a un 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 nel 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 formato cifrato. È possibile utilizzare qualsiasi nome per il nome della credenziale.

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

    Ad esempio, per creare un database link:

    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 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 => 'MYSQL_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:

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 di porta supportato per ogni tipo di database. Fornisce inoltre un collegamento in cui è possibile visualizzare le versioni di database supportate per ogni tipo di database.

Nota

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

Amazon Redshift

awsredshift

5.439

Versioni supportate di Amazon Redshift

Azure SQL

Microsoft SQL Server

Azure Synapse Analytics

azure

1.433

Versioni supportate da Azure SQL

Versioni supportate di Azure Synapse Analytics

Apache Hive e dintorni

hive

443

Versioni supportate Hive

Google Analytics

google_analytics

443

Versioni supportate da Google Analytics

Google BigQuery

google_bigquery

443

Versioni supportate da Google BigQuery

Google Drive

google_drive

443

Versioni supportate da Google Drive

Apache Hive e dintorni

hive

443

Versioni supportate Hive

IBM Db2 11.5.6 o versione successiva

IBM Db2 11.5.5 o inferiore

db2

25.000

50.000

Versioni supportate di 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

Salesforce

salesforce

19.937

Versioni supportate Salesforce

ServiceNow

servicenow

443

ServiceNow Versioni supportate

Snowflake

snowflake

443

Snowflake versioni supportate

Youtube

youtube

443 Youtube versioni supportate

Accedi a informazioni ed esempi di 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';

HETEROGENEOUS_CONNECTIVITY_INFO Visualizza

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

A colonne 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 il file 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.