Nota
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriverti a un account gratuito, consulta Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
Installare e configurare Oracle Connection Manager
Introduzione
Oracle Connection Manager (CMAN) è una utility Oracle che funge da server proxy per inoltrare le richieste di connessione dai client ai database. Funziona a livello di sessione e di solito viene installato su un server separato.
Casi d'uso CMAN
-
Scenario 1: controllo dell'accesso
Utilizzare la configurazione basata su regole per rifiutare o accettare richieste client specifiche, ad esempio in base all'indirizzo IP del client.
Nel diagramma seguente, se il client si connette dal computer IP
192.168.0.74
, la connessione sarà ACCETTATA per connettersi al database, ma se un client tenterà di connettersi dal computer192.168.0.75
, la connessione sarà REJECTED. Allo stesso modo, possiamo specificare un intervallo di indirizzi IP da consentire e rifiutare. -
Scenario 2: instradamento transito
I client non hanno accesso diretto a uno o più database, CMAN reindirizza le connessioni dai client ai database corrispondenti.
-
Scenario 3: porte diverse
I database di destinazione utilizzano porte diverse, ad esempio
1521
e1522
, ma queste porte non sono aperte sul lato client. Configurare CMAN in modo che utilizzi una porta diversa, ad esempio1999
. -
Scenario 4: protocolli IP diversi
I client e i database utilizzano protocolli IP diversi, ad esempio il client utilizza IPv6, ma il database utilizza IPv4. CMAN funge da bridge di rete tra IPv6 e IPv4. In questa esercitazione, CMAN deve essere eseguito su un host dual-stack configurato con almeno un'interfaccia IPv6 e almeno un'interfaccia IPv4.
Obiettivi
- Impostare un CMAN (Oracle Connection Manager) per limitare o consentire le connessioni al database.
Prerequisiti
-
Esegui il provisioning dell'ambiente OCI come (compartimento, rete cloud virtuale (VCN), subnet e così via).
-
Eseguire il provisioning del database Oracle Base Database Service. Ad esempio, Target.
-
Esegui il provisioning di Oracle Cloud Infrastructure (OCI) Compute VM (host CMAN).
-
Computazione host della virtual machine (VM) client. Ad esempio, Origine.
Task 1: Impostazione iniziale per l'installazione di Oracle Connection Manager
In questo tutorial, useremo i seguenti indirizzi IP.
- VM di computazione OCI denominata
client
, IP =192.168.0.74
e IP =192.168.0.75
. - VM di computazione OCI denominata
cman
, IP =192.168.0.199
. - VM Oracle Base Database Service denominata
dbcs01
, IP =192.168.0.48
.
Apri connessione firewall
La porta deve essere aperta dalla VM client alla VM CMAN nel 1999 e dalla VM CMAN al database server nel 1521.
-
1a connessione, da CMAN a Database Server:
[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 connessione, dalla VM client alla VM CMAN:
Useremo la porta 1999 per CMAN. La porta 1999 non è aperta per impostazione predefinita, pertanto è necessario aprire questa porta.
Eseguire il comando seguente come root sull'host CMAN per aprire la 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)
Task 2: installare Oracle Connection Manager su Oracle Connection Manager Virtual Machine
-
Preparare la VM CMAN per l'installazione. Eseguire il comando seguente per creare l'utente Oracle, installare i pacchetti, modificare i parametri del kernel e così via.
$sudo su - root $yum install oracle-database-preinstall-21c.x86_64
-
Eseguire il comando
mkdir -p $HOME/stage
per creare la directory. -
Scaricare il client Oracle
21.3.0
da: Oracle Database 21c, copiare sulla VM CMAN utilizzandowinscp
o qualsiasi altra utility di trasferimento file in$HOME/stage
.Se non è possibile utilizzare SSH, aprire la pagina di download del client 21c di Oracle Database nel browser e fare clic per scaricare il file
LINUX.X64_213000_client.zip
per Linux. Aprire il browser, fare clic con il pulsante destro del mouse sul file in Download e selezionare Copia collegamento download come indicato di seguito.Il parametro URL AuthParam varia ogni volta che si fa clic sul collegamento di download. Sul computer Linux, accedere alla directory richiesta (ad esempio,
$HOME/stage
) e immettere il comando seguente:$ wget "https://download.oracle.com/otn/linux/oracle21c/LINUX.X64_213000_client.zip?AuthParam=1631008911_576110421cdef54a2d47d9562bee0e5a" -O LINUX.X64_213000_client.zip
-
Estrarre il software client come utente Oracle. Verrà creata una directory denominata 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
-
Installare ora CMAN e SQL*Plus.
Eseguire il comando riportato di seguito per creare le nuove directory utente Oracle (
oracle
), di base e home per l'esecuzione di CMAN (installare le librerie di preinstallazione della versione più recente di Oracle Database per l'impostazione dell'utente Oracle in 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
-
Preparare il file di risposta per l'installazione di CMAN e 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
-
Eseguire il comando riportato di seguito per installare CMAN.
$HOME/stage/client/runInstaller -silent -responseFile $HOME/client21.rsp ORACLE_HOME_NAME=cman2130
-
Finalizzare l'installazione come utente root. Eseguire come utente root per completare l'installazione.
$ /u01/app/oraInventory/orainstRoot.sh $ /u01/app/oracle/product/cman2130/root.sh
-
Aggiungere le righe seguenti al file
.bash_profile
($HOME/.bash_profile
) per facilitare l'accesso alle utilitycmctl
e SQL*Plus ogni volta che si esegue il login come utente 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/
-
Eseguire il comando seguente per assicurarsi che sia SQL*Plus che CMAN siano in esecuzione.
[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>
Task 3: Configurare Oracle Connection Manager
In questo compito, configureremo CMAN. In primo luogo, aprire la porta che il listener CMAN deve utilizzare sulla VM CMAN. In questo esempio, viene utilizzata la porta 1999 per dimostrare che non deve essere necessariamente 1521 e per distinguerla dalla porta listener del database. Come root:
$firewall-cmd --permanent --add-port=1999/tcp
$firewall-cmd –reload
-
Configurazione CMAN normale.
In qualità di utente Oracle, creare il file di configurazione CMAN
cman.ora
in$TNS_ADMIN
con il seguente contenuto.Nota: modificare l'indirizzo IP dell'host in IP 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
-
Configurazione CMAN basata su regole.
Se si torna indietro e si controlla la regola nel file
cman.ora
, è possibile trovare il contenuto riportato di seguito.(src=*)(dst=*)(srv=*)(act=accept)
Quindi, stiamo consentendo connessioni da qualsiasi origine, a qualsiasi destinazione e a qualsiasi servizio. Utilizzando la lista di regole, è possibile definire le proprie regole per consentire o rifiutare connessioni da client specifici, a destinazioni specifiche o a servizi specifici. Ad esempio:
$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 è uno strumento potente. Questa è solo una configurazione di esempio e semplice. Per ulteriori dettagli sulla configurazione, in particolare per quanto riguarda la sicurezza, consultare la documentazione di Oracle.
Task 4: avviare i servizi Oracle Connection Manager
Connettersi al container database di origine e di destinazione utilizzando il wallet e creare una configurazione utilizzando l'interfaccia della riga di comando (DGMGRL) di Oracle Data Guard. È la stessa procedura utilizzata per una configurazione Oracle Data Guard normale. L'unica differenza è che dobbiamo farlo per entrambi i container database, poiché entrambi sono database primari.
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.
Eseguire il comando riportato di seguito per controllare lo stato e i servizi.
CMCTL:cman> show status
CMCTL:cman> show services
Task 5: connessione al database tramite Oracle Connection Manager
Approccio 1: uso del parametro del database di destinazione
Per consentire a CMAN di inoltrare le connessioni in entrata ai database, CMAN deve essere a conoscenza di questi database. Per raggiungere questo obiettivo, è necessario impostare REMOTE_LISTENER
sul database di destinazione. Impostare inoltre VALID_NODE_CHECKING_REGISTRATION_CMAN = OFF
nel file cman.ora
per la registrazione riuscita.
Database di destinazione:
alter system set REMOTE_LISTENER='10.0.0.8:1999' scope=both sid='*';
alter system register;
Aggiungere la riga seguente nel file cman.ora
.
VALID_NODE_CHECKING_REGISTRATION_CMAN = OFF
Eseguire il comando seguente per riavviare CMAN e verificare se il database è registrato con il listener CMAN.
CMCTL:cman> show services
Convalida connessione:
Connettersi al database dalla VM client utilizzando l'IP e la porta CMAN. Creare un nuovo alias TNS nel file tnsnames.ora
nella VM 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)))
Il nome del servizio sopra riportato deve essere visibile nell'output CMAN> show services
.
$sqlplus system/MyPasswd__48@GGC1_CM
Controllare il file di trace CMAN.
/home/oracle/base/diag/netcman/cman/cman/trace/cman.log
/u01/app/oracle/diag/netcman/cman/cman_test/trace/ log.xml
Approccio 2: Utilizzo del Hop
Nel caso in cui non sia possibile modificare il parametro del database REMOTE_LISTENER
nel database di destinazione, è necessario utilizzare l'hop nel file cman.ora
o nel file TNS client.
Opzione 1: aggiungere Hop nel file 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))
)
)
)
Opzione 2: Aggiungi hop nel file TNS del 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)
)
)
Eseguire il comando riportato di seguito per convalidare la connessione.
$sqlplus system/MyPasswd__48@GGC1_CM
Collegamenti correlati
Conferme
- Autore - Dharmesh Patel (architetto cloud principale, Oracle North America Cloud Services - NACIE)
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.
Per la documentazione del prodotto, visita l'Oracle Help Center.
Install and Configure Oracle Connection Manager
G16511-01
September 2024