分类:
2008-04-16 11:56:07
管理分区表
这个实验将查看如何管理和操作分区表:
|
|
|
Alter
语句将一个新的分区连接(转入)到现有的 LINEITEM 表。
|
|
describe data partitions
命令来说明为 LINEITEM 表创建的分区范围:
|
AccessMode 可能的值有:
Status 可能的值有:
select count
语句来检查连接语句涉及的两个表中数据的可用性。
|
|
|
set integrity
语句 。
|
|
SET INTEGRITY
对于检查新连接的数据是否在范围内是必需的,它还执行对索引和其他独立对象(例如物化查询表)所有必需的维护工作。只有得到 SET INTEGRITY
语句的允许,新的数据才能变为可见。然而,当运行 SET INTEGRITY
时,可以对 LINEITEM 表中的现有数据进行完全访问,包括读和写操作。
用户应该执行 SET INTEGRITY
事务从而能够使用整个表。当运行 SET INTEGRITY
时,不能够对表执行 DDL 或其他实用类型的操作。
在这个练习中,在 NP_LINEITEM 表中创建并被连接到 LINEITEM 表的所有的行,都在连接语句指定的范围内。如果这些行中存在超出此范围的行,则需要在 SET INTEGRITY
语句中创建一个异常表来防止语句发生错误。所以推荐您始终在 SET INTEGRITY
语句中包含一个异常表。如果没有提供异常表的话,SET INTEGRITY
语句发现的错误将导致语句失败并且所有的工作都必须从头做起。如果使用大量数据时,这可能是一个长期操作。有一点值得注意,如果 SET INTEGRITY
操作失败,所有工作都需要重做,与之相比较,LOAD
仅仅抛弃存在问题的行。
select count
SQL 以检查连接的分区中数据的可用性:
|
SET INTEGRITY
操作后,LINEITEM 表应包含 PartitionId 4 的数据。
describe data partitions show detail
命令来标识一个分区的 PartitionName,您将把这个分区从 LINEITEM 分区表中分离(转出)出来。
|
DETACH
操作中使用它来标识被转出的分区。同样还需注意成功执行了 SET INTEGRITY
操作后,分区 JAN1994 的 AccessMode 的值为 ‘F’,Status 值为空。TableSpId、PartObjId 和 LongTblSpId 的结果可能和这里显示的不一样。
Alter
语句将 JAN1992 从 LINEITEM 表中分离(转出)。
|
|
DETACH
操作中没有涉及数据移动,并且位于相同表空间的新表的行为和它作为 LINEITEM 分区表的一部分时是一样的。此时不需要对 LINEITEM 表运行 SET INTEGRITY
语句,因为没有对 LINEITEM 表定义的 MQTs。
还有一点值得注意,如果从 Multi-Dimensional Clustering(MDC)分离一个分区从而创建了一个新表时,这个表也将是一个 MDC。这个规则同样适用于下面这个情况:从一个分布式表中分离分区从而在相同的分区组创建分布式表。执行 DETACH
操作后产生的表使用 MDC 索引定义而不是其他的索引。对于 MDC,在首次访问连接的表时将重新构建索引。在这种情况下,将自动对分离的分区进行索引清除操作。将从执行 DETACH
操作的用户 ID 继承索引的模式、权限和表空间。
select count
语句检查 DETACH
语句涉及的两个表中的数据的可用性。
|
|
|
describe data partitions show detail
命令来检验 PartitionName 为 JULY1994 的分区是否被添加到 LINEITEM 中:
|