DBUpgrade 故障诊断

此命令会升级数据库。如果在运行此命令时出现异常,可以将日志级别更改为 FINEST,然后重新运行该命令,以对问题进行诊断。

将日志级别更改为 FINEST,如“对迁移进行故障诊断”中所述。再次运行该命令之后,请检查名为 DBUpgrade_timestamp.log 的日志文件。 该文件位于 deployment_manager_profile/logs/ 中。 如果您无法找到问题的原因,可以向 IBM 支持人员提供日志。

该命令会从 migration.properties 文件中的 target.config.property.file 属性所指定的属性文件中读取拓扑信息。该命令会从 WebSphere® Application Server 数据源读取数据库信息,因此,如果在运行 DBUpgrade 时发现使用了错误的数据库连接,请检查数据源配置是否正确。

DBUpgrade 命令会自动升级 Process Server 和 Performance Data Warehouse 的模式和数据(DB2 for z/OS 数据库除外)。如果您的源版本为 WebSphere Process ServerIBM® BPM Advanced,那么它还会更新 Business Process Choreographer 数据库中的拓扑信息。
要点: 对于 DB2 for z/OS 数据库,必须手动完成 Process Server 和 Performance Data Warehouse 的模式升级。

DB2 SQL 错误

如果您在运行 DB2,那么 DBUpgrade 命令可能会失败,并出现以下数据库异常:
Error executing SQL statement: DB2 SQL Error: SQLCODE=-964, SQLSTATE=57011, SQLERRMC=null
当数据库事务日志已满时,会出现该错误。请增加数据库事务日志的大小,然后重新运行 DBUpgrade 命令。

数据库定制

如果您定制了 Process Server 数据库以调优性能,那么运行 DBUpgrade 命令时可能会出现异常。 例如,如果您向表中的列添加了索引,那么该命令还会尝试添加一个索引,并且会显示类似以下异常的数据库异常(针对 Oracle):
ORA-01408: such column list already indexed
您必须先删除定制的索引,然后重新运行 DBUpgrade

最好在运行迁移之前进行检查,查看在已定制的内容和 DBUpgrade 执行的操作之间是否存在冲突。 如果存在冲突,那么在运行该命令前移除定制。对于 DBUpgrade 所进行的模式更改,请参阅 upgradeSchema_ProcessServer.sql 文件。 该文件位于 target_deployment_manager_profile/dbscripts/Upgrade/de_name/database_type/ProcessServer_database_name中。

在文件中查找与您的源相对应的阶段。每个阶段均以 /* START of phase ProcUpgradeToversion */ 开头,并以 /* END of phase ProcUpgradeToversion */ 结尾。 如果源版本为 V7.5.1,那么该数据库会先升级到 V8.0.0,然后升级到 V8.0.1。然后,数据库将更新至 V8.5.0,最后更新至 V8.5.5。在此情况下,您应通读文件中的这三个阶段。

没有足够的磁盘空间来运行命令

如果您有大量数据,那么运行 DBUpgrade 命令时,可能会出现磁盘空间不足。该命令会迁移 LSW_BPD_INSTANCE_DATA, LSW_TASK_EXECUTION_CONTEXT 表中的 BLOB 数据,还会重新组织数据库。它所需的磁盘空间约为原始数据库的两倍。

DB2
对于 DB2 数据库,出现的错误可能类似以下错误:
Executing upgrade step: Enable LOGGED for LOB columns
Error executing SQL statement: DB2 SQL Error: SQLCODE=-2216, SQLSTATE=01H52, SQLERRMC=-289, DRIVER=4.11.69
SQL statement that failed: call sysproc.admin_cmd('reorg table LSW_BPD_INSTANCE_DATA')
请确保在数据库表空间磁盘上有足够的可用空间。
Oracle
对于 Oracle 数据库,出现的错误可能类似以下错误:
java.sql.BatchUpdateException: ORA-01653: unable to extend table schema_name.LSW_TASK_EXECUTION_CONTEXT by 1024 in tablespace tablespace_name
如果表空间大小设置为 AUTOEXTEND,请确保在表空间磁盘上有足够的可用磁盘空间。 如果表空间大小未设置为 AUTOEXTEND,那么可能需要调整大小或者添加其他数据文件。

内存不足错误

如果您遇到了表示数据记录过多或过大的内存不足错误,那么可以针对 DBUpgrade 命令增加 JVM 的堆大小,或者降低要批量更新的记录数。
  • 要增加 DBUpgrade 的堆大小,您可以在 BPM_home/util/dbUpgrade/upgrade.properties 文件中进行配置。 例如:
    JVM_HEAPSIZE_OPTIONS="-Xms512m -Xmx2048m"
    $JAVA_EXE $JVM_HEAPSIZE_OPTIONS -cp $CLASSPATH
    或者,也可以在创建 Java 进程时增加堆大小,如下所示。 例如:
    %JAVA_HOME%\bin\java" -Xms512m -Xmx2048m
  • 为了降低要批量更新的记录数,请配置 BPM_home/util/dbUpgrade/upgrade.properties 文件中 database.batch.size 的值。 例如:
    database.batch.size=1000
    降低此值会需要更少内存,但也会降低性能。

性能低下

如果您要从低于 V8.0 的版本进行迁移时遇到了性能低下的问题,并且如果发现数据库服务器输入和输出没有问题,那么可以尝试增加线程数量,以处理 Java 对象的序列化和反序列化以及数据库的更新。请完成下列步骤:
  1. 打开 BPM_home/util/dbUpgrade/upgrade.properties 文件。
  2. 增加 worker.thread.size 属性的值。 缺省情况下,此值为 1。线程的最大数量取决于安装了 IBM Business Process Manager 的操作系统的处理器数量。