Creación de Enlaces de Base de Datos a Bases de Datos No Oracle con Conectividad Heterogénea Gestionada por Oracle

El soporte de Autonomous Database para la conectividad heterogénea gestionada por Oracle facilita la creación de enlaces de base de datos a bases de datos que no sean de Oracle. Al utilizar enlaces de base de datos con conexión heterogénea gestionada por Oracle, Autonomous Database configura la conexión a la base de datos no Oracle.

A continuación se muestra un requisito para utilizar la conectividad heterogénea gestionada por Oracle con Autonomous Database:

  • Cuando la base de datos de destino está en un punto final público, la base de datos se debe configurar para permitir conexiones SSL/TLS entrantes con certificados firmados por CA.

    La conectividad heterogénea gestionada por Oracle soporta conexiones a servicios de base de datos de destino en puntos finales privados (por ejemplo, puede conectarse a Oracle MySQL Database Service cuando el servicio está en un punto final privado). Al conectarse a una base de datos no oracle con conectividad heterogénea gestionada por Oracle en un punto final privado, la conexión utiliza el protocolo TCP y no necesita que se configure SSL/TLS en la base de datos de destino.

    Consulte Create Database Links to Oracle MySQL on a Private Endpoint with Oracle Managed Heterogeneous Connectivity para obtener más información.

Para crear enlaces de base de datos a una base de datos no Oracle mediante conectividad heterogénea gestionada por Oracle, realice lo siguiente:

  1. En Autonomous Database, cree credenciales para acceder a la base de datos de destino. Los valores username y password que especifique con DBMS_CLOUD.CREATE_CREDENTIAL son las credenciales de la base de datos de destino que se utilizan en el enlace de base de datos.
    Nota

    Es necesario proporcionar el parámetro credential_name.

    Por ejemplo:

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

    Esta operación almacena las credenciales en la base de datos en un formato cifrado. Puede utilizar cualquier nombre para el nombre de credencial.

    Para acceder a Google Analytics, Google BigQuery, Youtube o ServiceNow con OAuth2, la credencial debe incluir el parámetro params con el valor gcp_oauth2.

    Por ejemplo:

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

    Consulte Procedimiento CREATE_CREDENTIAL para obtener más información.

  2. Crear el enlace de base de datos a la base de datos de destino mediante DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK.

    Por ejemplo, para crear un enlace de base de datos a 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 es el nombre de la base de datos no Oracle.

    El valor gateway_params db_type que proporcione debe ser uno de los valores soportados:

    Valor de db_type Tipo de base de datos

    awsredshift

    Amazon Redshift

    azure

    Microsoft SQL Server

    Azure SQL

    Azure Synapse Analytics

    db2

    IBM Db2

    google_analytics

    Google Analytics

    google_bigquery

    Google BigQuery

    hive

    Apache Hive

    mongodb

    MongoDB

    mysql

    MySQL

    mysql_community

    MySQL Community Edition

    postgres

    PostgreSQL

    salesforce

    Salesforce

    servicenow ServiceNow

    snowflake

    Copo de Nieve

    youtube

    YouTube

    Autonomous Database configura y gestiona automáticamente la conexión segura a una base de datos de destino y sus conexiones están cifradas de principio a fin. La conectividad heterogénea gestionada por Oracle viene preconfigurada con una cartera que contiene la mayoría de los certificados SSL intermedios y de raíz de confianza comunes. Por lo tanto, se debe proporcionar NULL como valor para el parámetro ssl_server_cert_dn.

    Para garantizar la seguridad al utilizar enlaces de base de datos con conectividad heterogénea gestionada por Oracle, el puerto de conexión está restringido y debe tener SSL/TLS activado. Especifique el puerto de la base de datos de destino con el parámetro port.

    Consulte Tipos y puertos de base de datos de conectividad heterogénea gestionados por Oracle para obtener la lista de tipos de bases de datos no Oracle soportados.

    La vista HETEROGENEOUS_CONNECTIVITY_INFO proporciona información sobre los tipos de conectividad heterogénea de Oracle soportados y muestra un ejemplo de código PL/SQL para cada tipo soportado. Consulte Acceso a información y muestras de conectividad heterogénea para obtener más información.

    Al especificar el parámetro gateway_params, para algunos valores db_type, se soportan parámetros gateway_params adicionales:

    Valor de db_type Parámetros de gateway soportados
    google_analytics

    Cuando el valor db_type es google_analytics, hostname no se utiliza y puede proporcionar un valor como example.com.

    Para db_type google_analytics, la credencial debe ser de tipo OAuth mediante el parámetro params con los valores gcp_oauth2 especificados (client_id, client_secret y refresh_token). Consulte Procedimiento CREATE_CREDENTIAL para obtener más información.

    google_bigquery

    Cuando db_type es google_bigquery, el parámetro project es válido. Este parámetro especifica el nombre del proyecto en google_bigquery y es necesario.

    Cuando el valor db_type es google_bigquery, hostname no se utiliza y puede proporcionar un valor como example.com.

    Para db_type google_bigquery, la credencial debe ser de tipo OAuth mediante el parámetro params con los valores gcp_oauth2 especificados (client_id, client_secret y refresh_token). Consulte Procedimiento CREATE_CREDENTIAL para obtener más información.

    hive

    Cuando db_type es hive, el parámetro http_path es válido. Este parámetro especifica el valor HttpPath, si es necesario, para conectarse a la instancia de Hive.

    salesforce

    Al utilizar el parámetro gateway_params con db_type salesforce, debe proporcionar la opción security_token. El token de seguridad es un código alfanumérico sensible a mayúsculas/minúsculas.

    Consulte Restablecimiento del token de seguridad para obtener más información.

    Al utilizar el parámetro gateway_params con db_type salesforce, debe proporcionar el parámetro hostname correcto.

    Salesforce proporciona dos formas de URL para la cuenta de servicio de Salesforce:

    • Forma xxxx.develop.lightning.force.com de URL
    • Pantalla xxxxmy.salesforce.com de URL, como se muestra en el separador Ver perfil.

    La conectividad heterogénea gestionada por Oracle solo soporta la forma xxxxmy.salesforce.com de URL para el valor del parámetro hostname.

    servicenow

    Para conectarse a ServiceNow y obtener datos, debe proporcionar los parámetros de gateway directory_name y file_name. Estos parámetros especifican un archivo de modelo (archivo de configuración REST) que asigna la respuesta JSON al modelo relacional. El archivo de modelo especifica los puntos finales, la asignación de tablas y el código de respuesta HTTP para procesar la respuesta JSON. Consulte Sintaxis de archivo de modelo y Archivo de modelo de ejemplo para obtener más información.

    Al utilizar el parámetro gateway_params con db_type servicenow, hay dos opciones soportadas:

    • Autenticación básica: debe proporcionar el parámetro gateway_params db_type con el valor 'servicenow' y los parámetros directory_name y file_name junto con las credenciales de nombre de usuario/tipo de contraseña.

    • OAuth 2.0 Autenticación: debe proporcionar el parámetro gateway_params db_type con el valor 'servicenow' y los parámetros directory_name, file_name y token_uri, junto con las credenciales de tipo OAuth.

      Para la autenticación OAuth 2.0 con db_type servicenow, la credencial debe ser de tipo OAuth mediante el parámetro params con los valores gcp_oauth2 especificados (client_id, client_secret y refresh_token). Consulte Procedimiento CREATE_CREDENTIAL para obtener más información.

    El parámetro directory_name especifica el directorio con el archivo de configuración REST ServiceNow. Puede crear este directorio de la siguiente manera:

    create or replace directory servicenow_dir as 'SERVICENOW_DIR';

    Obtenga y descargue el archivo de configuración REST ServiceNow en el directorio especificado. Por ejemplo:

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

    Defina el valor file_name en el nombre del archivo de configuración REST que ha descargado, "servicenow.rest".

    A continuación, puede utilizar el archivo de configuración REST ServiceNow con autenticación básica o OAuth2.0. Consulte HETEROGENEOUS_CONNECTIVITY_INFO View para obtener ejemplos.

    snowflake

    Al utilizar el parámetro gateway_params con db_type snowflake, utilice el identificador de cuenta de Snowflake como parámetro hostname. En este caso, el controlador agrega snowflakecomupting.com, por lo que no transfiere esta parte del nombre de host explícitamente. Para buscar el identificador de cuenta de Snowflake, consulte Formatos de identificador de cuenta por plataforma y región en la nube.

    Por ejemplo: para la cuenta de Snowflake:

    https://example-marketing_test_account.snowflakecomputing.com

    Defina el valor hostname en "example-marketing_test_account".

    youtube

    Para conectarse a YouTube y obtener datos, debe proporcionar los parámetros directory_name y file_name. Estos parámetros especifican un archivo de modelo (archivo de configuración REST) que asigna la respuesta JSON al modelo relacional. El archivo de modelo especifica los puntos finales, la asignación de tablas y el código de respuesta HTTP para procesar la respuesta JSON. Consulte Sintaxis de archivo de modelo y Archivo de modelo de ejemplo para obtener más información.

    Para db_type youtube, la credencial debe ser de tipo OAuth mediante el parámetro params con los valores gcp_oauth2 especificados (client_id, client_secret y refresh_token). Consulte Procedimiento CREATE_CREDENTIAL para obtener más información.

    El parámetro directory_name especifica el directorio con el archivo de configuración REST de youtube.

    Por ejemplo, para crear este directorio y agregar el contenido necesario:

    1. Cree un directorio en la instancia de Autonomous Database:

      create or replace directory youtube_dir as 'YOUTUBE_DIR';
    2. Obtenga y descargue el archivo de configuración REST de descanso automático en el directorio especificado. Por ejemplo:

      exec DBMS_CLOUD.get_object('youtube_dir_cred',
           'https://objectstorage.<...>/youtube.rest','YOUTUBE_DIR');
    3. Defina el valor file_name en el nombre del archivo de configuración REST que ha descargado, 'youtube.rest'.

    A continuación, puede utilizar el archivo de configuración de REST con OAuth2.0. Consulte HETEROGENEOUS_CONNECTIVITY_INFO View para obtener ejemplos.

    Consulte Procedimiento CREATE_DATABASE_LINK para obtener más información.

  3. Utilice el enlace de base de datos para acceder a los datos de la base de datos destino.

    Por ejemplo:

    SELECT count(*) FROM sales@AWSREDSHIFT_LINK

    El nombre de tabla que especifique al utilizar SELECT con Google BigQuery debe estar entre comillas. Por ejemplo:

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

