推迟分配 Db2 管理的数据集

当您使用 USING STOGROUP 子句执行 CREATE TABLESPACE 语句时, Db2 通常会为表空间定义必要的 VSAM 数据集。 但是,您可能希望定义一个表空间,但不立即分配相关数据集。

关于本任务

例如,您可能正在安装一个需要创建许多表空间的软件程序,但您的公司可能并不需要使用其中的一些表空间。 对于不使用的表空间,您可能会选择不分配数据集。

在以下情况下,建议推迟分配数据集:
  • CREATE TABLESPACE语句的性能非常重要
  • 磁盘资源有限

过程

开始通用编程接口信息。推迟 Db2 管理的数据集的物理分配:

使用DEFINE NO子句发出CREATE TABLESPACE语句。

某些 Db2 对象允许使用“定义无”子句,例如明确创建的LOB表空间、辅助索引和XML索引。 此外,IMPDSDEF子系统参数指定了 Db2 是否为隐式创建的表空间和索引空间定义了基础数据集。 当您将子系统参数指定为“否”时,在隐式创建表空间或索引空间时,数据集不会被定义。

限制 :工作文件数据库中的表格空间或用户定义的数据集不允许使用“定义无”条款。 (对于用户定义的数据集,使用CREATE TABLESPACE语句中的USING VCAT子句创建表空间)。

如果您打算使用 Db2 以外的工具将数据传播到表空间中的数据集,请不要在表空间中使用“定义无”子句。 当您使用“定义否”时, Db2 目录会显示数据集尚未分配给该表空间。 然后,如果数据从 Db2 之外的工具传播到表空间中的数据集,则 Db2 目录信息不会反映数据集已被分配的事实。 由此导致的不一致性导致 Db2 拒绝应用程序访问数据,直到不一致性得到解决。

结果

表空间已创建,但 Db2 不会分配(即定义)相关数据集,直到在该表空间中的表中插入或加载一行。 Db2 目录表 SYSIBM.SYSTABLEPART 包含已创建表空间的记录,并指示数据集尚未分配。 通用编程接口信息结束。