Carregar Dados Usando Serviços Heterogêneos da Oracle

OracleDB para Azure permite que aplicativos Azure carreguem e consultem dados de bancos de dados do OCI. Essa arquitetura descreve como um Oracle Exadata Database Service on Dedicated Infrastructure pode aproveitar a infraestrutura fornecida pelo OracleDB for Azure para carregar dados de um Azure SQL Server usando um link de banco de dados por meio de serviços heterogêneos da Oracle fornecidos pelo Oracle Exadata Database Service on Dedicated Infrastructure.

Arquitetura

Essa arquitetura usa o Oracle Exadata Database Service on Dedicated Infrastructure para carregar e consultar dados de um Azure SQL Server com um link de banco de dados usando o Oracle Heterogenous Services executado no Oracle Exadata Database Service on Dedicated Infrastructure.

O diagrama a seguir ilustra essa arquitetura.



exadata-db-azure-odsa-heterogenous.zip

Antes de Começar

Antes de começar, verifique as versões dos principais componentes de software usados nesta configuração, faça download do pacote de software necessário e revise a documentação do produto para referência posterior.

Revisar Requisitos de Software

Essas instruções são testadas nas seguintes versões de software e hardware.

  • Oracle Exadata Database Service on Dedicated Infrastructure X8M-2
  • Oracle Database 19.16

Faça download dos seguintes pacotes de software:

Sobre Serviços e Atribuições Obrigatórios

Esta solução requer os seguintes serviços:

  • Oracle Exadata Database Service on Dedicated Infrastructure
  • Oracle Exadata Database Service on Dedicated Infrastructure Virtual Machines

Estas são as atribuições necessárias para cada serviço.

Nome do Serviço: Atribuição Obrigatório para...
Oracle Exadata Database Service on Dedicated Infrastructure Dedicado: sys con Configure o link de banco de dados.
Oracle Exadata Database Service on Dedicated Infrastructure Virtual Machines: opc/root, oracle, grid Instale drivers Microsoft ODBC, instale ferramentas ODBC, configure o listener e configure serviços Heterógenos.

Consulte Saiba como obter serviços do Oracle Cloud para Soluções Oracle para obter os serviços de nuvem necessários.

Considerações sobre o Oracle Heterogenous Services

Ao carregar dados usando os serviços Heterogêneos da Oracle, revise essas considerações.

  • A resolução do nome do host para o endereço IP do Ponto Final do Servidor SQL do Azure é exigida pelo banco de dados do Oracle Exadata Database Service on Dedicated Infrastructure. Você pode editar o arquivo /etc/hosts nos Nós de Cluster de VMs do Oracle Exadata Database Service on Dedicated Infrastructure ou configurar uma Zona de DNS Privada na VCN (Rede Virtual na Nuvem) do OCI em que o banco de dados Oracle Exadata Database Service on Dedicated Infrastructure está configurado.
  • Nos bancos de dados do Oracle Exadata Database Service on Dedicated Infrastructure, o parâmetro global_names é definido como TRUE por padrão. Portanto, o nome do banco de dados totalmente qualificado deve ser usado ao criar o link do banco de dados para o Azure SQL Server.
  • Os Serviços Heterogêneos da Oracle são incluídos por padrão com bancos de dados do Oracle Exadata Database Service on Dedicated Infrastructure. No entanto, é necessário um driver Microsoft ODBC adicional para se conectar a um banco de dados de terceiros. Para o banco de dados Azure SQL Server, recomenda-se o Driver Microsoft ODBC para Microsoft SQL Server.

Vantagens dos Serviços Heterogêneos da Oracle

  • Os Serviços Heterogêneos da Oracle são desenvolvidos e suportados pela Oracle e estão incluídos nas imagens de software de banco de dados do Oracle Exadata Database Service on Dedicated Infrastructure. Nenhum licenciamento adicional da Oracle é necessário.
  • A comunicação entre o Oracle Exadata Database Service on Dedicated Infrastructure e o Azure SQL Server é totalmente criptografada de ponta a ponta, nenhuma configuração adicional é necessária (criptografia de rede aplicada pelo Azure SQL Server e configurações padrão do Oracle Exadata Database Service on Dedicated Infrastructure).