Para las credenciales creadas en el paso 1, las credenciales de la base de datos de destino, si la contraseña del usuario de destino cambia, puede actualizar la credencial que contiene las credenciales del usuario de destino de la siguiente forma:

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

Donde password es la nueva contraseña.

Después de esta operación, los enlaces de base de datos existentes que utilizan esta credencial siguen funcionando sin tener que borrar y recrear los enlaces de base de datos.

Para obtener información adicional, consulte:

Creación de enlaces de base de datos a Oracle MySQL en un punto final privado con conectividad heterogénea gestionada por Oracle

El soporte de Autonomous Database para la conectividad heterogénea gestionada por Oracle permite crear fácilmente enlaces de base de datos a Oracle MySQL Database Service en un punto final privado. Al utilizar enlaces de base de datos con conectividad heterogénea gestionada por Oracle, Autonomous Database configura la conexión a Oracle MySQL Database Service.

Estos son los siguientes requisitos para utilizar la conectividad heterogénea gestionada por Oracle con Oracle MySQL Database Service en un punto final privado:

  • Create a DNS name using private DNS Zone pointing to private IP of your Oracle MySQL Database Service in your VCN. Consulte DNS privado.
  • Cree una instancia de Autonomous Database con un punto final privado en la misma subred.
  • Configure la VCN para Oracle MySQL Database Service para permitir conexiones entrantes en el puerto 3306.

Para crear enlaces de base de datos a Oracle MySQL Database Service en un punto final privado mediante la conectividad heterogénea gestionada por Oracle, realice lo siguiente:

  1. En Autonomous Database, cree credenciales para acceder a Oracle MySQL Database Service. Los valores username y password que especifique con DBMS_CLOUD.CREATE_CREDENTIAL son las credenciales de Oracle MySQL Database Service que se utilizan en el enlace de base de datos.
    Nota

    Es necesario proporcionar el parámetro credential_name.

    Por ejemplo:

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

    Esta operación almacena las credenciales en la base de datos en un formato cifrado. Puede utilizar cualquier nombre para el nombre de credencial.

  2. Cree el enlace de base de datos a Oracle MySQL Database Service mediante DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK.

    Por ejemplo, para crear un enlace de base de datos:

    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. Utilice el enlace de base de datos para acceder a los datos de la base de datos destino.

    Por ejemplo:

    SELECT count(*) FROM sales@MYSQL_LINK
