【发布时间】:2017-10-16 06:17:15
【问题描述】:
是否可以在不创建辅助表的情况下对 Oracle 中的现有表进行分区?
还是建议先创建一个包含所有分区的第二个表,然后复制第一个表中的所有内容?
我有表't1':
CREATE TABLE t1 (
id INT NOT NULL,
accountnumber VARCHAR NOT NULL,
yr_qtr INT NOT NULL
)
yr_qtr 有 15 个不同的值。
我想根据 int 的 yr_qtr 对表“t1”进行分区(或使用 yr_qtr 分区创建“t2”)。
【问题讨论】:
-
你能试试这个吗:
ALTER TABLE t1 MODIFY PARTITION BY RANGE (yr_qtr) INTERVAL (1) ( PARTITION P1 VALUES LESS THAN (2) /*add as per requirement (15 as you said) */ ) ONLINE; -
此外,yr_qtr 数字将随着时间的推移而不断增长。所以可能需要某种“自动”分区。目前这些是 yr_qtr 的值:20141, 20142, 20143, 20144, 20141, 20152, 20153, 20154, 20161, 20162, 20163, 20164, 20171, 20172, 20173, 2014 2018 2018 2018 2 ...
-
已包含 INTERVAL PARTITION。如果有的话,也要注意索引。
-
试过上面的查询:
ALTER TABLE t1 MODIFY PARTITION BY RANGE (yr_qtr) INTERVAL (1) ( PARTITION P1 VALUES LESS THAN (2) ) ONLINE;错误:ORA-14006: invalid partition name 14006. 00000 - "invalid partition name" *Cause: a partition name of the form <identifier> is expected but not present. *Action: enter an appropriate partition name. -
我跑得很好@(Oracle Live SQL)
标签: sql oracle database-design partitioning