Note:

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.

image

Casos de Uso de CMAN

Objetivos

Requisitos

Tarea 1: Configuración inicial para la instalación de Oracle Connection Manager

En este tutorial, utilizaremos las siguientes direcciones IP.

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.

Tarea 2: Instalación de Oracle Connection Manager en la Máquina Virtual de Oracle Connection Manager

  1. 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
    
  2. Ejecute el comando mkdir -p $HOME/stage para crear el directorio.

  3. Descargue el cliente de Oracle 21.3.0 desde: Oracle Database 21c, copie en la VM de CMAN mediante winscp 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
    
  4. 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
    
  5. 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
    
  6. 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 
    
  7. Ejecute el siguiente comando para instalar CMAN.

    $HOME/stage/client/runInstaller -silent -responseFile $HOME/client21.rsp  ORACLE_HOME_NAME=cman2130
    
  8. 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
    
  9. Agregue las siguientes líneas al archivo .bash_profile ($HOME/.bash_profile) para permitir un acceso sencillo a las utilidades cmctl 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/
    
  10. 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
  1. 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
    
  2. 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

Agradecimientos

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.