暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

深入理解Oracle Connection Manager:功能与架构解析

周同学带您玩AI 2024-07-27
276

Oracle Connection Manager

Oracle Connection Manager的功能

Oracle Connection Manager是一个用于管理数据库连接的中间件工具,其功能包括:

  • 访问控制过滤:基于规则限制数据库访问。
  • 会话复用:将多个客户端连接复用到一个或多个数据库连接,减少数据库服务器的连接数。

比如有多个应用系统需要连接到同一个Oracle数据库,通过使用Oracle Connection Manager,可以减少数据库服务器的负载,优化资源使用。

Oracle Connection Manager的架构

Oracle Connection Manager的架构包括以下部分:

  • CMAN Listener:监听客户端连接请求。

  • CMAN Gateway:管理和分发客户端连接请求到适当的数据库服务器。

  • CMAN Admin:管理和配置Connection Manager。

  • 用户请求 -> CMAN Listener监听 -> CMAN Gateway处理和分发 -> 数据库服务器响应。

配置Oracle Connection Manager进行会话复用

要配置Oracle Connection Manager进行会话复用,需要进行以下步骤:

  • 配置cman.ora
    文件,包括监听器地址、访问控制规则和性能参数。

  • 配置客户端连接到Oracle Connection Manager的协议地址。

  • 可选:配置数据库服务器进行会话复用。

  • 配置文件cman.ora

    cman = (address=(protocol=tcp)(host=your_host)(port=your_port))
    cman_profile = (parameter_list=(max_connections=256)(idle_timeout=30)(session_timeout=300))

  • 重新启动CMAN服务:

    cmanctl startup

使用Oracle Connection Manager Control工具管理Oracle Connection Manager

Oracle提供了Connection Manager Control(CMCTL)工具用于管理Connection Manager。可以通过这个工具进行启动、停止、状态查看等操作。

  • 启动Connection Manager:
    cmctl startup

  • 查看Connection Manager状态:
    cmctl status

  • 停止Connection Manager:
    cmctl shutdown

  1. Oracle Connection Manager概述

    Oracle Connection Manager通常部署在独立的服务器上,作为代理服务器,通过配置可以执行访问控制和会话复用功能。

    • 通常驻留在单独的服务器上
    • 作为代理服务器运行
    • 可配置执行访问控制过滤和会话复用
  2. Oracle Connection Manager进程

    CMGW和CMADMIN是Oracle Connection Manager的主要进程,分别负责连接管理和系统管理。

    • 网关进程:CMGW,负责接收客户端连接、使用规则评估连接、转发请求和复用客户端连接。
    • 管理进程:CMADMIN,多线程处理,执行管理功能。
  3. Oracle Connection Manager架构

    用户连接到Listener,Listener将请求传递给CMADMIN进行管理,再由CMGW处理并转发到数据库服务器。

    • 用户 -> Listener -> CMADMIN -> CMGW -> 数据库服务器
  4. 使用过滤规则

    过滤规则用于控制数据库访问,可以根据各种条件配置,如IP地址和数据库服务名。

    • cman.ora
      文件中配置过滤规则:
      cman_rules =
      (rule_list =
      (rule = (src = 192.168.1.0/24)(dst = 192.168.2.0/24)(srv = my_service)(act = accept))
      )

    • 通过过滤规则控制对Oracle数据库的访问
    • 规则基于客户端和服务器的主机名或IP地址、数据库服务名、Oracle高级安全性
  5. 实现内联网访问控制

    内联网用户通过部门防火墙连接到Oracle Connection Manager,进行访问控制。

    • 使用Oracle Connection Manager实现内联网的访问控制
  6. 实现互联网访问控制

    互联网用户通过应用网关访问内部网络,实现安全控制。

    • 互联网用户 -> 应用网关 -> 内部网络
  7. 使用会话复用

    多个客户端通过应用服务器连接到Oracle Connection Manager,再由其管理连接到数据库服务器,实现会话复用。

    • 多个用户 -> 应用Web服务器 -> Oracle Connection Manager -> 数据库服务器
  8. 配置Oracle Connection Manager

    配置Oracle Connection Manager需要完成这三步,确保系统能够正确运行和管理连接。

    • 三步流程:配置cman.ora
      文件、配置客户端、可选配置数据库服务器
  9. 配置cman.ora
    文件

    cman.ora
    文件是Oracle Connection Manager的核心配置文件,包含了所有必要的配置参数。

    • 定义协议地址、访问控制规则和性能参数

