IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  Information Management  >

顺利升级到 DB2 UDB FixPack 10

多花十分钟,将来更轻松

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

Paul Zikopoulos (paulz_ibm@msn.com), 高级专家,DB2 Competitive Technologies Team, IBM Toronto Lab

2005 年 10 月 24 日

您是否正在尝试将 DB2 FixPack 10 应用到 IBM® DB2® Universal Database™ for Linux®、UNIX® 和 Windows®(DB2)服务器,却收到一个 SQL0443N SQLSTATE=38553 错误?请花 10 分钟的时间阅读本文,这不仅可以帮您解决这个问题,而且让您作好将来安装该软件的准备,或许还能帮到一两个同事。

简介

IBM 最近发布了 DB2 FixPack 10(也称作 DB2 Version 8.2.3,也就是带 FixPack 3 的 DB2 Version 8.2 —— 如何称呼取决于获得产品的途径)。在我最近参与的很多客户环境中,他们在安装这个 FixPack 之后会碰到一个 SQL0443N 错误。实际上在 DB2 README 文件中有些步骤会警告这一点,并要求您在安装后执行某些任务来避免这个问题,但事实上很少有人认真阅读 README。(我想,如果它的文件名叫 DONOTREADME,用户反而会对其中的内容更加感兴趣。)

出于两个原因,我决定撰写本文:

  • 也许是想通过一种不同的媒体向您提供帮助,告诉您在将任何 DB2 FixPack 或 Update 应用到 DB2 服务器之后,应该执行一个简单的步骤。这个步骤最终可以为您节省宝贵的时间,并让您少受挫折。
  • 我自己也没有看到文档中已有的这个步骤(身为 IBM 的工作人员,对此深感惭愧),并且搞砸了一次带现场演示的演讲。

在本文中,我将对 DB2 FixPack 10(我是这样称呼它的,您也可以随意使用自己喜欢的同义词)作一个简短的概述,并描述这个问题(只影响 DB2 服务器,而不影响 DB2 客户机)、这个问题如何发生以及如何避免这个问题。花 10 分钟阅读本文,可以为您节省大量的时间。





回页首


DB2 FixPack 10 里面有什么?

顾名思义,DB2 FixPack 10 更像是一种维护,而不是提供新特性的代码。实际上,DB2 FixPack 10 并没有在 DB2 代码的基础上交付很多的新功能。但是为现有产品提供了很多的平台扩展 —— 尤其是在 Linux 领域。

具体地说,DB2 FixPack 10 包括:

  • 为使用免费的 Zend Core for IBM 工具进行 PHP 应用程序开发提供经过更新和简化的驱动程序,可以使 PHP 和 DB2 应用程序开发比以前更容易。
  • 对 DB2 Query Patroller 平台支持的一个扩充,以便为 Power5 架构上的 iSeries 和 pSeries IBM eServers 提供 Linux 上的 64 位支持。
  • 对新发布的 HP-UX Version 11.23 release on PA-RISC 的支持。
  • LOAD 实用程序的 CLI 目标列支持。
  • 新的单独定价的 DB2 Connect Unlimited Edition for iSeries 产品。
  • 用于 z/OS 上 64 位 Linux 的 31 位 DB2 Run-Time Client 的可用性。

下面的图展示了很多用于确定 DB2 服务器级别的方法:


图 1. 发现 DB2 服务器的代码级别
发现 DB2 服务器的代码级别




回页首


问题

您在自己的环境中安装了 DB2 FixPack 10 之后的某个时候,支持电话便开始响个不停。您的业务分析师在用 Microsoft Excel 执行他们的预算预测时碰到问题,并报告以下错误:


图 2. 在没有阅读 README 文件的情况下终端用户将在 Microsoft Excel 中碰到的错误
在没有阅读 README 文件的情况下终端用户将在 Microsoft Excel 中碰到的错误

此外,您的应用程序开发小组也开始打来电话,因为当他们试图用来自一个 DB2 数据库连接的模式填充某一个 IBM Rational Application Developer 数据库项目时,碰到相同的错误:


图 3. 在没有阅读 README 文件的情况下终端用户将在 IBM Rational Application Developer 中碰到的错误
在没有阅读 README 文件的情况下终端用户将在 IBM Rational Application Developer 中碰到的错误

显然这是相同的错误,作为一名称职的 DBA,您首先会查看错误描述,但是这样做收获不大:


图 4. SQL0443N 错误描述
SQL0443N 错误描述

受到挫折的您拨打一个服务电话,然后明白如果事先阅读了 README 文件(见下一小节)的话,这个问题本来是可以避免的。

您很可能正在经历的这个问题的起因是,对于这个特定的 FixPack,需要将一个新版本的连接文件重新绑定到数据库:罪魁祸首就是 @db2schema.bnd。在 DB2 FixPack 9a(以及其他较早的 FixPack 和 Update)中,绑定到数据库的相应的包是 NULLID.SQLL9E0L。而在 DB2 FixPack 10 中,这个包的名称变成了 NULLID.SQLL9E00。由于包的名称不同,在运行时搜索这个新的包时将得到一个错误,因为它没有被绑定到数据库(和在前面的例子中一样)。

大多数客户习惯于绑定 @db2ubind.lst@db2cli.lst 文件(从 DB2 Version 5.x 开始就是这样),但并不是所有时候都需要 @db2schema.bnd,很多使用 DB2 FixPack 10 的客户就是被它给绊了一跤。





回页首


解决方法 —— 多花十分钟,将来更轻松

我不是要告诉您去阅读 README 文件,如果那样做了,您就不会碰到这个问题。是的,您的确是应该阅读 README 文件,但我同样也没有阅读这个文件。我想这对于我们所有人来说都是个教训,让我们记住应该认真阅读任何产品的 README 文件,不过我已经将这一情况报告给了我们的 DB2 开发小组,发现有些步骤可以减少这种麻烦。

说了这么多,这里告诉您修复由于将 DB2 FixPack 10 应用于 DB2 服务器导致的问题的解决方法(当然是来自 README 文件):

1.3.5.5 Bind db2schema.bnd to existing databases
After installation on the server, an additional bind file needs to be
bound to existing databases. This requirement does not apply to clients.
Procedure
To bind db2schema.bnd on the server, execute one of these command
sequences: 
At a command prompt:
        db2 terminate
        db2 CONNECT TO <dbname>
        db2 BIND <path>/db2schema.bnd BLOCKING ALL GRANT PUBLIC sqlerror continue
        db2 terminate
  or,
At the DB2 command line:
        TERMINATE
        CONNECT TO <dbname>
        BIND <path>/db2schema.bnd BLOCKING ALL GRANT PUBLIC sqlerror continue
        TERMINATE  
where <dbname> represents the name of a database to which the utilities
should be bound, and where <path> is the full path name of the directory
where the bind files are located.

好消息是,您只需在自己的 DB2 服务器上执行这些命令,而不必在任何 DB2 客户机上执行这些命令。

看一下 README 文件,这个解决方法非常容易。实际上,在每个 DB2 FixPack 或 Update 之后,您都会被要求在安装之后执行重新绑定的步骤。

所以,要解决这个问题(并防止它再次发生),只需输入如下所示的来自 README 文件的命令,然后就不会再有电话打进来了:


图 5. 重新绑定 @db2schema.bnd 文件,以解决这个问题
重新绑定 @db2schema.bnd 文件,以解决这个问题




回页首


结束语

现在您知道如何快速地修复这个问题(并防止它再次发生)了,您可能想知道,为什么在之前应用于 DB2 服务器环境的一些 DB2 FixPack 或 Update 中没有碰到这种问题。

事实上,每当您将一个 FixPack 或 Update 应用于 DB2 服务器时,同时也在像 README 文件说明的那样重新绑定一些文件。所以,您在之前的 DB2 FixPack 或 Update 中没有碰到这个问题,是因为只有当包的嵌入式 SQL 代码中有一个 bug-fix 时,会导致这个问题的那个包名才会发生变化。所以,之前的 FixPack 和 Update 没有对这个包的修复,但是 DB2 FixPack 10 有。同样,将来我们会寻找更好的方法来处理这个令人讨厌的问题,但是现在请开始阅读 README 文件吧(至少我会这么做)。



参考资料

学习

获得产品和技术

讨论


关于作者

Photo: Paul C. Zikopoulos

Paul C. Zikopoulos 拥有 BA 和 MBA 学位,是 IBM Database Competitive Technology 小组的获奖作家和演讲者。他有十年以上的 DB2 UDB 经验,还撰写了六十多篇关于 DB2 的杂志文章以及一些书籍。Paul 与人合著了以下书籍:DB2 Version 8: The Official GuideDB2: The Complete ReferenceDB2 Fundamentals Certification for DummiesDB2 for DummiesA DBA's Guide to Databases Under Linux。Paul 是一位 DB2 认证的高级技术专家(DRDA 和集群/EEE 方面),以及 DB2 认证的解决方案专家(商业智能和数据库管理方面)。在空闲时,他喜欢进行各种各样的体育活动,与他的狗 Chachi 一起跑步,以及尝试了解他的小女儿 Chloe 眼中的世界。您可以通过 paulz_ibm@msn.com 与他联系。




对本文的评价

太差! (1)
需提高 (2)
一般;尚可 (3)
好文章 (4)
真棒!(5)

建议?







回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款