Nota:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse en una cuenta gratuita, consulte Introducción a la capa gratuita de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para las credenciales, el arrendamiento y los compartimentos de Oracle Cloud Infrastructure. Al finalizar el laboratorio, sustituya estos valores por otros específicos de su entorno en la nube.
Crear enlaces de base de datos de Autonomous Database con conectividad heterogénea gestionada por el cliente a Microsoft SQL Server en un punto final privado
Introducción
En una organización, los datos se almacenan en varias bases de datos y muchas veces mientras trabaja en una base de datos, debe acceder a los objetos de otra base de datos. Aquí es donde Oracle Database Link puede ayudar, un enlace de base de datos es un objeto de esquema que le permite acceder a los objetos de otra base de datos. La otra base de datos no necesita ser un sistema Oracle Database. Sin embargo, para acceder a sistemas que no sean de Oracle, debe utilizar Oracle Heterogeneous Services.
En este tutorial, analizaremos cómo puede acceder a una base de datos Microsoft SQL Server (base de datos no Oracle) que está en un punto final privado desde Oracle Autonomous Database Serverless (ADB-S) en un punto final privado. Para acceder a bases de datos que no sean de Oracle desde ADB-S, necesitamos crear enlaces de base de datos desde una instancia de Autonomous Database a una de Oracle Database Gateway.
Hay dos opciones para crear enlaces de base de datos de una instancia de Autonomous Database a una instancia de Oracle Database Gateway para acceder a bases de datos no Oracle que están en un punto final privado:
• Creación de enlaces de base de datos con conectividad heterogénea gestionada por el cliente a una base de datos de Microsoft SQL Server en un punto final privado sin cartera (TLS)
• Creación de enlaces de base de datos con conectividad heterogénea gestionada por el cliente a una base de datos de Microsoft SQL Server en un punto final privado con una cartera (TCPS)
Objetivos
Cree enlaces de base de datos de Autonomous Database con conectividad heterogénea gestionada por el cliente a Microsoft SQL Server (no de Oracle Database) en un punto final privado.
Requisitos
- Leer el documento Creación de enlaces de base de datos con conectividad heterogénea gestionada por el cliente a bases de datos no Oracle en un punto final privado
- Revise los requisitos mencionados en el documento
- ADB-S - Autonomous Transaction Processing 19c en punto final privado
- No de Oracle Database: Microsoft SQL Server 2019 Express Edition, nombre de base de datos: AdventureWorks, TCP de puerto (1433) que se ejecuta en una máquina virtual de Windows en un punto final privado
- Sistema operativo Windows VM - Windows Server 2019
- Oracle Database Gateway: Oracle Database Gateway for SQL Server, Port - TCP (1521), TCPS (2484)
- Descargue los gateways de Oracle Database aquí y, a continuación, instale y configure Oracle Database Gateway for SQL Server.
Para simplificarlo, hemos instalado Oracle Database Gateway for SQL Server y Microsoft SQL Server 2019 en la misma instancia de VM de OCI con Windows Server 2019.
Arquitectura
A continuación se muestra un ejemplo de arquitectura de alto nivel de la solución
Descripción de la ilustración adb-s-db-link-to-mssql.png
Opción 1: Crear enlaces de base de datos sin cartera (TLS)
Tarea 1.1: Configuración de Oracle Database Gateway for SQL Server
Antes de empezar, debemos asegurarnos de que Oracle Database Gateway for SQL Server está configurado correctamente. Al instalar Oracle Database Gateway for SQL Server, configurará ORACLE_HOME, tome nota de la ubicación ORACLE_HOME. Para este tutorial, la ubicación es 'C:\app\oracle\product\19.0.0\tghome_1'.
Hay cuatro archivos importantes que debe asegurarse de que están configurados correctamente.
- ORACLE_HOME\dg4msql\admin\initdg4msql.ora
- ORACLE_HOME\network\admin\listener.ora
- ORACLE_HOME\network\admin\sqlnet.ora
- ORACLE_HOME\network\admin\tnsnames.ora
Así es como se ven los archivos en nuestro entorno de prueba para este tutorial.
ORACLE_HOME\dg4msql\admin\initdg4msql.ora
# This is a customized agent init file that contains the HS parameters
# that are needed for the Database Gateway for Microsoft SQL Server
#
# HS init parameters
#
HS_FDS_CONNECT_INFO=mssqlvm1:1433//AdventureWorks
HS_FDS_TRACE_LEVEL=ODBC
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
ORACLE_HOME\network\admin\listener.ora
# listener.ora Network Configuration File: C:\app\oracle\product\19.0.0\tghome_1\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = mssqlvm1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCPS)(HOST = mssqlvm1)(PORT = 2484))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=dg4msql)
(ORACLE_HOME=C:\app\oracle\product\19.0.0\tghome_1)
(PROGRAM=dg4msql)
)
)
ORACLE_HOME\network\admin\sqlnet.ora
# sqlnet.ora Network Configuration File: C:\app\oracle\product\19.0.0\tghome_1\NETWORK\ADMIN\sqlnet.ora
# Generated by Oracle configuration tools.
# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.
SQLNET.AUTHENTICATION_SERVICES= (NONE)
NAMES.DIRECTORY_PATH= (TNSNAMES)
ORACLE_HOME\network\admin\tnsnames.ora
dg4msql=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
(CONNECT_DATA=(SID=dg4msql))
(HS=OK)
)
Reinicie el servicio de Oracle Database Gateway; para este tutorial es 'OracleOraGTW19Home1TNSListener' mediante la consola de servicios (Services.msc
).
Puede comprobar el estado del listener mediante el comando lsnrctl status
:
C:\Users\opc>lsnrctl status
LSNRCTL for 64-bit Windows: Version 19.0.0.0.0 - Production on 19-JUL-2023 11:45:54
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=mssqlvm1)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for 64-bit Windows: Version 19.0.0.0.0 - Production
Start Date 19-JUL-2023 09:14:23
Uptime 0 days 2 hr. 31 min. 32 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File C:\app\oracle\product\19.0.0\tghome_1\network\admin\listener.ora
Listener Log File C:\app\oracle\diag\tnslsnr\MSSQLVM1\listener\alert\log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=MSSQLVM1)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=MSSQLVM1)(PORT=2484)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
Services Summary...
Service "dg4msql" has 1 instance(s).
Instance "dg4msql", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
Tarea 1.2: Crear enlace de base de datos desde una instancia de Autonomous Database sin cartera
-
Cree una conexión en MS SQL Server que tenga acceso a la base de datos de MS SQL Server. Por ejemplo, hemos creado una conexión SQL
ORACLE
en MS SQL Server que tiene acceso a la base de datos de MS SQL ServerAdventureWorks
. -
Conéctese a Autonomous Database y cree credenciales para acceder a la base de datos de MS SQL Server. El nombre de usuario y la contraseña que especifique con
DBMS_CLOUD.CREATE_CREDENTIAL
son las credenciales de la base de datos de MS SQL Server que se utilizan en el enlace de base de datos. Para este tutorial, proporcionamos credenciales para la conexión SQLORACLE
.BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'DB_LINK_CRED', username => 'ORACLE', --Ensure username is in UPPERCASE password => 'USER_PASSWORD' ); END; /
-
Ahora cree el enlace de base de datos de Autonomous Database a Oracle Database Gateway for SQL Server mediante DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK.
BEGIN DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK( db_link_name => 'MSSQLLINK', hostname => 'gatewayhostname', port => '1521', service_name => 'dg4msql', ssl_server_cert_dn => NULL, credential_name => 'DB_LINK_CRED', directory_name => NULL, private_target => TRUE, gateway_link => TRUE, gateway_params => NULL); END; /
Nota: El parámetro
private_target
se debe definir en TRUE cuando el destino que no sea Oracle Database está en un punto final privado. -
Consulte la base de datos de MS SQL Server mediante el enlace de Oracle DB.
SELECT * FROM HumanResources.Employee@MSSQLLINK;
Puede consultar la base de datos de MS SQL Server que está en un punto final privado mediante el enlace de Oracle DB sin cartera de ADB-S.
Opción 2: Crear enlaces de base de datos con una cartera (TCPS)
Tarea 2.1: Configuración de Oracle Database Gateway for SQL Server
Ahora, antes de crear los enlaces de base de datos con la conectividad heterogénea gestionada por el cliente a la base de datos de Microsoft SQL Server en un punto final privado con una cartera, necesitamos crear una cartera. Podemos crear una cartera autofirmada mediante orapki.
Crearemos la cartera de servidor y cliente en la misma máquina en la que está instalado Oracle Database Gateway for SQL Server. Dado que la puerta de enlace se instaló en esta máquina, orapki
ya está presente aquí 'C:\app\oracle\product\19.0.0\tghome_1\bin'.
Vamos a crear dos carpetas para la cartera de servidor y cliente:
-
C:\app\oracle\product\19.0.0\tghome_1\walletserver
-
C:\app\oracle\product\19.0.0\tghome_1\walletclient
Comandos para crear una cartera de servidor y agregar un certificado de servidor:
orapki wallet create -wallet C:\app\oracle\product\19.0.0\tghome_1\walletserver -pwd Password@123 -auto_login
orapki wallet add -wallet C:\app\oracle\product\19.0.0\tghome_1\walletserver -pwd Password@123 -dn "CN=windows" -keysize 1024 -self_signed -validity 3650 -sign_alg sha256
Comandos para crear una cartera de cliente y agregar un certificado de cliente:
orapki wallet create -wallet C:\app\oracle\product\19.0.0\tghome_1\walletclient -pwd Password@123 -auto_login
orapki wallet add -wallet C:\app\oracle\product\19.0.0\tghome_1\walletclient -pwd Password@123 -dn "CN=mssqlvm1client" -keysize 1024 -self_signed -validity 3650 -sign_alg sha256
Ahora debemos exportar los certificados de la cartera del servidor e importarlos a la cartera del cliente, así como exportar los certificados de la cartera del cliente e importarlos a la cartera del servidor.
Comandos para exportar los certificados desde las carteras:
orapki wallet export -wallet C:\app\oracle\product\19.0.0\tghome_1\walletserver -pwd Password@123 -dn "CN=windows" -cert C:\app\oracle\product\19.0.0\tghome_1\walletserver\server.crt
orapki wallet export -wallet C:\app\oracle\product\19.0.0\tghome_1\walletclient -pwd Password@123 -dn "CN=mssqlvm1client" -cert C:\app\oracle\product\19.0.0\tghome_1\walletclient\client.crt
Comandos para importar los certificados a las carteras:
orapki wallet add -wallet C:\app\oracle\product\19.0.0\tghome_1\walletserver -pwd Password@123 -trusted_cert -cert C:\app\oracle\product\19.0.0\tghome_1\walletclient\client.crt
orapki wallet add -wallet C:\app\oracle\product\19.0.0\tghome_1\walletclient -pwd Password@123 -trusted_cert -cert C:\app\oracle\product\19.0.0\tghome_1\walletserver\server.crt
Ahora asegúrese de que los cuatro archivos siguientes se actualicen correctamente:
-
ORACLE_HOME\dg4msql\admin\initdg4msql.ora
-
ORACLE_HOME\network\admin\listener.ora
-
ORACLE_HOME\network\admin\sqlnet.ora
-
ORACLE_HOME\network\admin\tnsnames.ora
Así es como se ven los archivos en nuestro entorno de prueba para este tutorial.
ORACLE_HOME\dg4msql\admin\initdg4msql.ora
# This is a customized agent init file that contains the HS parameters
# that are needed for the Database Gateway for Microsoft SQL Server
#
# HS init parameters
#
HS_FDS_CONNECT_INFO=mssqlvm1:1433//AdventureWorks
HS_FDS_TRACE_LEVEL=ODBC
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
ORACLE_HOME\network\admin\listener.ora
# listener.ora Network Configuration File: C:\app\oracle\product\19.0.0\tghome_1\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.
WALLET_LOCATION =
(SOURCE =
(METHOD = File)
(METHOD_DATA =
(DIRECTORY=C:\app\oracle\product\19.0.0\tghome_1\walletserver)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = mssqlvm1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCPS)(HOST = mssqlvm1)(PORT = 2484))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=dg4msql)
(ORACLE_HOME=C:\app\oracle\product\19.0.0\tghome_1)
(PROGRAM=dg4msql)
)
)
ORACLE_HOME\network\admin\sqlnet.ora
# sqlnet.ora Network Configuration File: C:\app\oracle\product\19.0.0\tghome_1\NETWORK\ADMIN\sqlnet.ora
# Generated by Oracle configuration tools.
# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.
SSL_SERVER_DN_MATCH= (ON)
WALLET_LOCATION =
(SOURCE =
(METHOD = File)
(METHOD_DATA =
(DIRECTORY=C:\app\oracle\product\19.0.0\tghome_1\walletserver)
)
)
SQLNET.AUTHENTICATION_SERVICES= (NONE)
NAMES.DIRECTORY_PATH= (TNSNAMES)
ORACLE_HOME\network\admin\tnsnames.ora
dg4msql=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
(CONNECT_DATA=(SID=dg4msql))
(ADDRESS=(PROTOCOL=tcps)(HOST=localhost)(PORT=2484))
(CONNECT_DATA=(SID=dg4msql))
(HS=OK)
)
Tarea 2.2: Crear enlace de base de datos desde una instancia de Autonomous Database con cartera
-
Cree una conexión en MS SQL Server que tenga acceso a la base de datos de MS SQL Server. Por ejemplo, hemos creado una conexión SQL
ORACLE
en MS SQL Server que tiene acceso a la base de datos de MS SQL ServerAdventureWorks
. -
Copie la cartera de cliente (
cwallet.sso
) deC:\app\oracle\product\19.0.0\tghome_1\walletclient
en el almacén de objetos de OCI. -
Conéctese a Autonomous Database y vamos a crear credenciales para acceder al almacén de objetos en el que ha copiado el archivo
cwallet.sso
.-
Consulte CREATE_CREDENTIAL para obtener información sobre los parámetros de nombre de usuario y contraseña para diferentes servicios de almacenamiento de objetos.
-
Consulte Claves y OCID necesarios para obtener la información de parámetros necesaria.
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL ( credential_name => 'OCI_KEY_CRED', user_ocid => 'ocid1.user.oc1..aaaa.....7igkq', tenancy_ocid => 'ocid1.tenancy.oc1..aaaa....xo3da', private_key => 'MIIEvgIBA.........S0EOOYN4ijczB', fingerprint => 'f2:db:f9:18:a4:..:..:..:f4:f6:6c:39:96:16:aa:27'); END; /
-
-
Ahora crearemos un directorio en Autonomous Database para el archivo de cartera
cwallet.sso
.CREATE DIRECTORY dblink_wallet_dir AS 'wallet_dir';
-
Utilizaremos DBMS_CLOUD.GET_OBJECT para cargar la cartera autofirmada del gateway de destino en el directorio creado en el paso anterior,
DBLINK_WALLET_DIR
.BEGIN DBMS_CLOUD.GET_OBJECT( credential_name => 'OCI_KEY_CRED', object_uri => 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/<namespace>/b/<bucketname>/o/cwallet.sso', directory_name => 'dblink_wallet_dir'); END;
Para obtener
object_uri
, consulte Formatos de URI de almacenamiento de objetos en la nube -
Cree credenciales para acceder a la base de datos de MS SQL Server. El nombre de usuario y la contraseña que especifique con
DBMS_CLOUD.CREATE_CREDENTIAL
son las credenciales de la base de datos de MS SQL Server que se utilizan en el enlace de base de datos. En este tutorial, proporcionamos credenciales para la conexión SQL 'ORACLE'.BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'DB_LINK_CRED', username => 'ORACLE', --Ensure username is in UPPERCASE password => 'USER_PASSWORD' ); END; /
-
Ahora cree el enlace de base de datos de Autonomous Database a Oracle Database Gateway for SQL Server mediante DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK.
BEGIN DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK( db_link_name => 'MSSQLLINKWW', hostname => 'mssqlvm1', port => '2484', service_name => 'dg4msql', ssl_server_cert_dn => 'CN=windows', credential_name => 'DB_LINK_CRED', directory_name => 'dblink_wallet_dir', gateway_link => TRUE, private_target => TRUE, gateway_params => NULL); END; /
-
Ahora vamos a consultar la base de datos de MS SQL Server mediante el enlace de Oracle DB.
SELECT * FROM HumanResources.Employee@MSSQLLINKWW;
Pasos Siguientes
En este tutorial, hemos aprendido a configurar enlaces de base de datos desde una instancia de Autonomous Database con conectividad heterogénea gestionada por el cliente a Microsoft SQL Server (no Oracle Database) en un punto final privado. Exploramos ambas opciones, es decir, sin cartera (TLS) y con cartera (TCPS).
Se pueden utilizar pasos similares para otras bases de datos que no sean de Oracle, debe asegurarse de que ha configurado Oracle Database Gateway correctamente.
Agradecimientos
- Autor: Deviprasad Moolya (arquitecto principal de Cloud)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.
Para obtener documentación sobre los productos, visite Oracle Help Center.
Create database links from Autonomous Database with Customer-Managed Heterogeneous Connectivity to Microsoft SQL Server on a Private Endpoint
F84999-01
August 2023
Copyright © 2023, Oracle and/or its affiliates.