Oracle 12c 新特性 --- 将非分区表在线转换到分区表

Oracle 12c 新特性 --- 将非分区表在线转换到分区表可以将非分区表转换为在线分区表。索引作为该操作的一部分被维护,也可以被分区。转换对正在进行的DML操作没有影响。--限制:. 有一些与此功能相关的限制。. 它不能被用来分割一个索引有序的表(IOT)。. 如果表有域索引,就不能使用它。. 您只能在脱机模式下将表转换为reference-partitioned子表。--实验:--1.创建表并插入数据,创建索引drop table t1;CREATE TABLE t1 (id
摘要由CSDN通过智能技术生成

Oracle 12c 新特性 --- 将非分区表在线转换到分区表

可以将非分区表转换为在线分区表。索引作为该操作的一部分被维护,也可以被分区。转换对正在进行的DML操作没有影响。

--限制:
. 有一些与此功能相关的限制。
. 它不能被用来分割一个索引有序的表(IOT)。
. 如果表有域索引,就不能使用它。
. 您只能在脱机模式下将表转换为reference-partitioned子表。



--实验:

--1.创建表并插入数据,创建索引
drop table t1;
CREATE TABLE t1 (
id NUMBER,
description VARCHAR2(50),
created_date DATE,
CONSTRAINT t1_pk PRIMARY KEY (id)
);

CREATE INDEX t1_created_date_idx ON t1(created_date);
CREATE INDEX t1_description ON t1(description);

INSERT INTO t1
SELECT level,
'Description for ' || level,
ADD_MONTHS(TO_DATE('01-JAN-2017', 'DD-MON-YYYY'), -TRUNC(DBMS_RANDOM.value(1,4)-1)*12)
FROM dual
CONNECT BY level <= 1000;

COMMIT;



--2 我们可以看到数据被分配在3个时间段内。
SELECT created_date, COUNT(*) FROM t1 GROUP BY created_date ORDER BY 1;

CREATED_DATE COUNT(*)
------------ ----------
01-JAN-15 322
01-JAN-16 355
01-JAN-17 323

--3 分区表 我们可以使用ALTER TABLE ... MODIFY将表转换为分区表。下面是这个操作的一些基本示例。添加online关键字允许在线完成操作。

--3.1 基本的离线操作。
ALTER TABLE t1 MODIFY
PARTITION BY RANGE (created_date) (
PARTITION t1_part_2015 VALUES LESS THAN (TO_DATE('01-JAN-2016','DD-MON-YYYY')),
PARTITION t1_part_2016 VALUES LESS THAN (TO_DATE('01-JAN-2017','DD-MON-YYYY')),
PARTITION t1_part_2017 VALUES LESS THAN (TO_DATE('01-JAN-2018','DD-MON-YYYY'))
);

COLUMN table_name FORMAT A20
COLUMN partition_name FORMAT A20
SELECT table_name, partition_name FROM user_tab_partitions where TABLE_NAME ='T1' ORDER BY 1,2;

TABLE_NAME PARTITION_NAME
-------------------- --------------------
T1 T1_PART_2015
T1 T1_PART_2016
T1 T1_PART_2017

--检查转分区之后,索引状态
col index_name for a30
select index_name,status from user_indexes where index_name in ('T1_PK','T1_CREATED_DATE_IDX','T1_DESCRIPTION');
INDEX_NAME STATUS
------------------------------ --------
T1_CREATED_DATE_IDX

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值