清除 BPM 文档库

Draft comment:
This topic only applies to BAW, and is located in the BAW repository. Last updated on 2025-01-20 10:38
传统:
释放用于持久存储案例文档和案例文件夹属性的数据库表中的空间,使您能够定义新属性并将其添加到案例文档和案例文件夹类。

准备工作

cleanupDocumentStoreProperties 命令用于帮助清除 BPM 文档库。 使用 wsadmin 脚本编制客户机的 AdminTask 对象来运行此命令。 要运行此命令,必须满足以下条件:

  • 该命令必须在 Deployment Manager 节点上运行。
  • 一个或多个应用程序集群成员必须正在运行。
  • 该命令必须在已连接方式下运行。 请勿指定 wsadmin -conntype none 选项。
  • 您必须使用具有 WebSphere® Application Server 操作员权限的用户 ID 连接到部署管理器。

从 Deployment Manager 概要文件的 profile_root/bin 目录启动 wsadmin 脚本编制客户机。 cleanupDocumentStoreProperties 命令不会写入日志文件,但 wsadmin 脚本编制客户机始终会写入 profile_root/logs/wsadmin.traceout 日志文件,您将在其中找到异常堆栈跟踪和其他信息。

关于本任务

cleanupDocumentStoreProperties 命令会删除当前在案例和文档类中指定但不再使用的所有属性。 (未使用的属性是在流程应用程序或 Toolkit 的任意分支中任何命名的 Snapshot 或 TIP 中不再引用的属性)。 除去这些属性之后,此命令还会除去任何未使用的属性模板。

过程

要从特定应用程序的 BPM 文档库 中除去未使用的属性,并 (可选) 删除关联的数据库列,请完成以下步骤:

  1. 运行 cleanupDocumentStoreProperties 命令。
    例如,要从集群 myClusterName 上的文档库中移除首字母缩略词为 MYAPP 的应用程序的所有未使用属性,请输入以下命令:
    AdminTask.cleanupDocumentStoreProperties('[-clusterName myClusterName -containerAcronym MYAPP]')
    重要信息: 您可以指定部署环境或服务器和节点,而不是指定集群。 有关该命令的更多信息,包括各种 Jython 和 Jacl 示例,请参阅 cleanupDocumentStoreProperties 命令
    如果未找到未使用的属性,那么命令会输出以下消息:
    CWTDS2050I: No property was deleted.
    否则,对于每个删除的属性 property,命令会输出以下消息:
    CWTDS2049I: The property 'property' was deleted.
  2. 可选: 除去已删除属性的数据库列。
    提示: 每次除去未使用的属性时,都不需要除去数据库列。 但是,经过一段时间后,列的数目可能会超出表行大小限制。 在该步骤完成这些操作有助于避免达到该限制。
    1. 停止 Workflow Center 应用程序,以确保文档库上没有用户活动。
      要点: 此过程改变了对象存储数据库,因此没有用户访问该数据库很重要。
    2. 确定您要清除哪些表。
      您可以清除以下任何表:
      • DocVersion
      • Container
      重要信息: 您不必检查或清除所有表。 但是,如果您决定删除表上任何未使用的列,那么必须删除所有未使用的列。
    3. 对于要清除的每个表,显示不再由任何属性使用的所有数据库列的名称。
      在相应的数据库工具中输入以下命令。
      select column_name from ColumnDefinition
             where lower(dbg_table_name) = lower('TableName')
             and is_system_owned = 0
             and object_id not in (select column_id from PropertyDefinition where column_id is not null)
      其中 TableName 是表的名称。
      要点: 对于返回的每个列,请验证其名称是否为 prefix_propertyName,其中 propertyName 是未使用的属性名称,例如 u5c_myString
    4. 删除在步骤 2.c中从查询中显示和检查的表的所有未使用列。
      DB2® 程序
      1. 如果表具有多行,那么此过程会花费很长时间。 请确保具有足够的磁盘空间用于日志记录。
      2. 启动 DB2 控制中心。
        限制: 无法以编程方式删除列。
      3. 在 " 变更 " 面板上,选择 移除
      4. 选择要除去的列。 控制中心会显示一条警告消息,表明该操作涉及诸如重命名表、重新创建表和复制数据之类的操作。
        提示: 有关使用 Control Center 删除列的更多信息,请参阅 DB2 文档。
      SQL Server 过程
      对于 SQL Server,无需任何操作。
      Oracle 过程
      请完成下列其中一个步骤:
      • 如果您的表不大,请在步骤 2.c 中确定的每个表 TableName 上的每个列 ColumnName 输入以下命令,单独删除每个未使用的列:
        alter table TableName drop column ColumnName;
        提示: 如果表有许多行,那么此步骤可能需要很长时间。 请确保具有大量的撤销表空间磁盘空间可用。
      • 如果您的表很庞大,那么一次性删除未使用的列会更容易,因为每个操作都会花费很长时间。 对每个表输入以下命令:
        ALTER TABLE TableName SET UNUSED (ColumnName1, ColumnName2, ...);
        ALTER TABLE TableName DROP UNUSED COLUMNS;
        其中 TableName 是表的名称, ColumnName1ColumnName2, ... 表示在步骤 2.c中标识的列名的列表。
        提示: 您可以使用 CHECKPOINT 选项来减小撤销日志的大小。 CHECKPOINT 选项会在处理了指定行数后强制创建一个检查点。 以下示例说明如何删除未使用的列,并在每处理 250 行后就创建一个检查点。
        ALTER TABLE TableName DROP UNUSED COLUMNS CHECKPOINT 250;
    5. 如果使用 DB2 或 Oracle,则在每个表 表名 中删除所有未使用的列,然后在 ColumnDefinition 表中删除受影响的行:
      delete from ColumnDefinition where lower(dbg_table_name) = lower('TableName') 
             and is_system_owned = 0
             and object_id not in (select column_id from PropertyDefinition where column_id is not null)
    6. 重新启动 Workflow Center