Desvantagens do Oracle Heterogenous Services

  • É necessário instalar software de terceiros adicional no Oracle Exadata Database Service on Dedicated Infrastructure (Microsoft ODBC Driver for Microsoft SQL Server). Talvez sejam necessárias etapas adicionais ao atualizar e manter o ambiente do Oracle Exadata Database Service on Dedicated Infrastructure.
  • Os Serviços Heterogêneos da Oracle são executados na plataforma Oracle Exadata Database Service on Dedicated Infrastructure, que pode tornar a solução um pouco mais cara, pois a solução usará as OCPUs do Oracle Exadata Database Service on Dedicated Infrastructure mais especializadas e de preço mais alto para carregar e consultar dados do Azure SQL Server.
  • A Solução usa o Microsoft ODBC Driver para o Microsoft SQL Server, que requer configuração manual para conversão e mapeamento de tipos de dados.

Configurar o Oracle Database Gateway Usando Serviços Heterogêneos da Oracle

  1. Faça log-in na console do Azure para obter as informações do banco de dados do Azure SQL Server do qual o banco de dados do Oracle Exadata Database Service on Dedicated Infrastructure carregará e consultará dados. Essas informações são necessárias para informar ao Microsoft ODBC Driver como estabelecer conexão com o banco de dados do Azure SQL Server:
    Obtenha os seguintes detalhes:
    • Nome do Banco de Dados: Nome do banco de dados Azure SQL Server.
    • Nome do Servidor Totalmente Qualificado: Nome do Host Totalmente Qualificado para SQL Server onde o banco de dados do Azure SQL Server está em execução, geralmente no formato servername.database.windows.net.
    • Ponto Final Privado do Azure SQL Server: O nome e o endereço IP do ponto final privado do Azure SQL Server na vnet do Azure que se conecta ao Azure SQL Server. Se ainda não existir um ponto final privado, crie um para o Azure SQL Server e anote o nome e o endereço IP.
    • Nome do Usuário do Azure SQL Server: Nome de um usuário existente do Azure SQL Server com permissão para estabelecer conexão com o banco de dados e o esquema do Azure SQL Server, geralmente sqladmin.
    • Senha do Usuário do Azure SQL Server: Senha do usuário do Azure SQL Server para estabelecer conexão com o banco de dados e o esquema do Azure SQL Server.
  2. No menu principal do OCI, selecione Gerenciamento de Rede/DNS para criar uma Zona de DNS Privada. Na nova Zona de DNS Privado, adicione um registro para o Nome do Servidor Totalmente Qualificado na etapa 1 para resolver o endereço IP do ponto final privado do Azure SQL Server (na etapa 1).
  3. No menu principal do OCI, selecione Gerenciamento de Rede/DNS para criar uma View Privada de DNS. Adicione a Zona de DNS Privada criada na etapa anterior à View Privada de DNS recém-criada e ative as alterações.
  4. No menu principal do OCI, selecione Rede/VCN (Rede Virtual do Cliente). Selecione a VCN criada quando o serviço Oracle Database Gateway Oracle Exadata Database Service on Dedicated Infrastructure foi provisionado (altere o compartimento, se necessário). Clique no link do resolvedor de DNS e adicione a View Privada de DNS criada da etapa anterior ao resolvedor de DNS. Isso permitirá a resolução de nome e endereço IP do Oracle Exadata Database Service on Dedicated Infrastructure para a VM do Azure que executa o Oracle Database Gateway.
  5. Faça log-in em um dos nós do Cluster de VMs do Oracle Exadata Database Service on Dedicated Infrastructure para usar nslookup para verificar se a resolução do nome do host para o endereço IP está funcionando para a máquina virtual do Azure que executará o Oracle Database Gateway.
    Por exemplo:
    [opc@exa_dbnodex ~]$ nslookup servername.database.windows.net
    Server: 169.254.169.254
    Address: 169.254.169.254#53
    Non-authoritative answer:
    Name: servername.database.windows.net
    Address: IP_address_of_Azure_SQL_Server_private_endpoint
    [opc@exa_dbnodex ~]$
    As variáveis do exemplo têm os seguintes valores:
    • servername é o nome do servidor totalmente qualificado do Azure SQL Server na etapa 1.
    • IP_address_of_Azure_SQL_Server_private_endpoint é o endereço IP do ponto final privado do Azure SQL Server na etapa 1.
  6. Faça upload dos pacotes Microsoft (driver ODBC Microsoft e ferramentas SQL) baixados anteriormente para os nós de Cluster de VMs do Oracle Exadata Database Service on Dedicated Infrastructure, instale os pacotes e configure o Driver ODBC MicrosoftS para Microsoft SQL Server. Consulte Configurar e Testar o Driver ODBC da Microsoft para o Microsoft SQL Server para obter instruções.
  7. Configurar Serviços Heterogêneos da Oracle para conectar o banco de dados do Oracle Exadata Database Service on Dedicated Infrastructure ao Azure SQL Server usando o Driver ODBC MS.
  8. No Oracle Exadata Database Service on Dedicated Infrastructure banco de dados plugável (PDB) (não no CDB) crie um link de banco de dados para o banco de dados Azure SQL Server. O parâmetro global_names é definido como TRUE nos bancos de dados Oracle Exadata Database Service on Dedicated Infrastructure por padrão; portanto, o nome do banco de dados totalmente qualificado deve ser usado para criar o link do banco de dados. Depois que o link de banco de dados for criado, você poderá consultar e carregar dados do banco de dados do Azure SQL Server para o Oracle Exadata Database Service on Dedicated Infrastructure banco de dados plugável (PDB) usando esse link.
    [opc@exadbnodex ~]$ sudo su - oracle
    Last login: Tue Sep 13 20:06:30 UTC 2022
    [oracle@exadbnodex ~]$ . ./exadb_name.env
    [oracle@exadbnodex ~]$sqlplus / as sysdba
    SQL> show pdbs;
    CON_ID CON_NAME OPEN MODE RESTRICTED
    ---------- ------------------------------ ---------- ----------
     2 PDB$SEED READ ONLY NO
     3 PDBName READ WRITE NO
    SQL> alter session set container=PDBName;
    Session altered.
    SQL>create public database 
    link Fully_Qualified_Server_Name connect to 
    "Azure_SQL_Server_Username" identified by 
    "Azure_SQL_User_password" using 
    'Database_Name';
    Database link created.
    Observe que o nome do usuário e a senha estão entre aspas duplas (" "), enquanto o nome do banco de dados do Azure SQL Server está entre aspas simples (' ').
    As variáveis do exemplo têm os seguintes valores:
    • exadb_name é o nome do banco de dados Oracle Exadata Database Service on Dedicated Infrastructure.
    • PDBName é o nome do banco de dados plugável.
    • Fully_Qualified_Server_Name é o nome do host totalmente qualificado para o servidor SQL no qual o banco de dados do Azure SQL Server está em execução, na etapa 1.
    • Azure_SQL_Server_Username é o nome do nome de usuário existente do Azure SQL Server, na etapa 1.
    • Azure_SQL_User_Password é a senha do usuário do Azure SQL Server para estabelecer conexão com o banco de dados, na etapa 1.
    • Database_Name é o nome do banco de dados do Azure SQL Server, na etapa 1.
  9. Teste o link recém-criado executando uma consulta, por exemplo:
    SQL> select count(*) from 
    some_table@DatabaseLink_Name;
    As variáveis do exemplo têm os seguintes valores:
    • some_table é o nome de uma tabela no seu banco de dados a ser consultada.
    • DatabaseLink_Name é o nome do link de banco de dados na etapa 8.

Configurar e Testar o Driver ODBC da Microsoft para o Microsoft SQL Server

Essas etapas descrevem como instalar e configurar o Driver ODBC Microsoft para o Microsoft SQL Server nos nós do Cluster de VMs do Oracle Exadata Database Service on Dedicated Infrastructure.

  1. Em todos os nós do Cluster de VMs do Oracle Exadata Database Service on Dedicated Infrastructure, instale o Driver ODBC Microsoft para Microsoft SQL Server e as Ferramentas do Microsoft SQL executando os comandos a seguir.
    [opc@exa-dbnodex ~]$ sudo su -
    [root@exa-dbnodex ~]# rpm -ivh msodbcsql18-18.1.2.1-1.x86_64.rpm
    [root@exa-dbnodex ~]# rpm -ivh mssql-tools18-18.1.1.1-1.x86_64.rpm
  2. Depois que o Driver ODBC Microsoft para o Microsoft SQL Server for instalado nos nós do Cluster de VMs do Oracle Exadata Database Service on Dedicated Infrastructure, verifique se o Driver ODBC Microsoft está adequadamente carregado e configurado no Sistema Operacional Oracle Linux.
    [oracle@exa-dbnodex ~]$ cat /etc/odbcinst.ini
    [PostgreSQL]
    Description=ODBC for PostgreSQL
    Driver=/usr/lib/psqlodbcw.so
    Setup=/usr/lib/libodbcpsqlS.so
    Driver64=/usr/lib64/psqlodbcw.so
    Setup64=/usr/lib64/libodbcpsqlS.so
    FileUsage=1
    [MySQL]
    Description=ODBC for MySQL
    Driver=/usr/lib/libmyodbc5.so
    Setup=/usr/lib/libodbcmyS.so
    Driver64=/usr/lib64/libmyodbc5.so
    Setup64=/usr/lib64/libodbcmyS.so
    FileUsage=1
    [ODBC Driver 18 for SQL Server]
    Description=Microsoft ODBC Driver 18 for SQL Server
    Driver=/opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.1.so.2.1
    UsageCount=1
    [oracle@exa-dbnodex ~]$
  3. Em todos os nós do Cluster de VMs do Oracle Exadata Database Service on Dedicated Infrastructure, verifique se um link temporário de /usr/lib64 para o Driver ODBC da Microsoft para Microsoft SQL foi criado automaticamente durante a instalação do driver. Se o link não tiver sido criado, crie-o usando ln -s. O link é semelhante ao seguinte:
    [oracle@exa-dbnodex ~]$ ls -ltr /usr/lib64/libms*.so
    lrwxrwxrwx 1 root root 57 Nov 30 15:44 /usr/lib64/libmsodbcsql-18.so -> 
    /opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.1.so.2.1
    [oracle@exa-dbnodex ~]$
  4. Em todos os nós do Cluster de VMs do Oracle Exadata Database Service on Dedicated Infrastructure, crie um arquivo de configuração ODBC no diretório home do usuário oracle:
    [oracle@exa-dbnodex ~]$ cat /home/oracle/.odbc.ini
    [Database_Name_From_Step_1]
    # Reference driver from the "/etc/odbcinst.ini" file.
    # Driver = FreeTDS
    # Or use a direct driver reference, rather than reference
    # one in the "/etc/odbcinst.ini" file.
    Driver=/usr/lib64/libmsodbcsql-18.so
    Description = MSSQL Server
    Server = Fully_Qualified_Server_Name_From_Step_1
    Database = Database_Name_From_Step_1
    Port = 1433
    [oracle@exa-dbnodex ~]$
    
    As variáveis do exemplo têm os seguintes valores:
    • Database_Name_From_Step_1 é o nome do banco de dados do Azure SQL Server, na etapa 1.
    • Fully_Qualified_Server_Name_From_Step_1 é o nome de host totalmente qualificado para o SQL Server, na etapa 1.
  5. Em todos os nós do Cluster de VMs do Oracle Exadata Database Service on Dedicated Infrastructure, verifique a conectividade com o banco de dados do Azure SQL Server usando o utilitário isql do Oracle Linux.
    [oracle@exajc-gtdvz1 ~]$ isql -v 
    Database_Name_From_Step_1 Username 
    User_Password
    +---------------------------------------+
    | Connected! |
    | |
    | sql-statement |
    | help [tablename] |
    | quit |
    | |
    +---------------------------------------+
    SQL> select count(*) from some_table;
    Esse comando deve exibir o número de linhas na tabela selecionada.
    As variáveis do exemplo têm os seguintes valores:
    • Database_Name_From_Step_1 é o nome do banco de dados do Azure SQL Server, na etapa 1.
    • Nome do Usuário é o nome do usuário do Azure SQL Server, na etapa 1.
    • User_Password é a senha do usuário do Azure SQL Server, na etapa 1.
    • some_table é um nome de tabela no seu banco de dados.
  6. Em todos os nós do Cluster de VMs do Oracle Exadata Database Service on Dedicated Infrastructure, verifique a conectividade com o banco de dados do Azure SQL Server usando as Ferramentas SQL da Microsoft.
    [oracle@exajc-gtdvz1 ~]$ /opt/mssql-tools18/bin/sqlcmd -D -S 
    Database_Name_From_Step_1 -U Username
    Password: User_Password
    1> select count(*) from some_table
    2> go 
    Esse comando deve exibir o número de linhas na tabela selecionada.
    As variáveis do exemplo têm os seguintes valores:
    • Database_Name_From_Step_1 é o nome do banco de dados do Azure SQL Server, na etapa 1.
    • Nome do Usuário é o nome do usuário do Azure SQL Server, na etapa 1.
    • User_Password é a senha do usuário do Azure SQL Server, na etapa 1.
    • some_table é um nome de tabela no seu banco de dados.
