Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se inscrever em 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.
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.
Casos de Uso CMAN
-
Cenário 1: Controle de Acesso
Use a configuração baseada em regras para rejeitar ou aceitar solicitações específicas do cliente, por exemplo, com base no endereço IP do cliente.
No diagrama a seguir, se o cliente estiver estabelecendo conexão do IP da máquina
192.168.0.74
, a conexão será ACEITADA para estabelecer conexão com o banco de dados; no entanto, se algum cliente tentar estabelecer conexão da máquina192.168.0.75
, a conexão será REJEITADA. Da mesma forma, podemos especificar um intervalo de endereços IP para permitir e rejeitar. -
Cenário 2: Roteamento de Trânsito
Os clientes não têm acesso direto a um ou mais bancos de dados, o CMAN redireciona as conexões dos clientes para os bancos de dados correspondentes.
-
Cenário 3: Portas Diferentes
Os bancos de dados de destino usam portas diferentes, por exemplo,
1521
e1522
, mas essas portas não estão abertas no lado do cliente. Configure o CMAN para usar outra porta, por exemplo,1999
. -
Cenário 4: Protocolos IP Diferentes
Clientes e bancos de dados usam protocolos IP diferentes, por exemplo, o cliente usa IPv6, mas o banco de dados usa IPv4. O CMAN serve como uma ponte de rede entre IPv6 e IPv4. Neste tutorial, o CMAN deve ser executado em um host de pilha dupla configurado com pelo menos uma interface IPv6 e pelo menos uma interface IPv4.
Objetivos
- Configure um CMAN (Oracle Connection Manager) para restringir ou permitir conexões com o banco de dados.
Pré-requisitos
-
Provisione o ambiente do OCI como (compartimento, rede virtual na nuvem (VCN), sub-rede etc.).
-
Provisionar o banco de dados Oracle Base Database Service. Por exemplo, Alvo.
-
Provisione o Oracle Cloud Infrastructure (OCI) Compute VM (host CMAN).
-
Computação de host de máquina virtual (VM) cliente. Por exemplo, Origem.
Tarefa 1: Configuração Inicial para Instalação do Oracle Connection Manager
Neste tutorial, usaremos os seguintes endereços IP.
- VM do OCI Compute chamada
client
, IP =192.168.0.74
e IP =192.168.0.75
. - VM do OCI Compute chamada
cman
, IP =192.168.0.199
. - VM do Oracle Base Database Service chamada
dbcs01
, IP =192.168.0.48
.
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.
-
1a Conexão, de CMAN para Servidor de Banco de Dados:
[oracle@cman ~]$ curl -sv telnet://192.168.0.48:1521 * Rebuilt URL to: telnet://192.168.0.48:1521/ * Trying 192.168.0.48... * TCP_NODELAY set * Connected to 192.168.0.48 (192.168.0.48) port 1521 (#0)
-
2a Conexão, da VM do Cliente à VM CMAN:
Usaremos a porta 1999 para CMAN. A porta 1999 não está aberta por padrão. Portanto, precisamos abrir essa porta.
Execute o comando a seguir como root no host CMAN para abrir a porta 1999.
$firewall-cmd --permanent --add-port=1999/tcp $firewall-cmd –reload [oracle@client1 ~]$ curl -sv telnet://192.168.0.199:1999 * Rebuilt URL to: telnet://192.168.0.199:1999/ * Trying 192.168.0.199... * TCP_NODELAY set * Connected to 192.168.0.199 (192.168.0.199) port 1999 (#0)
Tarefa 2: Instalar o Oracle Connection Manager na Máquina Virtual do Oracle Connection Manager
-
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
-
Execute o comando
mkdir -p $HOME/stage
para criar o diretório. -
Faça download do Oracle Client
21.3.0
em: Oracle Database 21c, copie na VM CMAN usandowinscp
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
-
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
-
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
-
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
-
Execute o comando a seguir para instalar o CMAN.
$HOME/stage/client/runInstaller -silent -responseFile $HOME/client21.rsp ORACLE_HOME_NAME=cman2130
-
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
-
Anexe as linhas a seguir ao arquivo
.bash_profile
($HOME/.bash_profile
) para permitir acesso fácil aos utilitárioscmctl
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/
-
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
-
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
-
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
Links Relacionados
Confirmações
- Autor - Dharmesh Patel (Arquiteto de Nuvem Principal, Oracle North America Cloud Services - NACIE)
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.
Install and Configure Oracle Connection Manager
G16514-01
September 2024