Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se inscrever e obter uma conta gratuita, consulte Conceitos Básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Criar links de banco de dados do Autonomous Database com Conectividade Heterogênea Gerenciada pelo Cliente para o Microsoft SQL Server em um Ponto Final Privado
Introdução
Em uma organização, os dados são armazenados em vários bancos de dados e em muitas vezes enquanto você está trabalhando em um banco de dados, é necessário acessar objetos em outro banco de dados. É aqui que o Oracle Database Link pode ajudar, um link de banco de dados é um objeto de esquema em um banco de dados que permite acessar objetos em outro banco de dados. O outro banco de dados não precisa ser um sistema Oracle Database. No entanto, para acessar sistemas não-Oracle, você deve usar o Oracle Heterogeneous Services.
Neste tutorial, discutiremos como você pode acessar um Microsoft SQL Server Database (banco de dados não Oracle) que está em um Ponto Final Privado do Oracle Autonomous Database Serverless (ADB-S) em um ponto final privado. Para acessar bancos de dados não Oracle do ADB-S, precisamos criar links de banco de dados de um Autonomous Database para um Oracle Database Gateway.
Há duas opções para criar links de banco de dados de um Autonomous Database para um Oracle Database Gateway para acessar bancos de dados não Oracle que estão em um ponto final privado:
• Criar Links de Banco de Dados com Conectividade Heterogênea Gerenciada pelo Cliente com o Banco de Dados do Microsoft SQL Server em um Ponto Final Privado sem uma wallet (TLS)
• Criar Links de Banco de Dados com Conectividade Heterogênea Gerenciada pelo Cliente ao Banco de Dados do Microsoft SQL Server em um Ponto Final Privado com uma wallet (TCPS)
Objetivos
Crie links de banco de dados do Autonomous Database com Conectividade Heterogênea Gerenciada pelo Cliente para o Microsoft SQL Server (Não Oracle Database) em um Ponto Final Privado.
Pré-requisitos
- Leia o documento Criar links de banco de dados com conectividade heterogênea gerenciada pelo cliente para bancos de dados não Oracle em um ponto final privado
- Verifique os pré-requisitos mencionados no documento
- ADB-S - Autonomous Transaction Processing 19c no Ponto Final Privado
- Não Oracle Database - Microsoft SQL Server 2019 Express Edition, Nome do Banco de Dados - AdventureWorks, Port TCP (1433) em execução na VM do Windows em um Ponto Final Privado
- Sistema Operacional Windows VM - Windows Server 2019
- Oracle Database Gateway - Oracle Database Gateway for SQL Server, Porta - TCP (1521), TCPS (2484)
- Faça download dos Gateways do Oracle Database aqui e, em seguida, instale e configure o Oracle Database Gateway for SQL Server.
Para simplificar, instalamos o Oracle Database Gateway for SQL Server e o Microsoft SQL Server 2019 na mesma Instância de VM do OCI com o Windows Server 2019.
Arquitetura
Veja a seguir uma amostra de arquitetura de alto nível da solução
Descrição da ilustração adb-s-db-link-to-mssql.png
Opção 1: Criar links de banco de dados sem uma wallet (TLS)
Tarefa 1.1: Configurar o Oracle Database Gateway for SQL Server
Antes de começarmos, precisamos garantir que o Oracle Database Gateway for SQL Server esteja configurado corretamente. Ao instalar o Oracle Database Gateway for SQL Server, você configurará ORACLE_HOME, anote o local ORACLE_HOME. Para este tutorial, a localização é 'C:\app\oracle\product\19.0.0\tghome_1'.
Há quatro arquivos importantes que você precisa garantir que estão configurados corretamente.
- ORACLE_HOME\dg4msql\admin\initdg4msql.ora
- ORACLE_HOME\network\admin\listener.ora
- ORACLE_HOME\network\admin\sqlnet.ora
- ORACLE_HOME\network\admin\tnsnames.ora
É assim que os arquivos se parecem em nosso ambiente de teste 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 o serviço Oracle Database Gateway para este tutorial, ele é 'OracleOraGTW19Home1TNSListener' usando a Console de Serviços (Services.msc
).
Você pode verificar o status do listener usando o 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
Tarefa 1.2: Criar link de banco de dados com base em uma instância do Autonomous Database sem wallet
-
Crie um logon no MS SQL Server que tenha acesso ao banco de dados do MS SQL Server. Por exemplo, criamos um Log-in SQL
ORACLE
no MS SQL Server que tem acesso ao banco de dados do MS SQL ServerAdventureWorks
. -
Conecte-se ao Autonomous Database e crie credenciais para acessar o banco de dados do MS SQL Server. O nome de usuário e a senha especificados com
DBMS_CLOUD.CREATE_CREDENTIAL
são as credenciais do banco de dados do MS SQL Server usadas no link de banco de dados. Para este tutorial, fornecemos credenciais para o Log-in SQLORACLE
.BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'DB_LINK_CRED', username => 'ORACLE', --Ensure username is in UPPERCASE password => 'USER_PASSWORD' ); END; /
-
Agora crie o link de banco de dados no Autonomous Database para o Oracle Database Gateway for SQL Server usando 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; /
Observação: O parâmetro
private_target
deve ser definido como TRUE quando o destino que não é do Oracle Database estiver em um ponto final privado. -
Consulte o MS SQL Server Database usando o Link do Oracle DB.
SELECT * FROM HumanResources.Employee@MSSQLLINK;
Você pode consultar o MS SQL Server Database que está em um ponto final privado usando o Oracle DB Link sem wallet do ADB-S.
Opção 2: Criar links de banco de dados com uma wallet (TCPS)
Tarefa 2.1: Configurar o Oracle Database Gateway for SQL Server
Agora, antes de criar os links de banco de dados com Conectividade Heterogênea Gerenciada pelo Cliente ao Banco de Dados do Microsoft SQL Server em um Ponto Final Privado com uma wallet, precisamos criar uma wallet. Podemos criar uma wallet autoassinada usando orapki.
Estaremos criando a wallet do Servidor e do Cliente na mesma máquina em que o Oracle Database Gateway for SQL Server está instalado. Como o gateway foi instalado nesta máquina, orapki
já está presente aqui 'C:\app\oracle\product\19.0.0\tghome_1\bin'.
Vamos criar duas pastas para a wallet do Servidor e do Cliente:
-
C:\app\oracle\product\19.0.0\tghome_1\walletserver
-
C:\app\oracle\product\19.0.0\tghome_1\walletclient
Comandos para criar uma wallet do servidor e adicionar certificado do 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 criar uma wallet do cliente e adicionar certificado do 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
Agora, precisamos exportar os certificados da wallet do servidor e importá-los para a wallet do cliente e também exportar os certificados da wallet do cliente e importá-los para a wallet do servidor.
Comandos para exportar os certificados das carteiras:
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 os certificados para as wallets:
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
Agora certifique-se de que os quatro arquivos a seguir estejam atualizados corretamente:
-
ORACLE_HOME\dg4msql\admin\initdg4msql.ora
-
ORACLE_HOME\network\admin\listener.ora
-
ORACLE_HOME\network\admin\sqlnet.ora
-
ORACLE_HOME\network\admin\tnsnames.ora
É assim que os arquivos se parecem em nosso ambiente de teste 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)
)
Tarefa 2.2: Criar link de banco de dados de uma instância do Autonomous Database com wallet
-
Crie um logon no MS SQL Server que tenha acesso ao banco de dados do MS SQL Server. Por exemplo, criamos um Log-in SQL
ORACLE
no MS SQL Server que tem acesso ao banco de dados do MS SQL ServerAdventureWorks
. -
Copie a wallet do cliente (
cwallet.sso
) deC:\app\oracle\product\19.0.0\tghome_1\walletclient
para o Armazenamento de Objetos do OCI. -
Conecte-se ao Autonomous Database e vamos criar credenciais para acessar o Armazenamento de Objetos no qual você copiou o arquivo
cwallet.sso
.-
Consulte CREATE_CREDENTIAL para obter informações sobre os parâmetros de nome de usuário e senha para diferentes serviços de armazenamento de objetos.
-
Consulte Chaves e OCIDs Necessários para obter as informações de parâmetros necessários.
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; /
-
-
Agora, criaremos um diretório no Autonomous Database para o arquivo de wallet
cwallet.sso
.CREATE DIRECTORY dblink_wallet_dir AS 'wallet_dir';
-
Usaremos DBMS_CLOUD.GET_OBJECT para fazer upload da wallet autoassinada do gateway de destino para o diretório que criamos na etapa 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 obter o
object_uri
, consulte Formatos de URI do Cloud Object Storage -
Crie credenciais para acessar o banco de dados do MS SQL Server. O nome de usuário e a senha especificados com
DBMS_CLOUD.CREATE_CREDENTIAL
são as credenciais do banco de dados do MS SQL Server usadas no link de banco de dados. Neste tutorial, fornecemos credenciais para o Log-in SQL 'ORACLE'.BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'DB_LINK_CRED', username => 'ORACLE', --Ensure username is in UPPERCASE password => 'USER_PASSWORD' ); END; /
-
Agora crie o link de banco de dados no Autonomous Database para o Oracle Database Gateway for SQL Server usando 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; /
-
Agora, vamos consultar o MS SQL Server Database usando o Oracle DB Link.
SELECT * FROM HumanResources.Employee@MSSQLLINKWW;
Próximas Etapas
Neste tutorial, aprendemos a configurar Links de Banco de Dados de um Autonomous Database com Conectividade Heterogênea Gerenciada pelo Cliente para o Microsoft SQL Server (Não Oracle Database) em um Ponto Final Privado. Exploramos ambas as opções, isto é, sem uma wallet (TLS) e com uma wallet (TCPS).
Etapas semelhantes podem ser usadas para outros Bancos de Dados Não Oracle. Certifique-se de ter configurado o Oracle Database Gateway adequadamente.
Confirmações
- Autor - Deviprasad Moolya (Arquiteto de Nuvem Principal)
Mais Recursos de Aprendizagem
Explore outros laboratórios no site docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal YouTube do Oracle Learning. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o 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.