详细例子

  1. Example of a cman.ora File

    cman.ora
    文件用于配置Oracle Connection Manager实例的网络地址、访问控制规则和性能参数。

    CMAN01 =
    (CONFIGURATION =
    (ADDRESS = (PROTOCOL = tcp)(HOST = proxysvr)(PORT = 1521))
    (RULE_LIST =
    (RULE = (SRC = 192.0.2.32/24)(DST = fin-server)(SRV = *)(ACT = accept))
    (ACTION_LIST = (AUT = on)(MCT = 120)(MIT = 30))
    (RULE = (SRC = 192.0.2.32)(DST = proxysvr)(SRV = cmon)(ACT = accept))
    )
    (PARAMETER_LIST =
    (LOG_LEVEL = 2)
    (TRACING = on)
    (MAX_GATEWAY_PROCESSES = 8)
    (MIN_GATEWAY_PROCESSES = 3)
    )
    )

    • 配置CMAN01
      实例的cman.ora
      文件
    • 包括地址配置、规则列表和参数列表
  2. Configuring the Database Server

    要配置数据库服务器与Oracle Connection Manager协同工作,需要在tnsnames.ora
    文件中添加服务名称,并在初始化参数文件中设置远程监听器。

    • tnsnames.ora
      文件:
      listener_cman01 =
      (ADDRESS = (PROTOCOL = tcp)(HOST = proxyserver1)(PORT = 1521))

    • init.ora
      文件:
      REMOTE_LISTENER = listener_cman01

    • tnsnames.ora
      文件中为Oracle Connection Manager添加服务名称条目
    • 在初始化参数文件中指定Oracle Connection Manager的别名
  3. Configuring the Database Server for Multiplexing (Optional)

    配置数据库服务器进行会话多路复用,通过设置DISPATCHERS
    参数启用多路复用功能。

    • init.ora
      文件:
      DISPATCHERS = "(PROTOCOL = TCP)(MULTIPLEX = ON)"

    • 在初始化参数文件中设置DISPATCHERS
      参数的协议和多路复用属性
  4. Using the Oracle Connection Manager Control Utility

    Oracle Connection Manager Control工具(CMCTL)用于管理Connection Manager,可以执行启动、停止、状态查看等操作。

    • 启动Connection Manager:
      cmctl startup

    • 查看Connection Manager状态:
      cmctl status

    • 停止Connection Manager:
      cmctl shutdown

    • 基本语法:CMCTL command [process_type]
    • 支持的命令类型:操作命令、修改命令、信息命令和实用命令
  5. Review of Oracle Connection Manager Features

    Oracle Connection Manager的两个主要功能是访问控制过滤和会话复用,分别通过cman.ora
    文件和初始化参数文件进行配置。

    • 通过cman.ora
      文件中的CMAN_RULES
      参数进行访问控制过滤
    • 通过DISPATCHERS
      初始化参数的PROTOCOL
      MULTIPLEX
      属性进行会话复用

访问控制过滤

通过cman.ora
文件中的CMAN_RULES
参数,可以设置访问控制规则,限制哪些客户端可以访问数据库服务器。这些规则可以基于源IP地址、目标IP地址、服务名等条件进行过滤。

步骤:

  1. 创建或编辑cman.ora
    文件。
  2. cman.ora
    文件中定义RULE_LIST
    ,配置访问控制规则。

cman.ora
文件位于/opt/oracle/network/admin/cman.ora
,其内容如下:

CMAN01 =
(CONFIGURATION =
(ADDRESS = (PROTOCOL = tcp)(HOST = proxysvr)(PORT = 1521))
(RULE_LIST =
(RULE = (SRC = 192.0.2.0/24)(DST = 10.0.0.0/24)(SRV = my_service)(ACT = accept))
(RULE = (SRC = 192.0.2.100)(DST = 10.0.0.10)(SRV = admin_service)(ACT = deny))
)
(PARAMETER_LIST =
(LOG_LEVEL = 2)
(TRACING = on)
(MAX_GATEWAY_PROCESSES = 8)
(MIN_GATEWAY_PROCESSES = 3)
)
)

说明:

  • 第一条规则允许源自192.0.2.0/24
    网段的客户端访问10.0.0.0/24
    网段上的数据库服务my_service
  • 第二条规则拒绝源自192.0.2.100
    的客户端访问10.0.0.10
    上的管理服务admin_service

会话复用

通过数据库服务器的初始化参数文件中的DISPATCHERS
参数,可以启用会话复用。会话复用可以将多个客户端连接合并为较少的数据库服务器进程,减少系统开销。

步骤:

  1. 在数据库服务器的初始化参数文件(如init.ora
    )中设置DISPATCHERS
    参数。
  2. 启用多路复用(Multiplexing)功能。

数据库服务器的初始化参数文件位于$ORACLE_HOME/dbs/init.ora
,其内容如下:

DISPATCHERS = "(PROTOCOL = TCP)(MULTIPLEX = ON)"

说明:

  • DISPATCHERS
    参数配置数据库服务器使用TCP协议,并启用多路复用功能。

整合示例

步骤:

  1. 配置cman.ora
    文件。
  2. 配置数据库服务器的初始化参数文件。
  3. 确保客户端和数据库服务器都能通过Oracle Connection Manager进行通信。
  • cman.ora
    文件:

    CMAN01 =
    (CONFIGURATION =
    (ADDRESS = (PROTOCOL = tcp)(HOST = proxysvr)(PORT = 1521))
    (RULE_LIST =
    (RULE = (SRC = 192.0.2.0/24)(DST = 10.0.0.0/24)(SRV = my_service)(ACT = accept))
    (RULE = (SRC = 192.0.2.100)(DST = 10.0.0.10)(SRV = admin_service)(ACT = deny))
    )
    (PARAMETER_LIST =
    (LOG_LEVEL = 2)
    (TRACING = on)
    (MAX_GATEWAY_PROCESSES = 8)
    (MIN_GATEWAY_PROCESSES = 3)
    )
    )

  • 数据库服务器的初始化参数文件init.ora

    DISPATCHERS = "(PROTOCOL = TCP)(MULTIPLEX = ON)"

  • 客户端的tnsnames.ora
    文件:

    mydb =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = tcp)(HOST = proxyserver1)(PORT = 1521))
    )
    (CONNECT_DATA =
    (SERVICE_NAME = my_service)
    )
    )

通过以上配置,可以实现通过Oracle Connection Manager进行访问控制过滤和会话复用,优化数据库连接的效率和安全性。

非常感谢您读到这里!如果您觉得这篇文章对您有帮助,可以关注一下博主。关注后,您将第一时间获得最新的AI、云计算、运维(Linux、数据库,容器等)技术,以及更多实用的技能干货。

让AI工具成为你的得力助手,感受AI工具的无限可能,让复杂的任务变得简单,让你的工作更加轻松和高效。


文章转载自周同学带您玩AI,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论