Oracle WebLogic Server 与 Oracle Database 12c 的集成 (2)

时间:2021-07-12 21:40:38

数据库驻留连接池

中间层数据源会创建许多闲置的连接来应对高用户需求。创建和销毁这些连接的成本非常高昂。数据库驻留连接池 (DRCP) 允许多个 web 层和中间层数据源共享 Oracle 数据库服务器进程和会话(统称为池式服务器),从而可以更好地共享数据库资源并提高了应用程序可伸缩性。当数据库连接不是始终处于使用中时,它的伸缩性最好。
Oracle WebLogic Server 与 Oracle Database 12c 的集成 (2)
图 5:数据库驻留连接池
当池式连接处于使用中时,它们等同于专用连接。当从 Oracle WebLogic Server 数据源请求连接时,将分配合适的池式连接。对所有数据库活动,Oracle WebLogic Server 都直接使用池式连接进行通信。当数据源释放池式连接后,该连接将被归还。
集成有 DRCP 的 WebLogic 可以使用 Oracle Database 12c 和 JDBC Driver 12c 对 Active GridLink for RAC 和常规数据源进行操作。数据源连接池中的连接是处于“未附加”状态的占位者。当某个连接被授予应用程序时,将调用 attachConnection() 来附加该连接。当连接返回到池中时,将调用 detachConnection() 来分离该连接。
当池式连接用于 XA 事务中时,会启用一个标志来指示在征调时该连接正被某事务所使用。当调用该事务的提交 或回滚 时,该连接被禁用。此机制确保了为 XA 事务的整个生命周期使用同一个连接。
DRCP 确保了决不会在不同的用户之间共享池式连接。不过,它允许在同一应用程序的不同实例之间共享和池化连接。即使对于同一用户,DRCP 也会根据应用程序选择的“连接类”维护池式服务器的逻辑分组。连接类是客户端在请求池式连接时提供的一个逻辑名。它指示客户端愿意重用使用同一逻辑名的其他客户端使用的池式连接。
例如,如果有全都指向同一数据库的 10 个 Oracle WebLogic Server 数据源,并且每个数据源的初始容量为 10 个连接,则在启动时将创建 100 个连接/会话。如果它们不是始终全都处于活动状态,则这是对连接的浪费。通过使用 DRCP,它们就可以共享具有多个可配置
连接的单个连接池。与任何类型的虚拟化一样,只有当您具有备用容量并且没有任何人尝试同时使用所有资源时,这才会奏效。
DRCP 增强了 Oracle 数据库和 Oracle WebLogic Server 的可伸缩性,因为它以最低的成本保留了到数据库的持久连接。数据库资源仅供活动的连接使用。管理员可以通过控制和设置池大小来控制使用规模。

可插拔数据库

Oracle 数据库实现通常划分为以下类别:
  • 中小型数据库,每个支持一个单独的应用程序
  • 业务数据库,其中,应用程序的每个模块使用一个单独的数据库
  • 包含同一数据库的多个副本的多租户数据库(每个租户一个副本)
  • 包含用于支持不同租户的各种模式集合的多租户数据库
可插拔数据库实现允许多个不同的数据库存在于单个更大的数据库安装中。通过在单个容器数据库中包含多个可插拔数据库,从而将这些多数据库配置整合到单个数据库中,Oracle Database 12c 中的容器数据库 (CDB) 特性最大程度地降低了这些多数据库配置的开销。这种类型的“数据库中虚拟化”的优点包括:
  • 能够在单个容器数据库的上下文中透明地将 Oracle 数据库升级到更高版本
  • 能够在容器数据库中运行 Oracle 数据库(租户数据库)的多个版本
  • 能够更高效地使用硬件资源
  • 统一的安全性管理
  • 提高了中间层和数据层的密度和可伸缩性,从而可以更好地利用资源
  • 在单个数据库中支持多个租户
当客户端连接到某个特定的容器 (PDB) 时,它发出 ALTER SESSION SET CONTAINER。此新的驱动程序将确保容器是有效的/现有的容器并且当前用户有正确的权限连接到该容器。如果这些检查成功,则会话中的用户数据将使用新的 PDB 名称和 ID 进行更新。
通常将通过一个服务连接到 PDB。每个 PDB 在创建时都将具有一个默认服务,很像目前针对单例数据库存在的数据库服务。还可以显式为 PDB 创建其他服务。当应用程序使用某个服务进行连接时,将使用 PDB 属性在数据库会话中设置正确的 PDB 上下文。
在 Oracle WebLogic Server 中,您可以将单个数据源配置为将连接池化到多个可插拔数据库。不过,到 PDB 的首次连接或者在 PDB 之间的切换对应用程序而言都不是透明的。要启用 PDB 间的切换,最好的做法是注册一个回调,用以执行以下任务:通过 ALTER SESSION SET CONTAINER 更改连接,设置其他属性,然后对连接进行标记。到同一 PDB 的任何后续连接请求都不需要更改。此模型将提供池式连接的真正优势,包括可伸缩性和弹性。
Oracle WebLogic Server 与 Oracle Database 12c 的集成 (2)
图 6:Oracle WebLogic Server 和可插拔数据库
另一种有效的 Oracle WebLogic Server 配置是每个 PDB 一个数据源。如果向 CDB 中添加新的 PDB,则需要在 WebLogic Server 中配置一个新数据源。此模型的优势体现在数据层。
Oracle WebLogic Server 与 Oracle Database 12c 的集成 (2)
图 7:展示了每个可插拔数据库一个数据源的 Oracle WebLogic Server 配置

