Observação:

Instalar e Configurar o Oracle Connection Manager

Introdução

O Oracle Connection Manager (CMAN) é um utilitário da Oracle que atua como um servidor proxy para encaminhar solicitações de conexão de clientes para bancos de dados. Ele opera no nível da sessão e geralmente é instalado em um servidor separado.

image

Casos de Uso CMAN

Objetivos

Pré-requisitos

Tarefa 1: Configuração Inicial para Instalação do Oracle Connection Manager

Neste tutorial, usaremos os seguintes endereços IP.

Conexão de Firewall Aberta

A porta deve ser aberta da VM cliente para a VM CMAN em 1999 e da VM CMAN para o servidor de banco de dados em 1521.

Tarefa 2: Instalar o Oracle Connection Manager na Máquina Virtual do Oracle Connection Manager

  1. Preparar a VM CMAN para instalação. Execute o comando a seguir para criar o usuário Oracle, instalar pacotes, alterar parâmetros do kernel etc.

    $sudo su - root
    $yum install oracle-database-preinstall-21c.x86_64
    
  2. Execute o comando mkdir -p $HOME/stage para criar o diretório.

  3. Faça download do Oracle Client 21.3.0 em: Oracle Database 21c, copie na VM CMAN usando winscp ou qualquer outro utilitário de transferência de arquivos sob $HOME/stage.

    Se você não puder usar SSH, abra a página de download do cliente 21c do Oracle Database no browser e clique para fazer download do arquivo LINUX.X64_213000_client.zip para Linux. Abra o browser, clique com o botão direito do mouse no arquivo em Downloads e selecione o Copiar Link de Download da seguinte forma.

    O parâmetro de URL AuthParam variará toda vez que você clicar no link de download. Na sua máquina Linux, navegue até o diretório necessário (por exemplo, $HOME/stage) e digite o seguinte comando:

    $ wget "https://download.oracle.com/otn/linux/oracle21c/LINUX.X64_213000_client.zip?AuthParam=1631008911_576110421cdef54a2d47d9562bee0e5a" -O LINUX.X64_213000_client.zip
    
  4. Descompacte o software cliente como usuário Oracle. Será criado um diretório denominado client.

    [oracle@cman stage]$ ls -ltr /home/oracle/stage
    drwxr-xr-x. 5 oracle oinstall         90 Jul 27  2021 client
    -rwxr-xr-x. 1 oracle oinstall 1075931428 Sep  1 10:40 LINUX.X64_213000_client.zip
    
  5. Agora, instale o CMAN e o SQL*Plus.

    Execute o comando a seguir para criar os novos diretórios de usuário Oracle (oracle), base e home para executar o CMAN (instale as bibliotecas de pré-instalação da versão mais recente do Oracle Database para configurar o usuário Oracle no Linux).

    $ sudo su - root
    $ yum install oracle-database-preinstall-21c.x86_64
    $ mkdir /u01
    $ chown oracle:oinstall /u01
    $ su - oracle
    $ mkdir -p /u01/app/oracle/product/cman2130
    
  6. Prepare o arquivo de resposta para instalar o CMAN e o SQL*Plus.

    $ cat <<EOF > $HOME/client21.rsp
    oracle.install.responseFileVersion=/oracle/install/rspfmt_clientinstall_response_schema_v21.0.0
    ORACLE_HOSTNAME=$(hostname)
    UNIX_GROUP_NAME=oinstall
    INVENTORY_LOCATION=/u01/app/oraInventory
    SELECTED_LANGUAGES=en
    ORACLE_HOME=/u01/app/oracle/product/cman2130
    ORACLE_BASE=/u01/app/oracle
    oracle.install.client.installType=Custom
    oracle.install.client.customComponents="oracle.sqlplus:21.0.0.0.0","oracle.network.client:21.0.0.0.0","oracle.network.cman:21.0.0.0.0","oracle.network.listener:21.0.0.0.0"
    EOF 
    
  7. Execute o comando a seguir para instalar o CMAN.

    $HOME/stage/client/runInstaller -silent -responseFile $HOME/client21.rsp  ORACLE_HOME_NAME=cman2130
    
  8. Finalize a instalação como usuário root. Execute como usuário raiz para concluir a instalação.

    $ /u01/app/oraInventory/orainstRoot.sh
    $ /u01/app/oracle/product/cman2130/root.sh
    
  9. Anexe as linhas a seguir ao arquivo .bash_profile ($HOME/.bash_profile) para permitir acesso fácil aos utilitários cmctl e SQL*Plus, sempre que fizer log-in como usuário Oracle.

    export ORACLE_HOME=/u01/app/oracle/product/cman2130
    export LD_LIBRARY_PATH=/u01/app/oracle/product/cman2130/lib
    export PATH=/u01/app/oracle/product/cman2130/bin:$PATH:$HOME
    export TNS_ADMIN=/u01/app/oracle/product/cman2130/network/admin/
    
  10. Execute o comando a seguir para garantir que o SQL*Plus e o CMAN estejam em execução.

    [oracle@cman ~]$ sqlplus /nolog
    
    SQL*Plus: Release 21.0.0.0.0 - Production on Wed Sep 11 05:37:26 2024
    Version 21.3.0.0.0
    
    Copyright (c) 1982, 2021, Oracle.  All rights reserved.
    
    SQL> exit
    
    [oracle@cman ~]$ cmctl
    
    CMCTL for Linux: Version 21.0.0.0.0 - Production on 11-SEP-2024 05:37:30
    
    Copyright (c) 1996, 2021, Oracle.  All rights reserved.
    
    Welcome to CMCTL, type "help" for information.
    
    CMCTL>
    

