Hinweis:

Oracle Connection Manager installieren und konfigurieren

Einführung

Oracle Connection Manager (CMAN) ist ein Oracle-Utility, das als Proxyserver fungiert, um Verbindungsanforderungen von Clients an Datenbanken weiterzuleiten. Es funktioniert auf Sitzungsebene und wird normalerweise auf einem separaten Server installiert.

image

CMAN-Anwendungsfälle

Ziele

Voraussetzungen

Aufgabe 1: Erstmaliges Setup für die Installation von Oracle Connection Manager

In diesem Tutorial verwenden wir die folgenden IP-Adressen.

Offene Firewallverbindung

Port muss von Client-VM zu CMAN-VM auf 1999 und von CMAN-VM zu Datenbankserver auf 1521 geöffnet sein.

Aufgabe 2: Oracle Connection Manager auf der virtuellen Oracle Connection Manager-Maschine installieren

  1. Bereiten Sie die CMAN-VM für die Installation vor. Führen Sie den folgenden Befehl aus, um den Oracle-Benutzer zu erstellen, Packages zu installieren, Kernel-Parameter zu ändern usw.

    $sudo su - root
    $yum install oracle-database-preinstall-21c.x86_64
    
  2. Führen Sie den Befehl mkdir -p $HOME/stage aus, um das Verzeichnis zu erstellen.

  3. Laden Sie den Oracle-Client 21.3.0 von Oracle Database 21c herunter, kopieren Sie ihn mit winscp oder einem anderen Dateiübertragungsutility unter $HOME/stage auf die CMAN-VM.

    Wenn Sie SSH nicht verwenden können, öffnen Sie die Downloadseite des Oracle Database-Clients 21c im Browser, und klicken Sie, um die Datei LINUX.X64_213000_client.zip für Linux herunterzuladen. Öffnen Sie den Browser, klicken Sie mit der rechten Maustaste auf die Datei unter Downloads, und wählen Sie den Downloadlink kopieren wie folgt aus.

    Der URL-Parameter AuthParam variiert jedes Mal, wenn Sie auf den Downloadlink klicken. Navigieren Sie auf dem Linux-Rechner zu dem erforderlichen Verzeichnis (z.B. $HOME/stage), und geben Sie den folgenden Befehl ein:

    $ wget "https://download.oracle.com/otn/linux/oracle21c/LINUX.X64_213000_client.zip?AuthParam=1631008911_576110421cdef54a2d47d9562bee0e5a" -O LINUX.X64_213000_client.zip
    
  4. Entpacken Sie die Clientsoftware als Oracle-Benutzer. Ein Verzeichnis mit dem Namen client wird erstellt.

    [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. Installieren Sie jetzt CMAN und SQL*Plus.

    Führen Sie den folgenden Befehl aus, um die neuen Oracle-Benutzerverzeichnisse (oracle), die Basisverzeichnisse und die Homeverzeichnisse zur Ausführung von CMAN zu erstellen (installieren Sie die Librarys vor der Installation der neuesten Version von Oracle Database, um den Oracle-Benutzer in Linux einzurichten).

    $ 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. Bereiten Sie die Antwortdatei für die Installation von CMAN und SQL*Plus vor.

    $ 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. Führen Sie folgenden Befehl aus, um CMAN zu installieren.

    $HOME/stage/client/runInstaller -silent -responseFile $HOME/client21.rsp  ORACLE_HOME_NAME=cman2130
    
  8. Schließen Sie die Installation als Root-Benutzer ab. Führen Sie den Vorgang als Root-Benutzer aus, um die Installation abzuschließen.

    $ /u01/app/oraInventory/orainstRoot.sh
    $ /u01/app/oracle/product/cman2130/root.sh
    
  9. Hängen Sie die folgenden Zeilen an die Datei .bash_profile ($HOME/.bash_profile) an, um den einfachen Zugriff auf die Utilitys cmctl und SQL*Plus zu ermöglichen, wenn Sie sich als Oracle-Benutzer anmelden.

    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. Führen Sie den folgenden Befehl aus, um sicherzustellen, dass SQL*Plus und CMAN ausgeführt werden.

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

Aufgabe 3: Oracle Connection Manager konfigurieren

In dieser Aufgabe konfigurieren wir CMAN. Öffnen Sie zunächst den Port, den der CMAN-Listener auf der CMAN-VM verwenden soll. In diesem Beispiel verwenden wir Port 1999, um zu demonstrieren, dass er nicht unbedingt 1521 sein muss, und um ihn vom Datenbank-Listener-Port zu unterscheiden. Als Root:

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

    Erstellen Sie als Oracle-Benutzer die CMAN-Konfigurationsdatei cman.ora unter $TNS_ADMIN mit dem folgenden Inhalt.

    Hinweis: Ändern Sie die Host-IP-Adresse in Ihre CMAN-VM-IP.

    $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. Regelbasierte CMAN-Konfiguration.

    Wenn Sie zurückgehen und die Regel in der Datei cman.ora prüfen, finden Sie den folgenden Inhalt.

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

    Wir erlauben also Verbindungen von jeder Quelle, zu jedem Ziel und zu jedem Service. Mithilfe der Regelliste können Sie eigene Regeln definieren, um Verbindungen von bestimmten Clients, zu bestimmten Zielen oder zu bestimmten Services zuzulassen oder abzulehnen. Beispiel:

    $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 ist ein leistungsfähiges Werkzeug. Dies ist nur ein Beispiel und eine einfache Konfiguration. Weitere Konfigurationsdetails, insbesondere was die Sicherheit betrifft, finden Sie in der Oracle Dokumentation.

Aufgabe 4: Oracle Connection Manager-Services starten

Stellen Sie mit dem Wallet eine Verbindung zur Quell- und Zielcontainerdatenbank her, und erstellen Sie eine Konfiguration mit der Oracle Data Guard-Befehlszeilenschnittstelle (DGMGRL). Dies ist dasselbe wie bei einer normalen Oracle Data Guard-Konfiguration. Der einzige Unterschied besteht darin, dass wir dies für beide Containerdatenbanken tun müssen, da beide Primärdatenbanken sind.

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.

Führen Sie den folgenden Befehl aus, um den Status und die Services zu prüfen.

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

Aufgabe 5: Verbindung zur Datenbank über Oracle Connection Manager

Ansatz 1: Parameter der Zieldatenbank verwenden

Damit CMAN eingehende Verbindungen an Datenbanken weiterleiten kann, muss CMAN diese Datenbanken kennen. Um dies zu erreichen, müssen Sie REMOTE_LISTENER in der Zieldatenbank festlegen. Legen Sie außerdem VALID_NODE_CHECKING_REGISTRATION_CMAN = OFF in der Datei cman.ora für eine erfolgreiche Registrierung fest.

Zieldatenbank:

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

Fügen Sie die folgende Zeile in die Datei cman.ora ein.

VALID_NODE_CHECKING_REGISTRATION_CMAN = OFF

Führen Sie den folgenden Befehl aus, um CMAN neu zu starten und zu prüfen, ob die Datenbank beim CMAN-Listener registriert ist.

CMCTL:cman> show services

Verbindung validieren:

Stellen Sie über die Client-VM mit CMAN-IP und -Port eine Verbindung zur Datenbank her. Erstellen Sie einen neuen TNS-Alias in der Datei tnsnames.ora auf der Client-VM.

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

Der obige Servicename muss in der Ausgabe CMAN> show services sichtbar sein.

$sqlplus system/MyPasswd__48@GGC1_CM

Prüfen Sie die CMAN-Tracedatei.

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

Ansatz 2: Mit Hop

Falls die Änderung des Datenbankparameters REMOTE_LISTENER in der Zieldatenbank nicht möglich ist, müssen Sie Hop entweder in der Datei cman.ora oder in der TNS-Clientdatei verwenden.

Option 1: Hop in der Datei cman.ora hinzufügen

$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: Hop in TNS-Datei des Clients hinzufügen

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

Führen Sie den folgenden Befehl aus, um die Verbindung zu validieren.

$sqlplus system/MyPasswd__48@GGC1_CM

Danksagungen

Weitere Lernressourcen

Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie im Oracle Learning YouTube-Channel auf weitere kostenlose Lerninhalte zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.

Die Produktdokumentation finden Sie im Oracle Help Center.