将实例升级到 DB2® V9.7 之后,需要对每个实例中包含的每个数据库进行升级。
要将 DB2 数据库升级到 DB2 V9.7:
db2 UPGRADE DATABASE database-alias USER username USING password
其中 database-alias 是要对其进行升级的数据库的名称或别名,而 username 和 password 用来认证一个用户是否具有 SYSADM 权限。SQL1704N 数据库升级失败。原因码为“3”。
必须增大日志文件大小并再次执行 UPGRADE DATABASE 命令。完成数据库升级之后,将数据库配置参数 logfilsiz、logprimary 和 logsecond 的值复位。
数据库升级不支持 UPGRADE DATABASE 命令在特定情况下返回的其他错误代码。在升级限制中描述了这些情况。
db2 "SELECT tabname, tabschema, definer FROM syscat.tables
WHERE tabschema = 'SYSTOOLS' AND tabname= 'DB2LOOK_INFO' "
如果已经创建了此表,那么通过运行 RENAME 语句将它重命名: db2 RENAME SYSTOOLS.DB2LOOK_INFO TO new-table-name
如果尚未创建此表,那么通过运行 DROP 命令将它除去: db2 DROP TABLE SYSTOOLS.DB2LOOK_INFO
此命令还会生成一个名为 alter_unfenced_database-name.db2 的脚本,该脚本中的所有 SQL 语句会将数据库升级期间改变的不受防护的外部例程重新定义为 NOT FENCED 例程和 THREADSAFE 例程。将在数据库管理器配置参数 diagpath 所指定的目录中创建此脚本。如果未设置 diagpath 参数,那么将在 INSTHOME/sqllib/db2dump 目录中创建该脚本,其中 INSTHOME 是实例主目录。
如果需要将例程定义为 NOT FENCED 例程和 THREADSAFE 例程,请参阅升级 C、C++ 和 COBOL 例程以了解有关如何在新的多线程数据库管理器中安全地运行例程的详细信息,然后使用所生成的脚本来重新定义例程。
如果您对 SQL 语句中的列名、例程参数名或变量名使用了未用引号完全限定或定界的 NULL 标识,那么此标识名可能会被解析为 NULL 关键字。这将导致行为与先前发行版中的行为不同。请参阅数据库应用程序的升级基本要求 以了解详细信息。
为了避免发生此错误,请在升级实例和数据库之前执行将带有 XML Extender 的 DB2 服务器升级到 DB2 V9.7中的所有步骤,以彻底禁用 XML Extender 并除去 XML Extender 功能。
在数据库升级期间,1 类索引以及具有未能升级的索引页的索引会被标记为无效。
为了避免 UPGRADE DATABASE 命令失败,请在验证数据库是否已准备好进行升级期间重新创建这些用户定义数据类型。
为了避免 UPGRADE DATABASE 命令失败,请在验证数据库是否已准备好进行升级期间重新创建这些数据库对象
。仅适用于应用程序的程序包信息
db2 connect to sample
数据库连接信息
数据库服务器 = DB2/AIX64 9.7.0
SQL 授权标识 = TESTDB2
本地数据库别名 = SAMPLE
db2 “select * from syscat.dbauth”
或者,如果已经安装了样本文件,那么运行 testdata.db2 脚本: cd samplefile-dir-clp
db2 connect to sample
db2 -tvf testdata.db2
其中 samplefile-dir-clp 在 Linux 和 UNIX 上为 DB2DIR/samples/clp,而在 Windows 上为 DB2DIR\samples\clp;DB2DIR 表示在安装 DB2 V9.7 期间指定的位置,而 sample 是数据库名称。