Tarefa 3: Configurar o Oracle Connection Manager

Nesta tarefa, vamos configurar o CMAN. Primeiro, abra a porta que o listener CMAN deve usar na VM CMAN. Neste exemplo, estamos usando a porta 1999 para demonstrar que ela não deve necessariamente ser 1521 e para distingui-la da porta do listener do banco de dados. Como raiz:

$firewall-cmd --permanent --add-port=1999/tcp
$firewall-cmd –reload
  1. Configuração CMAN normal.

    Como usuário Oracle, crie o arquivo de configuração CMAN cman.ora em $TNS_ADMIN com o conteúdo a seguir.

    Observação: Altere o endereço IP do host para o IP da VM CMAN!

    $cat $TNS_ADMIN/cman.ora
    
    cman =
    (configuration=
        (address=(protocol=tcp)(host=192.168.0.199)(port=1999))
        (parameter_list =
            (aso_authentication_filter=off)
            (connection_statistics=yes)
            (log_directory=/u01/app/oracle/product/cman2130/network/log)
            (log_level=support)
            (max_connections=256)
            (idle_timeout=0)
            (inbound_connect_timeout=0)
            (session_timeout=0)
            (outbound_connect_timeout=0)
            (max_gateway_processes=16)
            (min_gateway_processes=2)
            (remote_admin=on)
            (trace_directory=/u01/app/oracle/product/cman2130/network/trace)
            (trace_level=support)
            (trace_timestamp=off)
            (trace_filelen=1000)
            (trace_fileno=1)
            (max_cmctl_sessions=4)
            (event_group=init_and_term,memory_ops)
            (registration_invited_nodes = *)
            (service_affinity=off)
        )
            (rule_list=
            (rule=
                (src=*)(dst=*)(srv=*)(act=accept)
                (action_list=(aut=off)(moct=0)(mct=0)(mit=0)(conn_stats=on))
            )
        )
        )
    )
    
    VALID_NODE_CHECKING_REGISTRATION_CMAN = OFF
    
  2. Configuração de CMAN baseada em regra.

    Se você voltar e verificar a regra no arquivo cman.ora, encontrará o conteúdo a seguir.

    (src=*)(dst=*)(srv=*)(act=accept)
    

    Portanto, estamos permitindo conexões de qualquer origem, de qualquer destino e de qualquer serviço. Usando a lista de regras, é possível definir suas próprias regras para permitir ou rejeitar conexões de clientes específicos, destinos específicos ou serviços específicos. Por exemplo:

    $cat cman.ora
    cman =
    (configuration=
        (address=(protocol=tcp)(host=192.168.0.199)(port=1999))
        (parameter_list =
            (aso_authentication_filter=off)
            (connection_statistics=yes)
            (log_directory=/u01/app/oracle/product/cman2130/network/log)
            (log_level=support)
            (max_connections=256)
            (idle_timeout=0)
            (inbound_connect_timeout=0)
            (session_timeout=0)
            (outbound_connect_timeout=0)
            (max_gateway_processes=16)
            (min_gateway_processes=2)
            (remote_admin=on)
            (trace_directory=/u01/app/oracle/product/cman2130/network/trace)
            (trace_level=support)
            (trace_timestamp=off)
            (trace_filelen=1000)
            (trace_fileno=1)
            (max_cmctl_sessions=4)
            (event_group=init_and_term,memory_ops)
            (registration_invited_nodes = 192.168.0.48)
            (service_affinity=off)
        )
        (rule_list=
            (rule=
                (src=cman)(dst=127.0.0.1)(srv=cmon)(act=accept)
                (action_list=(aut=off)(moct=0)(mct=0)(mit=0)(conn_stats=on))
            )
        (rule=
                (src=192.168.0.74)(dst=192.168.0.48)(srv=GGC1_SJ.sub02090543360.vcnsj.oraclevcn.com)(act=accept)
                (action_list=(aut=off)(moct=0)(mct=0)(mit=0)(conn_stats=on))
        )
    (rule=
                (src=192.168.0.75)(dst=192.168.0.48)(srv=GGC1_SJ.sub02090543360.vcnsj.oraclevcn.com)(act=Reject)
                (action_list=(aut=off)(moct=0)(mct=0)(mit=0)(conn_stats=on))
        )
    
        )
    )
    
    VALID_NODE_CHECKING_REGISTRATION_CMAN = OFF
    

    O CMAN é uma ferramenta poderosa. Esta é apenas uma amostra e configuração simples. Verifique a documentação da Oracle para obter mais detalhes de configuração, especialmente em relação à segurança.

