oracle 分区表转换,Oracle 12.2之后ALTER TABLE .. MODIFY转换非分区表为分区表

本文介绍如何使用Oracle19.5通过ALTERTABLE...MODIFY命令将非分区表转换为分区表的方法,并详细记录了从创建测试表、插入数据到添加主键约束与索引的过程。同时,还提供了收集统计信息及查询索引状态的操作步骤。

Oracle 12.2之后ALTER TABLE .. MODIFY转换非分区表为分区表

发布时间:2020-08-08 06:57:47

来源:ITPUB博客

阅读:77

作者:你好我是李白

说明

本文将包含如下内容:

ORACLE 19.5 测试ALTER TABLE ... MODIFY转换非分区表为分区表

创建测试表

CREATE TABLE TEST_MODIFY(ID NUMBER,NAME VARCHAR2(30),STATUS VARCHAR2(10));

插入30万数据

declare

v1 number;

begin

for i in 1..300000

loop

execute immediate 'insert into test_modify values(:v1,''czh'',''Y'')' using i;

end loop;

commit;

end;

/

添加主键约束与索引

ALTER TABLE TEST_MODIFY ADD CONSTRAINT PK_TEST_MODIFY PRIMARY KEY(ID);

CREATE INDEX IDX_TEST_MODIFY ON TEST_MODIFY(CASE STATUS WHEN 'N' THEN 'N' END);

收集统计信息

exec dbms_stats.gather_table_stats(OWNNAME=>'CZH',TABNAME=>'TEST_MODIFY',cascade=>TRUE);

查询索引状态

14:56:06 CZH@czhpdb > select INDEX_NAME,NUM_ROWS,LEAF_BLOCKS,status from user_indexes where index_name in ('IDX_TEST_MODIFY','PK_TEST_MODIFY');

INDEX_NAME                                           NUM_ROWS                              LEAF_BLOCKS STATUS

-------------------- ---------------------------------------- ---------------------------------------- ----------

IDX_TEST_MODIFY                                             0                                        0 VALID

PK_TEST_MODIFY                                         300000                                      626 VALID

转换ALTER TABLE ... MODIFY

ALTER TABLE TEST_MODIFY MODIFY

PARTITION BY RANGE (ID)

( PARTITION P1 VALUES LESS THAN (100000),

PARTITION P2 VALUES LESS THAN (200000),

PARTITION P3 values less than (maxvalue)

) ONLINE

UPDATE INDEXES;

查询索引状态

14:57:11 CZH@czhpdb > select INDEX_NAME,NUM_ROWS,LEAF_BLOCKS,status from user_indexes where index_name in ('IDX_TEST_MODIFY','PK_TEST_MODIFY');

INDEX_NAME                                           NUM_ROWS                              LEAF_BLOCKS STATUS

-------------------- ---------------------------------------- ---------------------------------------- ----------

IDX_TEST_MODIFY                                             0                                        0 VALID

PK_TEST_MODIFY                                         300000                                      626 N/A

/* PK_TEST_MODIFY状态N/A说明有索引子分区,说明pk索引转换成了local,普通索引转换成了global index */

索引转换官方文档说明

If you do not specify the INDEXES clause or the INDEXES clause does not specify all

the indexes on the original non-partitioned table, then the following default

behavior applies for all unspecified indexes.

– Global partitioned indexes remain the same and retain the original partitioning

shape.

– Non-prefixed indexes become global nonpartitioned indexes.

Prefixed indexes are converted to local partitioned indexes.

Prefixed means that the partition key columns are included in the index

definition, but the index definition is not limited to including the partitioning

keys only.

– Bitmap indexes become local partitioned indexes, regardless whether they are

prefixed or not.

Bitmap indexes must always be local partitioned indexes.

• The conversion operation cannot be performed if there are domain indexes

参考文档:

Oracle® Database VLDB and Partitioning Guide

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值