A conectividade entre o Oracle Exadata Database Service on Dedicated Infrastructure e o Azure SQL Server agora pode ser estabelecida no Oracle Linux OS executado nos nós do Oracle Exadata Database Service on Dedicated Infrastructure usando o Driver ODBC Microsoft para Microsoft SQL Server usando a interconexão de latência rápida e baixa do OracleDB para Azure entre o Azure e o OCI.

Configurar Serviços Heterogêneos da Oracle

Após a conectividade do sistema operacional Oracle Linux Oracle Exadata Database Service on Dedicated Infrastructure com o banco de dados Azure SQL Server pode ser estabelecida usando o Driver ODBC Microsoft para Microsoft SQL Server, configure os Serviços Heterogêneos da Oracle para o banco de dados Oracle Exadata Database Service on Dedicated Infrastructure, seguindo estas etapas.
  1. Em todos os nós do Cluster de VMs do Oracle Exadata Database Service on Dedicated Infrastructure, para o usuário oracle, crie um arquivo de configuração para o Driver ODBC Microsoft se conectar ao Azure SQL Server, com os seguintes parâmetros:
    [oracle@exa-dbnodex ~]$ cat odbcDatabase_Name_From_Step_1.ini
    [Database_Name_From_Step_1]
    # Reference driver from the "/etc/odbcinst.ini" file.
    # Driver = FreeTDS
    # Or use a direct driver reference, rather than reference
    # one in the "/etc/odbcinst.ini" file.
    Driver=/usr/lib64/libmsodbcsql-18.so
    Description = MSSQL Server
    Server = Fully_Qualified_Server_Name_From_Step_1.DATABASE.WINDOWS.NET
    Database = Database_Name_From_Step_1
    Port = 1433
    [oracle@exa-dbnodex ~]$
    As variáveis do exemplo têm os seguintes valores:
    • Database_Name_From_Step_1 é o nome do banco de dados do Azure SQL Server, na etapa 1.
    • Fully_Qualified_Server_Name_From_Step_1 é o nome do host totalmente qualificado do SQL Server no qual o banco de dados do Azure SQL Server está em execução, na etapa 1.
  2. Em todos os nós do Cluster de VMs do Oracle Exadata Database Service on Dedicated Infrastructure, crie um arquivo de configuração para os serviços heterogêneos do banco de dados Oracle Exadata Database Service on Dedicated Infrastructure. Esse arquivo de configuração deve ser criado no Home do Oracle Database para o banco de dados Oracle Exadata Database Service on Dedicated Infrastructure com os parâmetros a seguir.
    [oracle@exa-dbnodex admin]$ pwd
    /u02/app/oracle/product/19.0.0.0/Database_Home/hs/admin
    [oracle@exajc-gtdvz1 admin]$ cat initDatabase_Name_From_Step_1.ora
    # This is a sample agent init file that contains the HS parameters that are
    # needed for the Database Gateway for ODBC
    #
    # ODBC specific environment variables
    #
    set ODBCINI=/home/oracle/odbcDatabase_Name_From_Step_1.ini
    #
    # HS init parameters
    #
    HS_FDS_CONNECT_INFO=Database_Name_From_Step_1
    HS_FDS_TRACE_LEVEL=OFF
    HS_FDS_SHAREABLE_NAME=/usr/lib64/libodbc.so
    HS_NLS_NCHAR=UCS2
    HS_LANGUAGE=ENGLISH_AMERICA.we8mswin1252
    HS_DB_NAME=Server_Name (only the hostname)
    HS_DB_DOMAIN=DATABASE.WINDOWS.NET
    Nesta lista de parâmetros, observe o seguinte:
    • /usr/lib64/libodbc.os é o driver ODBC incluído no Oracle Linux no Oracle Exadata Database Service on Dedicated Infrastructure. Este driver inclui funções básicas, como SQLColAttribute, que são chamadas pelo Driver ODBC para o Microsoft SQL Server.
    • O Oracle Heterogeneous Services chama o Driver Microsoft ODBC de acordo com o parâmetro ODBCINI, que aponta para o arquivo de configuração ODBC criado na etapa anterior.
    • O Server_Name fornecido no parâmetro HS_DB_NAME deve estar em letras maiúsculas.
    • Os valores de parâmetro HS_NLS_NCHAR e HS_LANGUAGE informados aqui dependem dos conjuntos de caracteres usados para criar o Azure SQL Server e os bancos de dados Oracle Exadata Database Service on Dedicated Infrastructure.
    As variáveis do exemplo têm os seguintes valores:
    • Database_Name_From_Step_1 é o nome do banco de dados do Azure SQL Server, na etapa 1.
    • Database_Home é o nome do Home do Banco de Dados.
    • Server_Name é o nome do host do nome do servidor totalmente qualificado, na etapa 1.
  3. Em todos os nós do Cluster de VMs do Oracle Exadata Database Service on Dedicated Infrastructure, adicione as linhas a seguir ao arquivo tnsnames.ora para que o banco de dados possa ser resolvido para os Serviços Heterogêneos da Oracle.
    [oracle@exa-dbnodex ~]$ cd $ORACLE_HOME/network/admin/exa_dbname
    [oracle@exa-dbnodex exa_dbname]$ tail -6 tnsnames.ora
    Database_Name_From_Step_1 =
     (DESCRIPTION=
     (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1522))
     (CONNECT_DATA=(SID=Database_Name_From_Step_1))
     (HS=OK)
     )
    As variáveis do exemplo têm os seguintes valores:
    • exa_dbname é o nome do banco de dados Oracle Exadata Database Service on Dedicated Infrastructure.
    • Database_Name_From_Step_1 é o nome do banco de dados do Azure SQL Server, na etapa 1.
  4. Em ambos os nós do Cluster de VMs do Oracle Exadata Database Service on Dedicated Infrastructure, crie um listener local na porta 1522 para os Serviços Heterogêneos da Oracle criando um arquivo listener.ora no Home do Banco de Dados do banco de dados do Oracle Exadata Database Service on Dedicated Infrastructure.
    [oracle@exa-dbnodex exa_dbname]$ pwd
    /u02/app/oracle/product/19.0.0.0/Database_Home/network/admin/exa_db
    name
    [oracle@exa-dbnodex]$ cat listener.ora
    # This is a sample listener.ora that contains the NET8 parameters that are
    # needed to connect to an HS Agent
    LISTENER_Database_Name_From_Step_1 =
    (DESCRIPTION_LIST=
     (DESCRIPTION=
     (ADDRESS=(PROTOCOL=tcp)(HOST=exa-dbnodex)(PORT=1522))
     )
    )
    SID_LIST_LISTENER_Database_Name_From_Step_1=
     (SID_LIST=
     (SID_DESC=
     (SID_NAME=Database_Name_From_Step_1)
     (ORACLE_HOME=/u02/app/oracle/product/19.0.0.0/Database_Home)
     (PROGRAM=dg4odbc)
     )
     )
    As variáveis do exemplo têm os seguintes valores:
    • exa_dbname é o nome do banco de dados Oracle Exadata Database Service on Dedicated Infrastructure.
    • Database_Name_From_Step_1 é o nome do banco de dados do Azure SQL Server, na etapa 1.
    • Database_Home é o nome do home do banco de dados.
  5. Em um nó do Cluster de VMs do Oracle Exadata Database Service on Dedicated Infrastructure, adicione o novo listener local ao Oracle Cluster Ready Services (CRS) como usuário root.
    Por exemplo:
    [root@exa-dbnodex bin]# ./srvctl add listener -l 
    LISTENER_Database_Name_From_Step_1 -oraclehome 
    /u02/app/oracle/product/19.0.0.0/Database_Home -user oracle
    [root@exa-dbnodex bin]# ./srvctl setenv listener -l 
    LISTENER_Database_Name_From_Step_1 -T 
    "TNS_ADMIN=/u02/app/oracle/product/19.0.0.0/Database_Home/network/a
    dmin/>exa_dbname "
    [root@exajc-gtdvz1 bin]# ./srvctl status listener -l 
    LISTENER_Database_Name_From_Step_1
    Listener LISTENER_Database_Name_From_Step_1 is enabled
    Listener LISTENER_Database_Name_From_Step_1 is not running
    As variáveis do exemplo têm os seguintes valores:
    • Database_Name_From_Step_1 é o nome do banco de dados do Azure SQL Server, na etapa 1.
    • Database_Home é o nome do home do banco de dados.
    • exa_dbname é o nome do banco de dados Oracle Exadata Database Service on Dedicated Infrastructure.
  6. Em um nó do Cluster de VMs do Oracle Exadata Database Service on Dedicated Infrastructure, inicie o listener como grid user.
    [grid@exa-dbnodex bin]$ srvctl start listener -l 
    LISTENER_Database_Name_From_Step_1
    [grid@exa-dbnodex bin]$ srvctl status listener -l 
    LISTENER_Database_Name_From_Step_1
    Listener LISTENER_Database_Name_From_Step_1 is enabled
    Listener LISTENER_Database_Name_From_Step_1 is running on node(s): exa-dbnode2,exa-dbnode1
    [grid@exa-dbnodex bin]$
    No exemplo, Database_Name_From_Step_1 é o nome do banco de dados do Azure SQL Server, na etapa 1.
  7. Em um nó do Cluster de VMs do Oracle Exadata Database Service on Dedicated Infrastructure, verifique como usuário oracle se o listener local está de fato atendendo aos Serviços Heterogêneos da Oracle.
    [opc@exa-dbnodex ~]$ sudo su - oracle
    Last login: Fri Dec 2 17:38:17 UTC 2022
    [oracle@exa-dbnodex ~]$ . ./exa_dbname.env
    [oracle@exa-dbnodex ~]$ lsnrctl status LISTENER_Database_Name_From_Step_1
    LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 02-DEC-2022 17:38:46
    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=exa-dbnodex)(PORT=1522)))
    STATUS of the LISTENER
    ------------------------
    Alias LISTENER_Database_Name_From_Step_1
    Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
    Start Date 02-DEC-2022 17:38:07
    Uptime 0 days 0 hr. 0 min. 38 sec
    Trace Level off
    Security ON: Local OS Authentication
    SNMP OFF
    Listener Parameter 
    File /u02/app/oracle/product/19.0.0.0/<Database_Home>/network/admin/exa_dbname/listener.ora
    Listener Log File /u02/app/oracle/diag/tnslsnr/exa-dbnodex/listener_Database_Name_From_Step_1/alert/log.xml
    Listening Endpoints Summary...
     (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=exa-dbnodex.customersubnet1.cvcn.oraclevcn.com)(PORT=1522)))
    Services Summary...
    Service "Database_Name_From_Step_1" has 1 instance(s).
     Instance "Database_Name_From_Step_1", status UNKNOWN, has 1 handler(s) 
    for this service...
    The command completed successfully
    [oracle@exa-dbnodex ~]$
    As variáveis do exemplo têm os seguintes valores:
    • exa_dbname é o nome do banco de dados Oracle Exadata Database Service on Dedicated Infrastructure.
    • Database_Name_From_Step_1 é o nome do banco de dados do Azure SQL Server, na etapa 1.
  8. De um dos nós do Cluster de VMs do Oracle Exadata Database Service on Dedicated Infrastructure, teste a conectividade com Serviços Heterogêneos da Oracle usando tnsping.
    Por exemplo:
    [oracle@exa-dbnodex ~]$ tnsping Database_Name_From_Step_1
    TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 02-DEC-2022 19:25:15
    Used parameter files:
    /u02/app/oracle/product/19.0.0.0/Database_Home/network/admin/exa_db
    name/sqlnet.ora
    Used TNSNAMES adapter to resolve the alias
    Attempting to contact (DESCRIPTION= 
    (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1522)) 
    (CONNECT_DATA=(SID=Database_Name_From_Step_1)) (HS=OK))
    OK (0 msec)
    [oracle@exajc-gtdvz1 ~]$
    As variáveis do exemplo têm os seguintes valores:
    • Database_Name_From_Step_1 é o nome do banco de dados do Azure SQL Server, na etapa 1.
    • Database_Home é o nome do home do banco de dados.
    • exa_dbname é o nome do banco de dados Oracle Exadata Database Service on Dedicated Infrastructure.