如何转换RANGE分区和INTERVAL RANGE分区 |
您所在的位置:网站首页 › 数据库range分区 › 如何转换RANGE分区和INTERVAL RANGE分区 |
本文介绍如何转换RANGE分区和INTERVAL RANGE分区。 RANGE分区转换为INTERVAL RANGE分区ALTER TABLE...SET INTERVAL命令可将现有的RANGE分区表转换为INTERVAL RANGE分区表。 设置范围或时间间隔后,数据库会自动创建一个指定范围或时间间隔的新分区,并将数据插入到新分区中。 命令如下: ALTER TABLE SET INTERVAL ( | );关于INTERVAL参数的信息,请参见INTERVAL RANGE分区。 INTERVAL RANGE分区转换为RANGE分区SET INTERVAL()命令用于禁用INTERVAL RANGE分区。禁用后,数据库会将INTERVAL RANGE分区表转换为RANGE分区表,并将INTERVAL RANGE分区的范围或时间间隔设置为RANGE分区的范围或时间间隔。 命令如下: ALTER TABLE SET INTERVAL (); 示例以下示例会将表sales从RANGE分区转换为INTERVAL RANGE分区,并在分区表中插入数据。 创建RANGE分区表sales。示例如下: CREATE TABLE sales ( prod_id int, prod_quantity int, sold_month date ) PARTITION BY RANGE(sold_month) ( PARTITION p1 VALUES LESS THAN('15-JAN-2019'), PARTITION p2 VALUES LESS THAN('15-FEB-2019') );查询ALL_TAB_PARTITIONS视图。示例如下: SELECT partition_name, high_value FROM ALL_TAB_PARTITIONS;返回结果如下: partition_name | high_value ----------------+---------------------- P1 | FOR VALUES FROM ('15-JAN-19 00:00:00') TO ('15-FEB-19 00:00:00') P2 | FOR VALUES FROM (MINVALUE) TO ('15-JAN-19 00:00:00') (2 rows)将RANGE分区表转换为INTERVAL RANGE分区表。示例如下: ALTER TABLE sales SET INTERVAL (NUMTOYMINTERVAL(1, 'MONTH'));插入超过范围分区的数据。示例如下: INSERT INTO sales VALUES (1,100,'05-APR-2019'); INSERT 0 1插入数据后,再次查询ALL_TAB_PARTITIONS视图。示例如下: SELECT partition_name, high_value FROM ALL_TAB_PARTITIONS;成功插入数据,系统将生成一个INTERVAL RANGE分区名称,该名称因每个会话而不同。返回结果如下: partition_name | high_value ----------------+---------------------- SYS596430103 | FOR VALUES FROM ('15-MAR-19 00:00:00') TO ('15-APR-19 00:00:00') P1 | FOR VALUES FROM ('15-JAN-19 00:00:00') TO ('15-FEB-19 00:00:00') P2 | FOR VALUES FROM (MINVALUE) TO ('15-JAN-19 00:00:00') (3 rows) |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |