首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Oracle PL/SQL中使用ONLINE将非分区表转换为已分区表

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

Stack Overflow用户
提问于 2019-08-27 14:29:14
回答 2查看 1.3K关注 0票数 2

我知道,因为我们不能将现有的非分区表转换为分区表,但下面来自Oracle的链接表明,在"ONLINE“关键字的帮助下,我们可以做到这一点。

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

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-27 23:08:10

如果您使用的是Oracle 12c Release 2,则可以使用单个ALTER将未分区的表转换为分区的表:

代码语言:javascript
复制
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;
票数 0
EN

Stack Overflow用户

发布于 2020-02-11 23:22:07

在不使用dbms_redefinition的情况下,在Oracle Database 12c Release 1 (12.1.0.2.0)上,您的选择可能仅限于创建与原始表具有相同结构的新分区表,并复制数据、创建索引、约束等。

代码语言:javascript
复制
    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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57668785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档