注意:

安装和配置 Oracle Connection Manager

简介

Oracle Connection Manager (CMAN) 是充当代理服务器的 Oracle 实用程序,用于将连接请求从客户机转发到数据库。它在会话级别运行,通常安装在单独的服务器上。

图像

CMAN 用例

目标

先决条件

任务 1:Oracle Connection Manager 安装的初始设置

在本教程中,我们将使用以下 IP 地址。

打开防火墙连接

端口应该在 1999 年从客户机 VM 打开到 CMAN VM,在 1521 年从 CMAN VM 打开到数据库服务器。

任务 2:在 Oracle Connection Manager 虚拟机上安装 Oracle Connection Manager

  1. 准备 CMAN VM 进行安装。运行以下命令以创建 Oracle 用户、安装软件包、更改内核参数等。

    $sudo su - root
    $yum install oracle-database-preinstall-21c.x86_64
    
  2. 运行 mkdir -p $HOME/stage 命令以创建目录。

  3. 从以下位置下载 Oracle Client 21.3.0Oracle Database 21c ,使用 winscp$HOME/stage 下的任何其他文件传输实用程序在 CMAN VM 上复制。

    如果无法使用 SSH,请在浏览器中打开 Oracle Database 21c 客户端下载页面,然后单击以下载适用于 Linux 的 LINUX.X64_213000_client.zip 文件。打开浏览器,右键单击下载中的文件,然后选择复制下载链接,如下所示。

    每次单击下载链接时,AuthParam URL 参数都会有所不同。在 Linux 计算机上,导航到所需的目录(例如 $HOME/stage),然后输入以下命令:

    $ wget "https://download.oracle.com/otn/linux/oracle21c/LINUX.X64_213000_client.zip?AuthParam=1631008911_576110421cdef54a2d47d9562bee0e5a" -O LINUX.X64_213000_client.zip
    
  4. 以 Oracle 用户身份解压缩客户机软件。将创建名为 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. 现在,安装 CMAN 和 SQL*Plus。

    运行以下命令以创建用于运行 CMAN 的新 Oracle 用户 (oracle)、基本目录和起始目录(安装最新版本的 Oracle Database 的预安装库以在 Linux 中设置 Oracle 用户)。

    $ 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. 准备用于安装 CMAN 和 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. 运行以下命令安装 CMAN。

    $HOME/stage/client/runInstaller -silent -responseFile $HOME/client21.rsp  ORACLE_HOME_NAME=cman2130
    
  8. 以 root 用户身份完成安装。以 root 用户身份运行以完成安装。

    $ /u01/app/oraInventory/orainstRoot.sh
    $ /u01/app/oracle/product/cman2130/root.sh
    
  9. .bash_profile 文件 ($HOME/.bash_profile) 中附加以下行,以便每次以 Oracle 用户身份登录时都能轻松访问 cmctl 和 SQL*Plus 实用程序。

    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. 运行以下命令以确保 SQL*Plus 和 CMAN 都在运行。

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

任务 3:配置 Oracle Connection Manager

在本任务中,我们将配置 CMAN。首先,打开 CMAN 监听程序应在 CMAN VM 上使用的端口。在本例中,我们使用端口 1999 来演示它不一定是 1521 并将其与数据库监听程序端口区分开来。以 root 身份:

$firewall-cmd --permanent --add-port=1999/tcp
$firewall-cmd –reload
  1. 常规 CMAN 配置。

    以 Oracle 用户身份,使用以下内容在 $TNS_ADMIN 下创建 CMAN 配置文件 cman.ora

    注:将主机 IP 地址更改为 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. 基于规则的 CMAN 配置。

    如果返回并检查 cman.ora 文件中的规则,将找到以下内容。

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

    因此,我们允许从任何源、任何目标和任何服务进行连接。使用规则列表,可以定义自己的规则以允许或拒绝从特定客户机、特定目标或到特定服务的连接。例如:

    $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 是一个强大的工具。这只是一个示例和简单配置。请查看 Oracle 文档以了解更多配置详细信息,特别是有关安全性的详细信息。

任务 4:启动 Oracle Connection Manager 服务

使用 wallet 连接到源和目标容器数据库,并使用 Oracle Data Guard 命令行界面 (Command-Line Interface,DGMGRL) 创建配置。这与常规 Oracle Data Guard 配置相同。唯一不同的是,我们必须对两个容器数据库执行此操作,因为这两个数据库都是主数据库。

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.

运行以下命令以检查状态和服务。

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

任务 5:通过 Oracle Connection Manager 连接到数据库

方法 1:使用目标数据库参数

CMAN 要将传入连接转发到数据库,CMAN 必须知道这些数据库。为此,我们需要在目标数据库上设置 REMOTE_LISTENER。还要在 cman.ora 文件中设置 VALID_NODE_CHECKING_REGISTRATION_CMAN = OFF 以成功注册。

目标数据库:

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

cman.ora 文件中添加以下行。

VALID_NODE_CHECKING_REGISTRATION_CMAN = OFF

运行以下命令以重新启动 CMAN 并检查数据库是否已注册到 CMAN 监听程序。

CMCTL:cman> show services

验证连接:

使用 CMAN IP 和端口从客户机 VM 连接到数据库。在客户机 VM 上的 tnsnames.ora 文件中创建一个新的 TNS 别名。

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

上述服务名称应在 CMAN> show services 输出中可见。

$sqlplus system/MyPasswd__48@GGC1_CM

检查 CMAN 跟踪文件。

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

方法 2:使用跃点

如果无法在目标数据库中更改 REMOTE_LISTENER 数据库参数,则需要在 cman.ora 文件或客户机 TNS 文件中使用跃点。

选项 1:在 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))
        )
    )
)

选项 2:在客户端的 TNS 文件中添加跃点

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

运行以下命令以验证连接。

$sqlplus system/MyPasswd__48@GGC1_CM

确认

更多学习资源

浏览 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 渠道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心