Note :

Installer et configurer Oracle Connection Manager

Présentation

Oracle Connection Manager (CMAN) est un utilitaire Oracle qui agit en tant que serveur mandataire pour transmettre les demandes de connexion des clients aux bases de données. Il fonctionne au niveau de la session et est généralement installé sur un serveur distinct.

Image

Cas d'utilisation de CMAN

Objectifs

Préalables

Tâche 1 : Configuration initiale de l'installation d'Oracle Connection Manager

Dans ce tutoriel, nous utiliserons les adresses IP suivantes.

Ouvrir la connexion au pare-feu

Le port doit être ouvert de la machine virtuelle client à la machine virtuelle CMAN en 1999 et de la machine virtuelle CMAN au serveur de base de données en 1521.

Tâche 2 : Installer Oracle Connection Manager sur la machine virtuelle d'Oracle Connection Manager

  1. Préparez la machine virtuelle CMAN pour l'installation. Exécutez la commande suivante pour créer l'utilisateur Oracle, installer des ensembles, modifier les paramètres du noyau, etc.

    $sudo su - root
    $yum install oracle-database-preinstall-21c.x86_64
    
  2. Exécutez la commande mkdir -p $HOME/stage pour créer le répertoire.

  3. Téléchargez le client Oracle 21.3.0 à partir de : Oracle Database 21c, copiez sur la machine virtuelle CMAN à l'aide de winscp ou de tout autre utilitaire de transfert de fichiers sous $HOME/stage.

    Si vous ne pouvez pas utiliser SSH, ouvrez la page de téléchargement du client Oracle Database 21c dans le navigateur et cliquez pour télécharger le fichier LINUX.X64_213000_client.zip pour Linux. Ouvrez le navigateur, cliquez avec le bouton droit de la souris sur le fichier dans Téléchargements et sélectionnez Copier le lien de téléchargement comme suit.

    Le paramètre d'URL AuthParam varie chaque fois que vous cliquez sur le lien de téléchargement. Sur votre ordinateur Linux, accédez au répertoire requis (par exemple, $HOME/stage) et entrez la commande suivante :

    $ wget "https://download.oracle.com/otn/linux/oracle21c/LINUX.X64_213000_client.zip?AuthParam=1631008911_576110421cdef54a2d47d9562bee0e5a" -O LINUX.X64_213000_client.zip
    
  4. Décompressez le logiciel client en tant qu'utilisateur Oracle. Un répertoire nommé client sera créé.

    [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. Installez maintenant CMAN et SQL*Plus.

    Exécutez la commande suivante pour créer les nouveaux répertoires d'utilisateur Oracle (oracle), de base et de répertoire de base pour exécuter CMAN (installez les bibliothèques de préinstallation de la dernière version d'Oracle Database pour configurer l'utilisateur Oracle sous 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. Préparez le fichier de réponses pour l'installation de CMAN et de 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. Exécutez la commande suivante pour installer CMAN.

    $HOME/stage/client/runInstaller -silent -responseFile $HOME/client21.rsp  ORACLE_HOME_NAME=cman2130
    
  8. Finaliser l'installation en tant qu'utilisateur racine. Exécuter en tant qu'utilisateur racine pour terminer l'installation.

    $ /u01/app/oraInventory/orainstRoot.sh
    $ /u01/app/oracle/product/cman2130/root.sh
    
  9. Ajoutez les lignes suivantes à votre fichier .bash_profile ($HOME/.bash_profile) pour faciliter l'accès aux utilitaires cmctl et SQL*Plus, chaque fois que vous ouvrez une session en tant qu'utilisateur 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. Exécutez la commande suivante pour vous assurer que SQL*Plus et CMAN sont en cours d'exécution.

    [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>
    

Tâche 3 : Configurer Oracle Connection Manager

Dans cette tâche, nous allons configurer CMAN. Tout d'abord, ouvrez le port que le module d'écoute CMAN doit utiliser sur la machine virtuelle CMAN. Dans cet exemple, nous utilisons le port 1999 pour démo qu'il ne doit pas nécessairement être 1521 et pour le distinguer du port du module d'écoute de la base de données. En tant qu'utilisateur racine :

$firewall-cmd --permanent --add-port=1999/tcp
$firewall-cmd –reload
  1. Configuration CMAN normale.

    En tant qu'utilisateur Oracle, créez le fichier de configuration CMAN cman.ora sous $TNS_ADMIN avec le contenu suivant.

    Note : Remplacez l'adresse IP de l'hôte par votre adresse IP de machine virtuelle 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. Configuration CMAN basée sur une règle.

    Si vous revenez en arrière et vérifiez la règle dans le fichier cman.ora, vous trouverez le contenu suivant.

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

    Ainsi, nous autorisons les connexions de n'importe quelle source, à n'importe quelle cible et à n'importe quel service. À l'aide de la liste de règles, il est possible de définir vos propres règles pour autoriser ou rejeter les connexions de clients spécifiques, vers des cibles spécifiques ou vers des services spécifiques. Par exemple :

    $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 est un outil puissant. Ceci n'est qu'un exemple et une configuration simple. Pour plus de détails sur la configuration, reportez-vous à la documentation Oracle, en particulier en ce qui concerne la sécurité.

Tâche 4 : Démarrer les services Oracle Connection Manager

Connectez-vous à la base de données conteneur source et cible à l'aide du portefeuille et créez une configuration à l'aide de l'interface de ligne de commande d'Oracle Data Guard (DGMGRL). Il en va de même pour une configuration Oracle Data Guard normale. La seule différence est que nous devons le faire pour les deux bases de données conteneur, car les deux sont des bases de données principales.

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.

Exécutez la commande suivante pour vérifier le statut et les services.

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

Tâche 5 : Connexion à la base de données via Oracle Connection Manager

Approche 1 : Utiliser le paramètre de base de données cible

Pour que CMAN transmette les connexions entrantes aux bases de données, CMAN doit connaître ces bases de données. Pour ce faire, nous devons définir REMOTE_LISTENER sur la base de données cible. Définissez également VALID_NODE_CHECKING_REGISTRATION_CMAN = OFF dans le fichier cman.ora pour une inscription réussie.

Base de données cible :

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

Ajoutez la ligne suivante dans le fichier cman.ora.

VALID_NODE_CHECKING_REGISTRATION_CMAN = OFF

Exécutez la commande suivante pour redémarrer CMAN et vérifier si la base de données est enregistrée auprès du module d'écoute CMAN.

CMCTL:cman> show services

Valider la connexion :

Connectez-vous à la base de données à partir de la machine virtuelle client à l'aide de l'adresse IP et du port CMAN. Créez un nouvel alias TNS dans le fichier tnsnames.ora sur la machine virtuelle client.

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)))  

Le nom de service ci-dessus doit être visible dans la sortie CMAN> show services.

$sqlplus system/MyPasswd__48@GGC1_CM

Vérifiez le fichier trace CMAN.

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

Approche 2 : Utiliser le saut

Si la modification du paramètre de base de données REMOTE_LISTENER n'est pas possible dans la base de données cible, nous devons utiliser hop dans le fichier cman.ora ou dans le fichier TNS du client.

Option 1 : Ajouter un saut dans le fichier 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))
        )
    )
)

Option 2 : Ajouter un saut dans le fichier TNS du client

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)
    )
)

Exécutez la commande suivante pour valider la connexion.

$sqlplus system/MyPasswd__48@GGC1_CM

Confirmation

Autres ressources d'apprentissage

Explorez d'autres laboratoires sur la page docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur le canal YouTube d'Oracle Learning. De plus, visitez education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.