级别: 中级 Judith Myerson (jmyerson@bellatlantic.net), 系统工程师及架构师
2007 年 10 月 12 日 了解如何开发 Web 服务,以在不会导致系统过载的前提下让 SAP 与 IBM® DB2®(或 DB2 9)及 Oracle 通信。本文提供了示例,可帮助说明如何在开发流程中使用 IBM WebSphere® MQ。
引言
通常说来,管理 DB2-SAP 系统比管理 Oracle-SAP 系统更为简单些。DB2 针对运行 SAP 应用程序进行了优化。对于 SAP 应用程序,DB2 完成了存储优化,可在需要时动态分配存储空间,在不需要时释放空间。与此相对,成千上万的 Oracle 表和索引都是预先分配的,但决不会用于运行 SAP 应用程序的每个模块。
在 DB2 中,性能优化主要针对大型数据库,如 SAP Business Information Warehouse (BIW);而 SQL 优化的目标则是为了缩短查询时间。Oracle 性能相对较低,因为存在不必要的预先分配的表。
虽然 Oracle 迁移成功完成,但大部分开发人员都不愿意放弃 Oracle 而转而使用 DB2。当涉及的数据达到数千兆字节时,没有任何迁移工具集能完全解决复杂的迁移问题。您可能需要以编程方式修复其余的迁移问题。数据库备份和恢复方式的区别也增加了迁移的复杂性。
SAP R/3 回顾
SAP 产品作为应用程序分发,而每个应用程序内包含若干功能模块。这些模块执行具体的业务任务,如资本投资管理、人力资源管理和质量管理等。主要包括财务、人力资源和后勤方面的应用程序。
除了基本的业务功能外,SAP 还提供以下领域的产品:
- 业务智能
- 供应链管理
- 客户关系管理
- 电子商务
- 人力资源
- 国债
- 房地产
- 环境、健康与安全
SAP 还通过其 BIW 和 Supply Chain Optimization, Planning and Execution (SCOPE) 产品提供了数据仓库功能。
SAP 自定义
SAP 应用程序允许最终用户为整个业务运行 SAP,也可以仅为特定业务流程(如制造或金融)运行 SAP。SAP 客户可以对 SAP 安装进行自定义,添加新数据库实体和通过更改现有数据库实体添加新功能。例如,公司可以对基本 SAP 功能进行修改,以满足库存方法特定的需求。
虽然自定义 SAP 可以在为每个 SAP 安装指定配置时具有很大的灵活性,但这会带来很高的升级成本。对于每次 SAP 升级,您需要使用高级业务应用程序编程(Advanced Business Application Programming,ABAP)代码来对每个自定义进行标识,并将这些更改应用到升级后的 SAP 软件。
WebSphere MQ
除了 SAP 自定义外还有一大堆工作要做。为此,请考虑使用 WebSphere MQ,这是一款多平台中间件产品,可发送和接收 SAP 应用程序的消息。
可以使用 WebSphere MQ 实现 Web 服务,并支持将异类网络(例如,Linux® 服务器上的 Oracle 和 Microsoft® Windows® 平台上的 DB2)上的 Web 服务和应用程序进行集成。通过使用 WebSphere MQ,可以开发 Web 服务来支持 SAP 与 DB2 及 Oracle 进行通信,以异步方式接收所请求的信息。
消息故障
在开始讨论如何使用 WebSphere MQ 前,让我们先了解一下 WebSphere MQ 故障响应消息。可以使用 WebSphere MQ 接收关于数据库故障的通知。并非所有的数据库故障都需要进行人工交互。例如,语句、流程和数据库实例故障就不需要管理员干预。而另一方面,用户错误和媒体故障则需要管理员进行交互。通过还原脱机或联机备份并使用回滚操作来恢复日志,就可处理这些故障。
语句故障
当由于以下原因之一而导致应用程序中出现逻辑错误时,就出现了语句故障:
- 语句在无限循环中运行
- 没有正确权限的用户需要执行某个任务
- 由于空间不足而导致插入故障
出现故障时,至少需要进行以下任务:
- 添加更多磁盘空间
- 修复应用程序逻辑
- 分配恰当的用户权限
流程和数据库实例
对于流程和数据库实例故障,可以通过确认已将 database configuration auto restart 设置为 ON(缺省情况下,自动重启已启用)来启用自动故障恢复功能。当用户、服务器或后台流程由于异常终止或从这些流程断开而失败时,就出现了流程故障。失败的流程会导致任务无法继续。
数据库实例故障 通常是由于操作系统崩溃或断电造成的。在 DB2 中,当数据库管理器和内存结构由于电源故障、磁盘损坏或网络故障而无法使用时,需要使用故障恢复功能来将 DB2 恢复到一致且可用的状态。可以发出命令 RESTART
DATABASE 来手动重启数据库。
用户错误
用户错误故障需要管理员干预。在执行有效但有破坏性语句的情况下会出现用户错误,如删除整个工资单表、丢弃索赔表或者甚至无意中丢弃整个数据库,从而导致数据库应用程序长时间停机。数据定义语言(Data Definition Language,DDL)语句是不能回滚的语句,因此如果用户错误涉及到 DDL,则需要采取恰当的措施恢复数据库。
媒体故障
媒体故障 出现在有人意外从系统删除数据库文件时。整个硬盘的数据文件全部不可用,导致无法访问数据或数据被破坏。这种类型的故障比之前所讨论的类型更为严重。
通常媒体故障是由于数据文件完全丢失或系统更改编号(System Change Number,SCN)时间戳与数据库的其余部分不同步造成的。由于媒体故障是所有故障类型中最为复杂的,因此必须采用考虑周全的战略制定相应的计划。
发布/订阅消息
为了让 SAP 与 DB2 及 Oracle 通信,您需要开发三个 Web 服务:SAP、DB2 和 Oracle。以下是工作流流程的序列,从 Web 服务客户机开始:
- Web 服务客户机向 SAP Web 服务发送 MQ 消息,以与 DB2 及 Oracle 通信。
- SAP Web 服务将消息转发到预期的接收方。
- 在指示已接收到所请求消息的事件时,DB2 Web 服务向 SAP 发送响应,然后发送所请求信息的状态。与此类似,在指示已接收到所请求消息的事件时,Oracle Web 服务向 SAP 发送响应,然后发送所请求信息的状态。
如果在 DB2 或 Oracle Web 服务发送信息时出现延迟,SAP Web 服务客户机将进入等待模式。仅 DB2 发回所请求的信息时,会将其放入消息队列中。当 SAP Web 服务从 Oracle 接收信息时,会从队列中提取此 DB2 消息。最后,SAP Web 服务筛选、比较和评估信息,然后通过 SAP Web 客户机将其发送到 SAP 应用程序。
与多个发布者通信
在前一场景中,SAP Web 服务涉及到一个或多个订阅所选主题的订阅者。DB2 和 Oracle Web 服务都是发布者,向主题的所有订阅者发送包含该主题的信息的警报和消息。SAP Web 服务也可以成为关于其他主题的信息的发布者。
由于 DB2 和 Oracle Web 服务都是发布者,因此可以使用代理来处理主题的所有订阅者,而不用知道这些订阅者的细节。代理 存储关于哪些订阅者订阅了哪些主题以及如何向其交付消息的信息。发布者不知道自己有多少订阅者。由于这一点,发布/订阅消息实现了信息提供者(发布者)和信息使用者(订阅者)的完全分离。
查询与业务关键型数据
通过消息队列基础设施的数据可以大致分为两类:查询和业务关键型数据。查询数据 是通过系统发送的临时数据,派生自安全存储在系统中的数据。如果查询丢失,对该信息的请求者可能不太方便,但原始数据保留在系统中,可以再次进行请求。
业务关键型数据 是不存储在系统其他地方的数据。如果此数据丢失,就丢失了系统中的重要信息或状态的更改。由于通过消息队列基础设施的大部分消息都包含业务关键型数据,因此务必保证不会在消息队列基础设施中丢失这些消息。
QA 与生产环境
测试是开发新服务并将其部署到业务 IT 系统的过程中的一个特别重要的部分。尽早发现问题可极大减少其影响和进行纠正所需的资源。一个建议应用程序开发技巧是采用两个独立的环境:生产环境和质量保证(Quality Assurance,QA)环境。
QA 环境必须尽可能与生产环境一致,包括硬件、操作系统、基础设施软件、配置和所有服务。任何计划对生产环境进行的更改都需要在 QA 环境中开发和测试,然后才能应用到生产环境,并充分考虑在公共网络上传输的敏感信息的完整性。
结束语
为了通过使用 WebSphere MQ 让 SAP 和 DB2 及 Oracle 通信,您需要一个由开发人员、测试人员、系统管理员和潜在用户组成的团队。为了确保部署不会导致系统过载,必须事前进行计划,需在构建 SAP、DB2 和 Oracle Web 服务间的工作流流程时创建、测试和部署 Web 服务。解决这些问题后,会使得开发 Web 服务的工作变得容易得多。
参考资料 学习
获得产品和技术
讨论
关于作者  | |  | Judith M. Myerson 是系统架构师和工程师。她所致力的领域包括中间件技术、服务等级协议、法规遵循规则、企业级系统、数据库技术、应用程序开发、网络管理、安全和项目管理。 |
对本文的评价
|