传统:
释放用于持久存储案例文档和案例文件夹属性的数据库表中的空间,使您能够定义新属性并将其添加到案例文档和案例文件夹类。
准备工作
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 文档库 中除去未使用的属性,并 (可选) 删除关联的数据库列,请完成以下步骤:
- 运行 cleanupDocumentStoreProperties 命令。
例如,要从集群
myClusterName 上的文档库中移除首字母缩略词为
MYAPP 的应用程序的所有未使用属性,请输入以下命令:
AdminTask.cleanupDocumentStoreProperties('[-clusterName myClusterName -containerAcronym MYAPP]')
如果未找到未使用的属性,那么命令会输出以下消息:
CWTDS2050I: No property was deleted.
否则,对于每个删除的属性
property,命令会输出以下消息:
CWTDS2049I: The property 'property' was deleted.
- 可选: 除去已删除属性的数据库列。
提示: 每次除去未使用的属性时,都不需要除去数据库列。 但是,经过一段时间后,列的数目可能会超出表行大小限制。 在该步骤完成这些操作有助于避免达到该限制。
- 停止 Workflow Center 应用程序,以确保文档库上没有用户活动。
要点: 此过程改变了对象存储数据库,因此没有用户访问该数据库很重要。
- 确定您要清除哪些表。
您可以清除以下任何表:
重要信息: 您不必检查或清除所有表。 但是,如果您决定删除表上任何未使用的列,那么必须删除所有未使用的列。
- 对于要清除的每个表,显示不再由任何属性使用的所有数据库列的名称。
在相应的数据库工具中输入以下命令。
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。
- 删除在步骤 2.c中从查询中显示和检查的表的所有未使用列。
- DB2® 程序
- 如果表具有多行,那么此过程会花费很长时间。 请确保具有足够的磁盘空间用于日志记录。
- 启动 DB2 控制中心。
限制: 无法以编程方式删除列。
- 在 " 变更 " 面板上,选择 移除。
- 选择要除去的列。 控制中心会显示一条警告消息,表明该操作涉及诸如重命名表、重新创建表和复制数据之类的操作。
提示: 有关使用 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 是表的名称, ColumnName1, ColumnName2, ...
表示在步骤 2.c中标识的列名的列表。提示: 您可以使用
CHECKPOINT 选项来减小撤销日志的大小。
CHECKPOINT 选项会在处理了指定行数后强制创建一个检查点。 以下示例说明如何删除未使用的列,并在每处理 250 行后就创建一个检查点。
ALTER TABLE TableName DROP UNUSED COLUMNS CHECKPOINT 250;
- 如果使用 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)
- 重新启动 Workflow Center。
This topic only applies to BAW, and is located in the BAW repository. Last updated on 2025-01-20 10:38