连续可用性的代码

当对应用程序隐藏计划的维护、计划外停机和数据库负载不平衡时,您的应用可实现持续可用性。应用优秀实践、简单配置和 Oracle Autonomous AI Database 的组合可确保您的应用持续可用。

将计划内维护活动从应用程序中隐藏的最佳方法是透明地从每个数据库工作负载位置排出工作,然后再为该工作负载位置设置维护窗口。Oracle 的连接池和中间层(包括 WebLogic Server、Oracle Universal Connection Pool (UCP)、OCI 会话池和 ODP.NET 非托管提供程序)可识别快速应用程序通知 (FAN),因此在安排数据库服务移动之前会收到通知,以允许在维护之前正常耗尽工作。FAN 通知自动触发关闭空闲连接,在新服务位置中打开新连接,并允许在即将关闭的服务位置为活动工作完成配置时间。主要的第三方 JDBC 中层(例如 IBM WebSphere)在配置 UCP 时允许相同的行为。对于无法使用 UCP 的基于 JDBC 的应用,Oracle 提供了使用 Oracle 驱动程序和连接测试的解决方案。

为了隐藏由于组件或通信失败而导致的计划外停机,Oracle 提供了:

TAC 或 AC 还会在计划内维护期间执行,这些会话在分配的耗尽间隔内不会耗尽(完成其当前数据库操作)。

应用程序配置核对清单

您可以按照以下准则使应用程序持续可用:

提示:有关使用自治 AI 数据库为应用实现持续可用性的优秀实践,请参阅 ATP 直接白皮书中的应用持续可用性

使用数据库服务进行连接

数据库服务可为底层基础设施提供透明度:FAN、连接数据、透明应用连续性 (Transparent Application Continuity,TAC)、应用连续性 (Application Continuity,AC)、切换、使用者组以及许多其他特性和操作都依赖于服务的使用。

专用 Exadata 基础结构上的自治 AI 数据库提供多种预定义数据库服务供您选择,如自治 AI 数据库的预定义数据库服务名称中所述。所有这些都提供 FAN 和排空功能,并且两个事务处理对默认启用了 TAC。API 可用于更改所有预定义服务的 TAC 或 AC 设置(请参见 Enable Service Attributes for Failover )。

配置连接字符串以实现高可用性

Oracle 建议在连接到 Oracle Autonomous AI Database 时使用如下所示的连接字符串配置。以这种方式配置 Oracle 提供的 tnsnames.ora 文件中嵌入的连接字符串。请勿在客户端上使用轻松连接命名,因为此类连接没有高可用性功能。

对所有 Oracle 客户机版本 12.2 或更高版本使用此 TNS:

alias =
(DESCRIPTION =
(CONNECT_TIMEOUT= 120)(RETRY_COUNT=20)(RETRY_DELAY=3)(TRANSPORT_CONNECT_TIMEOUT=3)
 (ADDRESS_LIST =
   (LOAD_BALANCE=on)
   (ADDRESS = (PROTOCOL = TCP)(HOST=*scan-host*)(PORT=1521)))
 (CONNECT_DATA=(SERVICE_NAME = *service-name*)))

使用 Oracle 驱动程序版本 12.1 或更低版本的 JDBC 连接使用以下项

alias =
(DESCRIPTION =
(CONNECT_TIMEOUT= 15)(RETRY_COUNT=20)(RETRY_DELAY=3)
(ADDRESS_LIST =
  (LOAD_BALANCE=on)
  (ADDRESS = (PROTOCOL = TCP)(HOST=*scan-host*)(PORT=1521)))
(CONNECT_DATA=(SERVICE_NAME = *service-name*)))

使用快速应用通知 (FAN)

FAN 在发生服务中断或恢复时立即向应用程序发出通知。如果没有 FAN,应用程序可能会在硬件和网络故障后挂起 TCP/IP 超时,并在资源恢复时省略重新平衡。所有 Oracle 池和所有 Oracle 应用服务器都使用 FAN。第三方 JAVA 应用服务器可以使用 UCP 启用 FAN。

无需更改应用程序即可使用 FAN。这些仅是配置更改。

如需在计划内维护期间持续服务,请使用 FAN:

如需在计划外停机期间持续服务,请使用 FAN:

FAN 保险范围

FAN 事件与以下各项集成:

在客户机中启用 FAN

使用 Configure Connection String for High Availability 中显示的 TNS 别名。此连接字符串用于在使用 Oracle Database 12c 或更高版本的客户机驱动程序时,在客户机上自动配置 Oracle Notification Service (ONS) 订阅以接收 FAN 事件。ONS 在数据库层和客户机层之间提供安全通信路径,允许向客户机通知服务可用性(停止或启动的组件)以及运行时负载平衡建议,以便在正常运行期间更好地放置工作。

根据客户机,在应用程序配置属性中启用 FAN,如下所示:

预定义的数据库服务提供使用基于 TLS wallet 的验证的 TCPS 连接。根据应用程序的类型(JDBC 或 Oracle Call Interface),钱包配置必须遵循特定规则,如 Configure Clients for FAN Including Optional Wallets 中所述。

使用建议的练习来允许排水

应用使用情况的最佳做法是检查连接所需的时间,然后在当前操作完成时将其重新检入池。这对于实现良好的性能、在运行时重新平衡工作以及在维护窗口期间排空工作非常重要。

Oracle 建议使用可识别 FAN 的 Oracle 连接池来隐藏计划的维护。当您的应用程序使用具有 FAN 的 Oracle 池并在请求之间返回到池的连接时,不会对用户产生任何影响。您无需对应用程序进行任何更改即可使用 FAN。当 Oracle 连接池在计划内停机时收到 FAN 事件时,它会将实例中的所有连接标记为耗尽。立即关闭检入连接,以便不重新使用这些连接。当使用中的连接返回到池时,它们将被关闭。这允许随着时间的推移正常关闭所有连接。

如果您使用的是基于 Java 的第三方应用服务器,则实现排空和故障转移的最有效方法是将池化数据源替换为 UCP。许多应用服务器支持此方法,包括 Oracle WebLogic Server、IBM WebSphere、IBM Liberty、Apache Tomcat、Red Hat WildFly (JBoss)、Spring、Hibernate 等。来自 Oracle 和其他提供商(例如 IBM)的白皮书介绍了如何将 UCP 与这些应用服务器结合使用。使用 UCP 作为数据源,可以将 UCP 功能(例如快速连接故障转移、运行时负载平衡、应用程序连续性和透明应用程序连续性)用于完全认证。

启用透明应用连续性 (Transparent Application Continuity,TAC) 或应用连续性 (Application Continuity,AC)

TAC 透明地跟踪和记录会话和事务状态,以便可以在可恢复的中断后恢复数据库会话。预定义数据库服务的两个事务处理对默认启用了 TAC。

AC 是可定制的,允许您选择重放副作用或在 TAC 不允许的故障转移时添加复杂的回调。如果使用的是 Oracle 12c 驱动程序(JDBC-thin 或 Oracle Call Interface),或者要使用副作用或回调进行定制,或者具有使用会话持续时间临时表等状态且不跨请求进行清理的应用程序,请使用 AC。

使用透明应用程序连续性的步骤

使用应用程序连续性的步骤

相关内容