自动 ONS

随 Oracle Database 11g 一起使用最初版本的 Active GridLink 时,若启用 FAN,则必须配置一个 ONS 监听器列表。使用 Oracle Database 12c 时,ONS 列表是可选的;该信息会自动从数据库提供给驱动程序。自动 ONS 特性只能与 Oracle Database 12c RAC 或新的全局数据库服务 (GDS) 特性一起使用。它不能与单实例 Oracle 数据库一起使用。
当前,当启用 FAN 时,Oracle WebLogic 管理控制台需要适用于 GridLink 数据源配置的 ONS 列表。在 Oracle WebLogic Server 12.1.2 中,如果您在使用 Oracle Database 12c 和 JDBC 12c,则 ONS 列表是可选的。
只有在创建期间对数据源进行了定位或者在更新期间对其进行了重新定位时,才会在 Oracle WebLogic 管理控制台中执行验证。此方法类似于诸如 URL 的其他值。如果管理员忘了输入 ONS 列表,则定位将失败。ONS 列表将需要更新,并且将需要重新执行定位。
在部署期间将对 ONS 列表进行验证。如果列表为空,则系统将验证所使用的是否为 Oracle Database 12c 驱动程序。

全局数据服务

全局数据服务 (GDS) 在全局范围内简化了数据库服务的交付,这是在大型云架构中部署数据库的关键所在。在分布式数据库环境中,这些技术将监督复制和故障切换,同时在数据中心内和数据中心间执行负载平衡,优化资源利用并简化数据库管理工作。GDS 在通过 Oracle Data Guard、Oracle GoldenGate 或任何其他复制技术互连在一起的 RAC 和单实例 Oracle 数据库之间启用全局服务,进而发挥作用。对此分布式基础架构的客户端访问是完全透明的。GDS 实现可以通过最少的更改轻松应用于 Oracle WebLogic Server。
Oracle Database 12c 全局数据服务的优点包括:
  • 跨分布式数据库云对数据库服务进行集中管理
  • 根据负载和可用性对服务进行动态迁移
  • 通过添加 RAC 集群进行扩展
  • 在可用数据库上自动重启发生故障的服务
  • 通过 Active GridLink 数据源轻松与 Oracle WebLogic Server 进行集成
在配置 GridLink 数据源时,您只需要指定从中访问全局服务的一个主本地区域以及每个区域的地址。此配置在云中为 Oracle 数据库实现了 RAC 式的故障切换。如果某个区域丢失了与全局数据库服务的连接,则会基于 FAN 事件重新连接。在发生故障时不需要重启中间层组件,这确保了业务连续性。
GDS 被设计为本身就能够在全局服务之间对数据库负载进行平衡。当某个只读服务上存在高负载,且其他区域中有全局服务可用时,GDS 框架将通知 Active GridLink,并会与其他区域中的服务建立一个新连接。(对于读-写服务,该框架不能在区域间进行负载平衡。只能在主区域中执行此类型的处理。)
Oracle WebLogic Server 管理员可以通过管理控制台对 GDS 数据源进行如下配置:
  • 通过指定以下各项来指定连接:
    • 服务名称(全局服务名称)
    • 地址/端口对(用于各个全局服务管理器)
    • GDS 区域(新增)
  • 配置 GDS 数据源后无法对监听器进行测试。
  • 不能使用单个 SCAN 地址,而需要配置多个 GSM addresses.service 名称。下面是一个示例 URL:
jdbc:oracle:thin:@(DESCRIPTION= (ADDRESS_LIST=(LOAD_BALANCE=ON)(FAILOVER=ON) (ADDRESS=(HOST=slc02wqh.us.oracle.com)(PORT=2711)(PROTOCOL=tcp)) (ADDRESS=(HOST=slc02wqh.us.oracle.com)(PORT=2709)(PROTOCOL=tcp))) (CONNECT_DATA=(SERVICE_NAME=uniformdg1.pool1.oradbcloud)(REGION=EAST)))
Oracle WebLogic Server 与 Oracle Database 12c 的集成 (2)
图 8:Oracle WebLogic Server 和全局数据服务
要正确处理更新操作,您只需要定义一个用于对主数据库执行更新的服务。只读操作可以定向到主数据库和备用数据库上定义的另一服务。因为在一个 URL 上只能定义一个服务并且在一个数据源配置上只能定义一个 URL,所以必须为更新服务定义一个数据源,为只读服务定义另一个数据源。在编写应用程序时必须使更新操作前往更新数据源,使只读操作前往只读数据源。

总结

Oracle WebLogic Server 与 Oracle Database 12c 紧密集成,提供了*别的可用性、故障切换、多租户、资源共享、可伸缩性以及轻松的配置和管理,所有这一切都是在云式基础架构的上下文中完成的。它提供了一个完整的、同类最佳的数据处理平台来针对您的业务实现更高的可用性、可伸缩性和性能。

参考文献

Oracle WebLogic Server Active GridLink for Oracle Real Application Clusters (RAC)
http://www.oracle.com/technetwork/middleware/weblogic/gridlink-rac-wp-494900.pdf

Oracle WebLogic Server and Highly Available Oracle Databases: Oracle Integrated Maximum Availability Solutions
http://www.oracle.com/technetwork/middleware/weblogic/learnmore/1534212

数据库驻留连接池 (DRCP)
http://www.oracle.com/technetwork/articles/oracledrcp11g-1-133381.pdf