Tarefa 4: Iniciar Serviços do Oracle Connection Manager

Conecte-se ao banco de dados contêiner de origem e destino usando a wallet e crie uma configuração usando a Interface de Linha de Comando (DGMGRL) do Oracle Data Guard. Isso é o mesmo que para uma configuração normal do Oracle Data Guard. A única diferença é que temos que fazer isso para ambos os Bancos de Dados Contêineres, pois ambos são bancos de dados principais.

cmctl

CMCTL for Linux: Version 21.0.0.0.0 - Production on 04-SEP-2024 08:59:37

Copyright (c) 1996, 2021, Oracle.  All rights reserved.

Welcome to CMCTL, type "help" for information.

CMCTL> admin cman
Current instance cman is not yet started
Connections refer to (DESCRIPTION=(address=(protocol=tcp)(host=192.168.0.199)(port=1999))).
The command completed successfully.

CMCTL:cman> startup
Starting Oracle Connection Manager instance cman. Please wait...
CMAN for Linux: Version 21.0.0.0.0 - Production
Status of the Instance
----------------------
Instance name             cman
Version                   CMAN for Linux: Version 21.0.0.0.0 - Production
Start date                04-SEP-2024 08:59:43
Uptime                    0 days 0 hr. 0 min. 9 sec
Num of gateways started   2
Average Load level        0
Log Level                 SUPPORT
Trace Level               SUPPORT
Instance Config file      /u01/app/oracle/product/cman2130/network/admin/cman.ora
Instance Log directory    /u01/app/oracle/diag/netcman/cman/cman/alert
Instance Trace directory  /u01/app/oracle/diag/netcman/cman/cman/trace
The command completed successfully.

