Nota

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.

immagine

Casi d'uso CMAN

Obiettivi

Prerequisiti

Task 1: Impostazione iniziale per l'installazione di Oracle Connection Manager

In questo tutorial, useremo i seguenti indirizzi IP.

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.

Task 2: installare Oracle Connection Manager su Oracle Connection Manager Virtual Machine

  1. 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
    
  2. Eseguire il comando mkdir -p $HOME/stage per creare la directory.

  3. Scaricare il client Oracle 21.3.0 da: Oracle Database 21c, copiare sulla VM CMAN utilizzando winscp 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
    
  4. 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
    
  5. 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
    
  6. 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 
    
  7. Eseguire il comando riportato di seguito per installare CMAN.

    $HOME/stage/client/runInstaller -silent -responseFile $HOME/client21.rsp  ORACLE_HOME_NAME=cman2130
    
  8. 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
    
  9. Aggiungere le righe seguenti al file .bash_profile ($HOME/.bash_profile) per facilitare l'accesso alle utility cmctl 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/
    
  10. 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
  1. 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
    
  2. 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

Conferme

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.