Nota

Para las credenciales creadas en el paso 1, las credenciales de la base de datos de destino, si la contraseña del usuario de destino cambia, puede actualizar la credencial que contiene las credenciales del usuario de destino de la siguiente forma:

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

Donde password es la nueva contraseña.

Después de esta operación, los enlaces de base de datos existentes que utilizan esta credencial siguen funcionando sin tener que borrar y recrear los enlaces de base de datos.

Para obtener información adicional, consulte:

Tipos y puertos de base de datos de conectividad heterogénea gestionados por Oracle

Muestra las bases de datos no Oracle a las que se puede conectar desde Autonomous Database con conectividad heterogénea gestionada por Oracle, además de mostrar el valor de puerto soportado para cada tipo de base de datos. También proporciona un enlace donde puede ver las versiones de base de datos soportadas para cada tipo de base de datos.

Nota

Oracle utiliza conectores DataDirect de progreso. La columna Soporte de base de datos proporciona enlaces al sitio web de Progress, donde puede encontrar las versiones de base de datos soportadas para cada tipo de base de datos.
Tipo de base de datos Valor de db_type Puerto necesario Soporte de base de datos

Amazon Redshift

awsredshift

5.439

Versiones soportadas de Amazon Redshift

Azure SQL

Microsoft SQL Server

Azure Synapse Analytics

azure

1.433

Versiones soportadas de Azure SQL

Versiones soportadas de Azure Synapse Analytics

Apache Hive

hive

443

Versiones Soportadas de Hive

Google Analytics

google_analytics

443

Versiones compatibles con Google Analytics

Google BigQuery

google_bigquery

443

Versiones compatibles con Google BigQuery

Apache Hive

hive

443

Versiones Soportadas de Hive

IBM Db2 11.5.6 o posterior

IBM Db2 11.5.5 o menos

db2

25.000

50.000

Versiones admitidas de IBM Db2

MongoDB

mongodb

27.017

MongoDB Versiones Soportadas

MySQL

mysql

3.306

MySQL Versiones soportadas

MySQL Community Edition

mysql_community

3.306

 

PostgreSQL

postgres

5.432

PostgreSQL Versiones admitidas

Salesforce

salesforce

19.937

Versiones Soportadas de Salesforce

ServiceNow

servicenow

443

ServiceNow Versiones Soportadas

Copo de Nieve

snowflake

443

Versiones soportadas por Snowflake

YouTube

youtube

443 Versiones Soportadas por Youtube

Acceda a muestras e información de conectividad heterogénea

Oracle Autonomous Database proporciona información de conectividad heterogénea para enlaces de base de datos a bases de datos que no sean de Oracle.

La vista HETEROGENEOUS_CONNECTIVITY_INFO proporciona información sobre los tipos de conectividad heterogénea de Oracle soportados y muestra un ejemplo de código PL/SQL para cada tipo soportado.

Por ejemplo:

SELECT * FROM HETEROGENEOUS_CONNECTIVITY_INFO WHERE DATABASE_TYPE = 'hive';

Vista HETEROGENEOUS_CONNECTIVITY_INFO

La vista HETEROGENEOUS_CONNECTIVITY_INFO muestra información y ejemplos de conectividad para conectarse con PL/SQL mediante enlaces de base de datos y conectividad heterogénea gestionada por Oracle.

Columna Tipo de Dato Descripción
DATABASE_TYPE VARCHAR2(32)

Valor de tipo de base de datos utilizado con el parámetro gateway_params.

REQUIRED_PORT NUMBER

Valores de puerto soportados para el tipo de base de datos.

DESCRIPTION CLOB

Especifica una descripción para DATABASE_TYPE.

OPTIONAL_PARAMETERS VARCHAR2(1024)

Especifica los parámetros opcionales válidos para DATABASE_TYPE.

SAMPLE_USAGE CLOB

Muestra un ejemplo de uso de PL/SQL para DATABASE_TYPE.