Execute o comando a seguir para verificar o status e os serviços.

CMCTL:cman> show status
CMCTL:cman> show services

Tarefa 5: Conexão com o Banco de Dados por meio do Oracle Connection Manager

Abordagem 1: Usando o Parâmetro do Banco de Dados de Destino

Para que o CMAN encaminhe conexões de entrada para bancos de dados, o CMAN deve conhecer esses bancos de dados. Para conseguir isso, precisamos definir REMOTE_LISTENER no banco de dados de destino. Defina também VALID_NODE_CHECKING_REGISTRATION_CMAN = OFF no arquivo cman.ora para registro bem-sucedido.

Banco de dados de destino:

alter system set REMOTE_LISTENER='10.0.0.8:1999' scope=both sid='*';
alter system register;

Adicione a seguinte linha no arquivo cman.ora.

VALID_NODE_CHECKING_REGISTRATION_CMAN = OFF

Execute o comando a seguir para reiniciar o CMAN e verificar se o banco de dados está registrado no listener do CMAN.

CMCTL:cman> show services

Validar Conexão:

Conecte-se ao banco de dados da VM cliente usando o IP e a porta CMAN. Crie um novo alias TNS no arquivo tnsnames.ora na VM cliente.

GGC1_CM=
  (DESCRIPTION=
    (ADDRESS=
      (PROTOCOL=tcp)
      (HOST=192.168.0.199)(PORT=1999)) -- CMAN IP and Port
    (CONNECT_DATA=
      (SERVICE_NAME=GGC1_SJ.sub0209xxxx0543360.vcnsj.oraclevcn.com)))  

O nome do serviço acima deve estar visível em CMAN> show services, saída.

$sqlplus system/MyPasswd__48@GGC1_CM

Verifique o arquivo de rastreamento CMAN.

/home/oracle/base/diag/netcman/cman/cman/trace/cman.log
/u01/app/oracle/diag/netcman/cman/cman_test/trace/ log.xml

Abordagem 2: Usando Hop

Caso a alteração do parâmetro de banco de dados REMOTE_LISTENER não seja possível no banco de dados de destino, precisamos usar hop no arquivo cman.ora ou no arquivo TNS do cliente.

Opção 1: Adicionar Hop no Arquivo cman.ora

$cat cman.ora
cman =
(configuration=
    (address=(protocol=tcp)(host=192.168.0.199)(port=1999))
    (parameter_list =
        (aso_authentication_filter=off)
……
        (service_affinity=off)
    )
    (next_hop=(description=(address=(protocol=tcp)(port=1521)(host=192.168.0.48))))
    (rule_list=
        (rule=
            (src=cman)(dst=127.0.0.1)(srv=cmon)(act=accept)
            (action_list=(aut=off)(moct=0)(mct=0)(mit=0)(conn_stats=on))
        )
    )
)

Opção 2: Adicionar Hop no Arquivo TNS do Cliente

GGC1_SJ_CM =
(DESCRIPTION =
    (SOURCE_ROUTE = YES)
    (ADDRESS =
        (PROTOCOL = TCP)(HOST = 192.168.0.199)(PORT = 1999)
    )
    (ADDRESS =
        (PROTOCOL = TCP)(HOST = 192.168.0.48)(PORT = 1521)
    )
        (CONNECT_DATA = (SERVICE_NAME=GGC1_SJ.sub02090543360.vcnsj.oraclevcn.com)
    )
)

Execute o comando a seguir para validar a conexão.

$sqlplus system/MyPasswd__48@GGC1_CM

Confirmações

Mais Recursos de Aprendizagem

Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. 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.