create table t1 (id int primary key, memo varchar2(16), created date)
partition by range (created) (
partition t1_part_2020 values less than (date'2021-01-01'),
partition t1_part_2021 values less than (maxvalue))
/
insert into t1
select rownum, 'memo row '||rownum, date'2020-01-01'+(rownum-1)
from dual connect by level<=999
/
commit;
select table_name, partitioned
from user_tables where table_name='T1'
/
TABLE_NAME PARTITIONED
---------- ------------
T1 YES
ALTER TABLE命令没有modify_to_partitioned子句的反向类似物。
一种可能的替代方法是使用PARTITION_OPTIONS=merge选项导出/导入。
表格示例:
出口也不例外。接下来,应该删除表(不要忘记备份!!!):
使用合并分区的选项导入:
另一种解决方案是使用 DBMS_REDEFINITION 包在线重组表,这会将其停机时间减少到几分钟。
为此,检查重组表的可能性,并使用目标表的结构创建内部表,在我们的例子中没有分区:
接下来的步骤包括:运行重组、复制所有依赖项、错误检查和可选的同步表:
重组完成后,目标表将被锁定几分钟。然后,完全匹配内部表的结构,后者可以删除: