关于此任务
要拆离分区表的数据分区,请发出带 DETACH PARTITION 子句的 ALTER TABLE 语句。
在以下示例中,将数据分区 dec01 从表 STOCK 中拆离并放到表 JUNK 中。确定异步分区拆离任务已经使
目标表 JUNK 可用之后,可以删除表 JUNK,从而有效地删除相关数据分区。
ALTER TABLE stock DETACH PART dec01 INTO junk;
-- After the target table becomes available, issue the DROP TABLE statement
DROP TABLE junk;
注: 为了使
ALTER TABLE...DETACH 在 DB2® 版本 9.7 FP 1 及更高发行版中尽可能快地执行,异步分区拆离任务以异步方式完成拆离操作。如果有已拆离的从属表,那么异步分区拆离任务将不会开始且已拆离数据分区不会变成独立表。在这种情况下,必须对所有已拆离的从属表发出 SET INTEGRITY 语句。在
SET INTEGRITY 完成后,异步分区拆离任务将会开始并使目标表可访问。目标表可访问时,就可以将其删除。
开始之前
要从分区表拆离数据分区,用户必须拥有下列权限或特权:
- 执行 DETACH 操作的用户必须有权对源表执行 ALTER、SELECT 和 DELETE 操作。
- 该用户还必须有权创建目标表。因此,要改变一个表以拆离数据分区,语句授权标识拥有的特权必须至少包括对目标表的下列其中一项权限或特权:
- DBADM 权限
- 对数据库的 CREATETAB 权限、对该表所使用表空间的 USE 特权以及下列其中一项权限或特权:
- 对数据库的 IMPLICIT_SCHEMA 权限(如果该表的隐式或显式模式名不存在)
- 对模式的 CREATEIN 特权(如果该表的模式名引用现有模式)
要删除表,用户必须拥有下列权限或特权:
- 您必须是 SYSCAT.TABLES 的 DEFINER 列中记录的定义者,或者至少拥有下列其中一项特权:
- DBADM 权限
- 对表模式的 DROPIN 特权
- 对表的 CONTROL 特权
注: 拆离数据分区情况的含义是,语句的授权标识实际上将要发出 CREATE
TABLE 语句,所以必须拥有执行该操作所必需的特权。表空间就是正在拆离的数据分区所在的表空间。ALTER TABLE 语句的授权标识将成为新表的定义者(具有 CONTROL 权限),就像是该用户发出了 CREATE TABLE 语句一样。不会将所改变的表的任何特权传递至新表。只有 ALTER TABLE 语句的授权标识以及 DBADM 或
SYSADM 才有权在 ALTER TABLE ...DETACH PARTITION 操作执行后立即访问数据。