oracle - 在 Oracle PL/SQL 中使用 ONLINE 将非分区表转换为分区表

标签 oracle database-partitioning

我了解到我们无法将现有的非分区表转换为分区表,但来自 Oracle 的以下链接建议在“ONLINE”关键字的帮助下我们可以做到这一点。

https://docs.oracle.com/en/database/oracle/oracle-database/12.2/vldbg/evolve-nopartition-table.html#GUID-5FDB7D59-DD05-40E4-8AB4-AF82EA0D0FE5

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

最佳答案

如果您使用的是 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;

关于oracle - 在 Oracle PL/SQL 中使用 ONLINE 将非分区表转换为分区表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57668785/

相关文章:

java - 如何在jsp中显示数据库中最后创建的图像

oracle - 在具有索引结构的大型表上改进 DELETE 和 INSERT 时间

java - 将二进制存储到 BLOB 中

java - Oracle 中没有序列的@GenelatedValue

database - Oracle - "record"常量

oracle - PIVOT,如何将非指定行转换为列?

mysql - Ruby on Rails/ActiveRecord 和表分区

mysql - 将表从主 MySQL 服务器动态分区到远程 MySQL 服务器

sql - Postgres - 分区表中的近似行数

mysql - 如何从已截断的 Mysql 5.6 分区中清除数据?