Remarques :
- Ce tutoriel nécessite un accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction au niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeurs pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. Lorsque vous terminez votre atelier, remplacez ces valeurs par celles propres à votre environnement cloud.
Installer et configurer le gestionnaire de connexions Oracle
Introduction
Oracle Connection Manager (CMAN) est un utilitaire Oracle qui agit en tant que serveur proxy pour transférer les demandes de connexion des clients vers les bases de données. Il fonctionne au niveau de la session et est généralement installé sur un serveur distinct.
Cas d'emploi CMAN
-
Scénario 1 : Contrôle d'accès
Utilisez la configuration basée sur des règles pour rejeter ou accepter des demandes client spécifiques, par exemple, en fonction de l'adresse IP du client.
Dans le diagramme suivant, si le client se connecte à partir de la connexion IP
192.168.0.74
de l'ordinateur, il aura la valeur ACCEPTE pour se connecter à la base de données, mais si un client tente de se connecter à partir de la connexion192.168.0.75
de l'ordinateur, il aura la valeur REJECTED. De même, nous pouvons spécifier une plage d'adresses IP à autoriser et à rejeter. -
Scénario 2 : routage de transit
Les clients n'ont pas d'accès direct à une ou plusieurs bases de données. Le CMAN redirige les connexions des clients vers les bases de données correspondantes.
-
Scénario 3 : Ports différents
Les bases de données cible utilisent des ports différents, par exemple
1521
et1522
, mais ces ports ne sont pas ouverts côté client. Configurez CMAN pour qu'il utilise un autre port, par exemple1999
. -
Scénario 4 : différents protocoles IP
Les clients et les bases de données utilisent des protocoles IP différents, par exemple, le client utilise IPv6, mais la base de données utilise IPv4. CMAN sert de pont réseau entre IPv6 et IPv4. Dans ce tutoriel, CMAN doit être exécuté sur un hôte double pile configuré avec au moins une interface IPv6 et au moins une interface IPv4.
Objectifs
- Configurez Oracle Connection Manager (CMAN) pour restreindre ou autoriser les connexions à la base de données.
Prérequis
-
Provisionnez un environnement OCI comme (compartiment, réseau cloud virtuel (VCN), sous-réseau, etc.).
-
Provisionnez la base de données Oracle Base Database Service. Par exemple, Cible.
-
Provisionnez la machine virtuelle de calcul Oracle Cloud Infrastructure (OCI) (hôte CMAN).
-
Calcul de l'hôte de machine virtuelle client. Par exemple, Source.
Tâche 1 : configuration initiale de l'installation d'Oracle Connection Manager
Dans ce tutoriel, nous allons utiliser les adresses IP suivantes.
- La machine virtuelle de calcul OCI nommée
client
, IP =192.168.0.74
et IP =192.168.0.75
. - Machine virtuelle de calcul OCI nommée
cman
, IP =192.168.0.199
. - Machine virtuelle Oracle Base Database Service nommée
dbcs01
, IP =192.168.0.48
.
Ouvrir une connexion de 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.
-
1ère connexion, de CMAN au serveur de base de données :
[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)
-
2e connexion, de la machine virtuelle client à la machine virtuelle CMAN :
Nous utiliserons le port 1999 pour CMAN. Le port 1999 n'est pas ouvert par défaut, nous devons donc l'ouvrir.
Exécutez la commande suivante en tant qu'utilisateur root sur l'hôte CMAN afin d'ouvrir le port 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)
Tâche 2 : installer Oracle Connection Manager sur la machine virtuelle Oracle Connection Manager
-
Préparez la machine virtuelle CMAN pour l'installation. Exécutez la commande suivante pour créer l'utilisateur Oracle, installer des packages, modifier les paramètres du noyau, etc.
$sudo su - root $yum install oracle-database-preinstall-21c.x86_64
-
Exécutez la commande
mkdir -p $HOME/stage
pour créer le répertoire. -
Téléchargez Oracle Client
21.3.0
à partir de : Oracle Database 21c, copiez sur la machine virtuelle CMAN à l'aide dewinscp
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 21c Oracle Database 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
-
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
-
Installez maintenant CMAN et SQL*Plus.
Exécutez la commande suivante pour créer les répertoires utilisateur Oracle (
oracle
), de base et d'accueil 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
-
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
-
Exécutez la commande suivante pour installer CMAN.
$HOME/stage/client/runInstaller -silent -responseFile $HOME/client21.rsp ORACLE_HOME_NAME=cman2130
-
Finalisez l'installation en tant qu'utilisateur root. Exécutez-le en tant qu'utilisateur root pour terminer l'installation.
$ /u01/app/oraInventory/orainstRoot.sh $ /u01/app/oracle/product/cman2130/root.sh
-
Ajoutez les lignes suivantes à votre fichier
.bash_profile
($HOME/.bash_profile
) pour faciliter l'accès aux utilitairescmctl
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/
-
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 processus d'écoute CMAN doit utiliser sur la machine virtuelle CMAN. Dans cet exemple, nous utilisons le port 1999 pour démontrer qu'il ne doit pas nécessairement s'agir de 1521 et pour le distinguer du port de processus d'écoute de base de données. En tant qu'utilisateur root :
$firewall-cmd --permanent --add-port=1999/tcp
$firewall-cmd –reload
-
Configuration CMAN normale.
En tant qu'utilisateur Oracle, créez le fichier de configuration CMAN
cman.ora
sous$TNS_ADMIN
avec le contenu suivant.Remarque : 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
-
Configuration CMAN basée sur des règles.
Si vous revenez en arrière et que vous vérifiez la règle dans le fichier
cman.ora
, vous trouverez le contenu suivant.(src=*)(dst=*)(srv=*)(act=accept)
Nous autorisons donc les connexions à partir de n'importe quelle source, à n'importe quelle cible et à n'importe quel service. A l'aide de la liste de règles, il est possible de définir vos propres règles pour autoriser ou rejeter les connexions à partir de clients spécifiques, de cibles spécifiques ou de services spécifiques. 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. Il s'agit simplement d'un exemple de configuration simple. Pour plus de détails sur la configuration, notamment en matière de sécurité, consultez la documentation Oracle.
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 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, il 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 inscrite auprès du processus 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 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 Hop
Si la modification du paramètre de base de données REMOTE_LISTENER
n'est pas possible au niveau de la base de données cible, nous devons utiliser hop dans le fichier cman.ora
ou dans le fichier TNS client.
Option 1 : ajout du 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
Liens connexes
Remerciements
- Auteur - Dharmesh Patel (architecte cloud principal, Oracle North America Cloud Services - NACIE)
Ressources de formation supplémentaires
Explorez d'autres ateliers sur docs.oracle.com/learn ou accédez à d'autres contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir la documentation produit, consultez le site Oracle Help Center.
Install and Configure Oracle Connection Manager
G16510-01
September 2024