DB2 10.5 for Linux, UNIX, and Windows

删除存储器路径

可从存储器组中删除一个或多个存储器路径,也可从存储器路径中移出数据并进行重新平衡。

开始之前

要确定永久表空间是否在使用该存储器路径,请使用 ADMIN_GET_STORAGE_PATHS 管理视图。此视图显示有关每个存储器组的存储器路径的当前信息。存储器路径可以处于三种状态的其中一种:
NOT_IN_USE
此存储器路径已被添加到数据库,但尚未被任何表空间使用。
IN_USE
一个或多个表空间已将容器置于此存储器路径中。
DROP_PENDING
已发出 ALTER STOGROUP stogroup_name DROP 语句以删除该路径,但表空间仍在使用该存储器路径。表空间不再使用该路径时,会从数据库中删除该路径。

如果您删除的存储器路径上存储了数据,并且该存储器路径处于 DROP_PENDING 状态,那么必须先重新平衡使用该存储器路径的所有永久表空间,数据库管理器才能完成路径删除操作。

要获取有关特定数据库分区上的表空间的信息,请使用 MON_GET_TABLESPACE 管理视图。

限制

存储器组必须具有至少一个路径。不能删除存储器组中的所有路径。

关于此任务

如果您打算删除某条存储器路径,那么必须使用 ALTER TABLESPACE tablespace-name REBALANCE(此语句将数据从所要删除的路径中移出)对所有使用了该存储器路径的永久表空间进行重新平衡。在这种情况下,重新平衡操作会将数据从您打算删除的存储器路径移至其余存储器路径,并且会保持数据一致地在那些存储器路径之间进行条带分布,从而最大程度地提高 I/O 并行性。

过程

  1. 要从存储器组中删除存储器路径,请发出以下 ALTER STOGROUP 语句:
    ALTER STOGROUP sg DROP '/db2/filesystem1', '/db2/filesystem2'
    其中 sg 是存储器组,/db2/filesystem1/db2/filesystem2 是要删除的存储器路径。
  2. 重新平衡要删除的存储器路径的容器。要确定数据库中所有受影响永久表空间的容器都驻留在“删除暂挂”路径上,请发出以下语句:
    SELECT TBSP_NAME
       FROM table (MON_GET_TABLESPACE(' ', -2))
       WHERE TBSP_USING_AUTO_STORAGE = 1
          AND TBSP_CONTENT_TYPE IN ('ANY','LARGE')
          AND STORAGE_GROUP_NAME = 'sg'
       ORDER BY TBSP_ID
    标识表空间后,可对所列示的每个表空间执行以下语句:
    ALTER TABLESPACE tablespace_name REBALANCE
    其中 tablespace_name 是表空间。

    最后一个重新平衡操作完成后,会从存储器组中移除 /db2/filesystem1/db2/filesystem2

  3. 删除使用该存储器组的临时表空间。如果处于 DROP_PENDING 状态的表空间上存在临时表空间,那么不会删除该表空间。
  4. 重新创建使用该存储器组的临时表空间。

下一步做什么

查询 ADMIN_GET_STORAGE_PATHS 管理视图以验证已删除的存储器路径是否未再列示。如果仍列示了该存储器路径,那么表明仍有一个或多个表空间使用该路径。