Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse para obtener una cuenta gratuita, consulte Introducción a la cuenta gratuita de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar la práctica, sustituya estos valores por otros específicos de su entorno en la nube.
Instalación y Configuración de Oracle Connection Manager
Introducción
Oracle Connection Manager (CMAN) es una utilidad de Oracle que actúa como servidor proxy para reenviar solicitudes de conexión de clientes a bases de datos. Funciona en el nivel de sesión y normalmente se instala en un servidor independiente.
Casos de Uso de CMAN
-
Escenario 1: Control de acceso
Utilice la configuración basada en reglas para rechazar o aceptar solicitudes de cliente específicas, por ejemplo, en función de la dirección IP del cliente.
En el siguiente diagrama, si el cliente se conecta desde la conexión IP de máquina, la conexión
192.168.0.74
será ACCEPTED para conectarse a la base de datos; sin embargo, si algún cliente intenta conectarse desde la conexión de máquina192.168.0.75
, será REJECTED. Del mismo modo, podemos especificar un rango de direcciones IP para permitir y rechazar. -
Escenario 2: enrutamiento en tránsito
Los clientes no tienen acceso directo a una o más bases de datos, CMAN redirige las conexiones de los clientes a las bases de datos correspondientes.
-
Escenario 3: diferentes puertos
Las bases de datos de destino utilizan diferentes puertos, por ejemplo,
1521
y1522
, pero estos puertos no están abiertos en el cliente. Configure CMAN para utilizar un puerto diferente, por ejemplo,1999
. -
Escenario 4: Diferentes protocolos IP
Los clientes y las bases de datos utilizan diferentes protocolos IP, por ejemplo, el cliente utiliza IPv6, pero la base de datos utiliza IPv4. CMAN sirve como puente de red entre IPv6 y IPv4. En este tutorial, CMAN debe ejecutarse en un host de pila doble configurado con al menos una interfaz IPv6 y al menos una interfaz IPv4.
Objetivos
- Configure Oracle Connection Manager (CMAN) para restringir o permitir conexiones a la base de datos.
Requisitos
-
Aprovisione entornos de OCI como (compartimento, red virtual en la nube (VCN), subred, etc.).
-
Aprovisione la base de datos de Oracle Base Database Service. Por ejemplo, Destino.
-
Aprovisione la máquina virtual de Oracle Cloud Infrastructure (OCI) Compute (host de CMAN).
-
Recursos informáticos de host de máquina virtual (VM) de cliente. Por ejemplo, origen.
Tarea 1: Configuración inicial para la instalación de Oracle Connection Manager
En este tutorial, utilizaremos las siguientes direcciones IP.
- VM de OCI Compute denominada
client
, IP =192.168.0.74
e IP =192.168.0.75
. - VM de OCI Compute denominada
cman
, IP =192.168.0.199
. - VM de Oracle Base Database Service denominada
dbcs01
, IP =192.168.0.48
.
Conexión de firewall abierta
El puerto debe estar abierto de VM de cliente a VM de CMAN en 1999 y de VM de CMAN a servidor de base de datos en 1521.
-
1a conexión, de CMAN al servidor de base de datos:
[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 conexión, de VM de cliente a VM de CMAN:
Utilizaremos el puerto 1999 para CMAN. El puerto 1999 no está abierto por defecto, por lo que debemos abrir este puerto.
Ejecute el siguiente comando como root en el host CMAN para abrir el puerto de 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)
Tarea 2: Instalación de Oracle Connection Manager en la Máquina Virtual de Oracle Connection Manager
-
Prepare la máquina virtual de CMAN para la instalación. Ejecute el siguiente comando para crear el usuario de Oracle, instalar paquetes, cambiar parámetros del núcleo, etc.
$sudo su - root $yum install oracle-database-preinstall-21c.x86_64
-
Ejecute el comando
mkdir -p $HOME/stage
para crear el directorio. -
Descargue el cliente de Oracle
21.3.0
desde: Oracle Database 21c, copie en la VM de CMAN mediantewinscp
o cualquier otra utilidad de transferencia de archivos en$HOME/stage
.Si no puede utilizar SSH, abra la página de descarga del cliente 21c de Oracle Database en el explorador y haga clic para descargar el archivo
LINUX.X64_213000_client.zip
para Linux. Abra el explorador, haga clic con el botón derecho en el archivo en Descargas y seleccione Copiar enlace de descarga de la siguiente manera.El parámetro de URL AuthParam variará cada vez que haga clic en el enlace de descarga. En la máquina Linux, navegue hasta el directorio necesario (por ejemplo,
$HOME/stage
) e introduzca el siguiente comando:$ wget "https://download.oracle.com/otn/linux/oracle21c/LINUX.X64_213000_client.zip?AuthParam=1631008911_576110421cdef54a2d47d9562bee0e5a" -O LINUX.X64_213000_client.zip
-
Descomprima el software de cliente como usuario de Oracle. Se creará un directorio denominado cliente.
[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
-
Ahora, instale CMAN y SQL*Plus.
Ejecute el siguiente comando para crear los nuevos directorios de usuario de Oracle (
oracle
), base y directorio raíz para ejecutar CMAN (instale las bibliotecas de preinstalación de la última versión de Oracle Database para configurar el usuario de Oracle en 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 el archivo de respuesta para instalar CMAN y 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
-
Ejecute el siguiente comando para instalar CMAN.
$HOME/stage/client/runInstaller -silent -responseFile $HOME/client21.rsp ORACLE_HOME_NAME=cman2130
-
Finalice la instalación como usuario root. Ejecutar como usuario root para completar la instalación.
$ /u01/app/oraInventory/orainstRoot.sh $ /u01/app/oracle/product/cman2130/root.sh
-
Agregue las siguientes líneas al archivo
.bash_profile
($HOME/.bash_profile
) para permitir un acceso sencillo a las utilidadescmctl
y SQL*Plus, siempre que se conecte como usuario de 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/
-
Ejecute el siguiente comando para asegurarse de que se están ejecutando SQL*Plus y CMAN.
[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>
Tarea 3: Configuración de Oracle Connection Manager
En esta tarea, configuraremos CMAN. En primer lugar, abra el puerto que el listener de CMAN debe utilizar en la VM de CMAN. En este ejemplo, estamos utilizando el puerto 1999 para demostrar que no debe ser necesariamente 1521 y para distinguirlo del puerto del listener de la base de datos. Como usuario root:
$firewall-cmd --permanent --add-port=1999/tcp
$firewall-cmd –reload
-
Configuración normal de CMAN.
Como usuario de Oracle, cree el archivo de configuración de CMAN
cman.ora
en$TNS_ADMIN
con el siguiente contenido.Nota: Cambie la dirección IP del host a la IP de VM de 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
-
Configuración de CMAN basada en reglas.
Si vuelve atrás y comprueba la regla en el archivo
cman.ora
, encontrará el siguiente contenido.(src=*)(dst=*)(srv=*)(act=accept)
Por lo tanto, estamos permitiendo conexiones desde cualquier origen, a cualquier destino y a cualquier servicio. Mediante la lista de reglas, es posible definir sus propias reglas para permitir o rechazar conexiones de clientes específicos, destinos específicos o servicios específicos. Por ejemplo:
$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
CMAN es una herramienta poderosa. Esta es solo una configuración de ejemplo y simple. Consulte la documentación de Oracle para obtener más detalles sobre la configuración, en especial sobre la seguridad.
Tarea 4: Inicio de los Servicios de Oracle Connection Manager
Conéctese a la base de datos de contenedores de origen y destino mediante la cartera y cree una configuración mediante la interfaz de línea de comandos de Oracle Data Guard (DGMGRL). Es lo mismo que para una configuración normal de Oracle Data Guard. Solo la diferencia es que tenemos que hacerlo para ambas bases de datos de contenedor, ya que ambas son bases de datos primarias.
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.
Ejecute el siguiente comando para comprobar el estado y los servicios.
CMCTL:cman> show status
CMCTL:cman> show services
Tarea 5: Conexión a la Base de Datos a través de Oracle Connection Manager
Enfoque 1: Uso del Parámetro de la Base de Datos de Destino
Para que CMAN reenvíe las conexiones entrantes a las bases de datos, CMAN debe conocer estas bases de datos. Para lograrlo, debemos definir REMOTE_LISTENER
en la base de datos de destino. Defina también VALID_NODE_CHECKING_REGISTRATION_CMAN = OFF
en el archivo cman.ora
para que el registro se realice correctamente.
Base de datos destino:
alter system set REMOTE_LISTENER='10.0.0.8:1999' scope=both sid='*';
alter system register;
Agregue la siguiente línea en el archivo cman.ora
.
VALID_NODE_CHECKING_REGISTRATION_CMAN = OFF
Ejecute el siguiente comando para reiniciar CMAN y comprobar si la base de datos está registrada con el listener de CMAN.
CMCTL:cman> show services
Validar Conexión:
Conéctese a la base de datos desde la máquina virtual del cliente mediante la IP y el puerto de CMAN. Cree un nuevo alias TNS en el archivo tnsnames.ora
en la VM del 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)))
El nombre del servicio anterior debe estar visible en CMAN> show services
, salida.
$sqlplus system/MyPasswd__48@GGC1_CM
Compruebe el archivo de rastreo de CMAN.
/home/oracle/base/diag/netcman/cman/cman/trace/cman.log
/u01/app/oracle/diag/netcman/cman/cman_test/trace/ log.xml
Enfoque 2: Uso de Hop
En caso de que no sea posible cambiar el parámetro de base de datos REMOTE_LISTENER
en la base de datos destino, debemos utilizar el salto en el archivo cman.ora
o en el archivo TNS del cliente.
Opción 1: Agregar salto en el archivo 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))
)
)
)
Opción 2: Agregar salto al archivo TNS del 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)
)
)
Ejecute el siguiente comando para validar la conexión.
$sqlplus system/MyPasswd__48@GGC1_CM
Enlaces relacionados
Agradecimientos
- Autor: Dharmesh Patel (arquitecto principal de servicios en la nube de Oracle North America - NACIE)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de formación gratuita en el canal YouTube de Oracle Learning. Además, visita education.oracle.com/learning-explorer para convertirte en un Oracle Learning Explorer.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Install and Configure Oracle Connection Manager
G16508-01
September 2024