我知道,因为我们不能将现有的非分区表转换为分区表,但下面来自Oracle的链接表明,在"ONLINE“关键字的帮助下,我们可以做到这一点。
CREATE TABLE my_tab ( a NUMBER(38,0), b NUMBER(38,0));
ALTER TABLE MY_TAB MODIFY PARTITION BY RANGE (a) INTERVAL (1000) (
PARTITION p1 VALUES LESS THAN (1000)) ONLINE;但它对我不起作用,抛出的错误是“无效的分区名称”。
我不想使用dbms_redefinition。
发布于 2019-08-27 23:08:10
如果您使用的是Oracle 12c Release 2,则可以使用单个ALTER将未分区的表转换为分区的表:
CREATE TABLE my_tab ( a NUMBER(38,0), b NUMBER(38,0));
ALTER TABLE MY_TAB MODIFY PARTITION BY RANGE (a) INTERVAL (1000) (
PARTITION p1 VALUES LESS THAN (1000)) ONLINE;发布于 2020-02-11 23:22:07
在不使用dbms_redefinition的情况下,在Oracle Database 12c Release 1 (12.1.0.2.0)上,您的选择可能仅限于创建与原始表具有相同结构的新分区表,并复制数据、创建索引、约束等。
CREATE TABLE my_tab_part -- new partitioned table
PARTITION BY RANGE (a)
INTERVAL ( 1000 )
(PARTITION p1 VALUES LESS THAN (1000))
AS
SELECT * FROM my_tab;https://stackoverflow.com/questions/57668785
复制相似问题