升级数据库

将实例升级到 Db2® V 11.5之后,必须升级每个实例下的每个数据库。

准备工作

  • 请确保您具有 SYSADM 权限。
  • 确保已对要升级的所有本地数据库进行编目。
  • 确保已备份数据库,如 Db2 服务器的升级前任务中所指示。
  • 确保已安装 Db2 V 11.5 并将实例升级到 Db2 V 11.5


限制

过程

要将 Db2 数据库升级到 Db2 V 11.5:

  1. 以实例所有者或具有 SYSADM 权限的用户身份登录到 Db2 服务器。
  2. 可选: 重命名或删除 db2diag 日志文件,以便创建新文件。 此外,除去 diagpath 参数所指示的目录中的任何现有转储文件、陷阱文件和警报日志文件,或者将这些文件移至另一个目录。 这样,文件中将只包含有关升级过程的信息,这些信息可以帮助您找出和了解在数据库升级期间可能遇到的任何问题。
  3. 可选: 发出 db2 LIST DATABASE DIRECTORY 命令以确保数据库位于当前实例中所有已编目数据库的列表中。
  4. 使用 UPGRADE DATABASE 命令升级数据库:
       db2 UPGRADE DATABASE database-alias USER username USING password
    其中 database-alias 是要升级的数据库的名称或别名以及用于认证具有 SYSADM 权限的用户的用户名和密码。

    要避免自动重新绑定的开销,请考虑使用 REBINDALL 参数,它指定升级期间对所有程序包都执行 REBIND

  5. 如果 UPGRADE DATABASE 命令失败并返回带有描述失败原因的原因码的 SQL1704N 错误消息,请找到此 SQL 错误代码,并从每个原因码的可能解决方案列表中确定要执行的操作。
    导致升级失败的一种最常见原因是日志文件空间不够大,在这种情况下将返回以下错误:
    SQL1704N  Database upgrade failed.  Reason code "3". 
    必须 增大日志文件大小 ,然后再次执行 UPGRADE DATABASE 命令。 完成数据库升级之后,重置数据库配置参数 logfilsizlogprimarylogsecond 的值。

    数据库升级不支持 UPGRADE DATABASE 命令在特定情况下返回的其他错误代码。 这些情况在 升级限制中进行了描述。

  6. 如果 UPGRADE DATABASE 命令返回 SQL1243W 警告消息,那么必须删除或重命名 SYSTOOLS.DB2LOOK_INFO 表。
    否则,ALTER TABLE 和 COPY SCHEMA 语句将运行失败。
    通过运行以下命令检查 SYSTOOLS.DB2LOOK_INFO 表是否存在:
       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
  7. 如果 UPGRADE DATABASE 命令返回 SQL1499W 警告消息并将包含所有详细信息的 ADM7535W 警告消息写入管理通知日志,那么该命令无法刷新目录表中的表空间属性。
    但是,已成功升级数据库。
  8. 如果 UPGRADE DATABASE 命令返回 SQL1499W 警告消息并将包含所有详细信息的 ADM4003E 警告消息写入管理通知日志,那么由于存储过程中发生错误,该命令无法升级 Db2 文本搜索目录或索引。
  9. 如果 UPGRADE DATABASE 命令返回 SQL1499W 警告消息并将包含所有详细信息的 ADM7534W 警告消息写入管理通知日志,那么该命令无法刷新目录表中的表空间属性。
    但是,已成功升级数据库。
  10. 如果 UPGRADE DATABASE 命令返回 SQL1499W 警告消息并将 ADM4102W 警告消息写入管理通知日志,请在 SQL 语句中使用引号将称为 NULL 的标识限定或定界,以避免与 NULL 关键字冲突。
  11. 如果 UPGRADE DATABASE 命令返回 SQL1499W 警告消息并将 ADM4102W 警告消息写入管理通知日志,请在 SQL 语句中使用引号将称为 NULL 的标识限定或定界,以避免与 NULL 关键字冲突。

    如果您对 SQL 语句中的列名、例程参数名或变量名使用了未用引号完全限定或定界的 NULL 标识,那么此标识名可能会被解析为 NULL 关键字。 这将导致行为与先前发行版中的行为不同。 有关详细信息,请参阅 数据库应用程序的升级要点

  12. 如果 UPGRADE DATABASE 命令返回 SQL1499W 警告消息并将 ADM9516W 警告消息写入管理通知日志,请验证 indexrec 配置参数是否设置为 RESTART ,并发出 RESTART DATABASE 命令以在数据库升级期间重建标记为无效的索引。
    否则,当您首次访问表时将开始重建索引,并且您可能会遇到响应时间意外延长。
  13. 如果 UPGRADE DATABASE 命令返回 SQL0473N 错误消息,那么必须 撤销数据库迁移 并重新创建所有用户定义的数据类型,这些数据类型使用具有不受限制的其他名称的系统内置数据类型名称。

    为避免 UPGRADE DATABASE 命令失败,请在 验证数据库是否已准备好进行升级期间重新创建这些用户定义的数据类型。

  14. 如果 UPGRADE DATABASE 命令返回 DBT5512 错误消息,那么该命令无法升级数据库,因为工作负载管理对象的标识与系统保留的标识冲突。 要升级数据库,请执行下列操作:
    1. 通过发出带有 -wlm 参数的 db2look 命令,生成 DDL 语句以重新创建工作负载管理对象。
    2. 从数据库中删除所有工作负载管理对象。
    3. 解决 db2ckupgrade 命令报告的所有问题,并阻止升级数据库。
    4. 升级数据库。
    5. 通过发出使用 db2look 命令生成的 DDL 语句,在升级后的数据库中重新创建工作负载管理对象。
  15. 如果 UPGRADE DATABASE 命令返回 SQL1700N 错误消息,那么必须 撤销数据库迁移 并重新创建使用具有不受限制的模式名称的受限模式名称的数据库对象。

    为避免 UPGRADE DATABASE 命令失败,请在 验证数据库是否已准备好进行升级 期间重新创建这些数据库对象

    .
  16. 如果 UPGRADE DATABASE 命令返回 ADM4003E 错误消息,请手动升级 Db2 文本搜索目录和索引。
    有关详细信息,请参阅 SYSTS_UPGRADE_CATALOGSYSTS_UPGRADE_INDEX
  17. 将完成升级之后的数据库配置设置与升级数据库之前的配置设置进行比较。 验证下列设置和数据库信息是否相同:
    • 数据库配置参数设置
    • 表空间信息
    • 仅适用于应用程序的程序包信息

    不需要检查系统生成的程序包的程序包信息。 可以在升级之后更改有关由系统生成的程序包的信息。
  18. 验证数据库升级是否成功。 连接至已升级的数据库并发出以下简单查询:
       db2 connect to sample
    
         Database Connection Information
    
        Database server        = DB2/AIX64 11.5.0.0
        SQL authorization ID   = TESTDB2
        Local database alias   = SAMPLE
    
       db2 select * from syscat.dbauth
    或者,如果已安装样本文件,请运行 testdata.db2 脚本:
       cd samplefile-dir-clp
       db2 connect to sample
       db2 -tvf testdata.db2
    其中 samplefile-dir-clpDB2DIR/samples/clp on Linux® and UNIX and DB2DIR\samples\clp on Windows , DB2DIR 表示在 Db2 V 11.5 安装期间指定的位置,样本是数据库名称。

后续操作

升级 Db2 数据库后,执行建议的 升级后任务 以确保数据库升级成功。