示例:Oracle 数据库和 SAP R/3

以下两个例子说明了要使应用程序 Oracle Database 和 SAP R/3 在 PowerHA® SystemMirror® 下运行良好需要考虑的问题。

示例 1:Oracle 数据库

Oracle Database 和许多数据库一样,在 PowerHA SystemMirror 下运行良好。 这个强大的应用程序也能很好地处理故障。 它可以在故障转移后回滚未落实的事务并及时返回到服务状态。 不过,在 PowerHA SystemMirror 下使用 Oracle Database 时需要注意一些事项。

启动 Oracle

必须以 Oracle 用户标识启动 Oracle。 这样,启动脚本应包含以下代码:su - oracleuser。 短横线 (-) 很重要,因为 su 命令需要具备 Oracle 用户的所有特性并位于 Oracle 用户主目录中。 该命令将类似以下内容:

su - oracleuser -c /apps/oracle/startup/dbstart

dbstart 命令和 dbshut 命令读取 /etc/oratabs 文件中有关哪些数据库实例已知且应启动的指示信息。 在某些情况下,启动所有实例是不正确的,因为它们可能由其他节点拥有。 两个 Oracle 实例相互接管就属于这种情况。 oratabs 文件通常位于内部磁盘上,因此无法共享。 在适当的情况下,请考虑其他启动不同 Oracle 实例的方法。

停止 Oracle

应特别关心 Oracle 停止过程。 有多种不同方法可确保 Oracle 已完全停止。 建议顺序如下:首先,执行正常关闭;其次,立即调用 shutdown,此方法具有一定的强制性;最后,创建一个循环来检查进程表,以确保所有 Oracle 进程均已退出。

Oracle 文件存储

Oracle 产品数据库包含一些文件和数据。 需要将数据和重做日志存储在共享磁盘上,以便两个节点都可以访问信息。 但是,Oracle 二进制文件和配置文件可以位于内部或共享磁盘上。 请考虑最适合您环境的方法。

示例 2:SAP R/3,多层应用程序

SAP R/3 是三层应用程序的一个示例。 它具有数据库层、应用程序层和客户机层。 最常见的情况是使数据库层具有高可用性。 在此情况下,当发生故障转移并且数据库重新启动时,需要停止并重新启动 SAP 应用程序层。 您可用以下两种方式之一来完成此操作:

  • 使用远程执行命令,例如 rshrexecssh
    注: 某些方法 (例如使用 ~/.rhosts 文件) 会造成安全风险。
  • 使应用程序层节点可感知集群。

使用远程执行命令

停止和启动 SAP 应用程序层的第一种方式是创建可在应用程序节点上执行远程命令执行的脚本。 SAP 的应用程序层将停止,然后会重新启动。 将对应用程序层中的每个节点执行此过程。 使用远程执行命令需要允许数据库节点可访问应用程序节点的一种方法。

注: 某些方法 (例如使用 ~/.rhosts 文件) 会造成安全风险。

使应用程序层节点可感知集群

停止和启动应用程序层的第二种方法是使应用程序层节点可感知集群。 这意味着应用程序层节点可感知到集群化数据库并了解发生故障转移的时间。 您可以通过让应用层节点成为 PowerHA SystemMirror 服务器或客户端来实现这一点。 如果应用程序节点是服务器,那么它将运行与数据库节点相同的集群事件来指示发生故障。 然后,可以编写前置事件和后置事件脚本来停止和重新启动 SAP 应用程序层。 如果应用节点是 PowerHA SystemMirror 客户端,它会通过群集信息守护进程 (Clinfo) 使用 SNMP 收到数据库切换的通知。 可以使用 Clinfo API 编写一个程序来停止和重新启动 SAP 应用程序层。