Oracle 12.2新特性----在线把非分区表转为分区表
Oracle 12.2引入了一个新特性,即在线把非分区表转为分区表。在以前的版本中,要把一个非分区表转为分区表,需要使用复杂的操作,比如先创建一个分区表,再把数据从非分区表中导入到分区表中。这种操作不仅繁琐,还需要离线操作,对于一些大型数据库来说,成本很高。而在Oracle 12.2中,这一问题得到了很好的解决,可以在线实现非分区表向分区表的转换。
在线把非分区表转为分区表的步骤如下:
1. 创建一个分区表空间。
首先需要创建一个分区表空间,在这个空间下创建分区表。可以使用以下语句来创建分区表空间。
CREATE TABLESPACE my_tablespace
DATAFILE '/u01/app/oracle/oradata/ORCL/my_tablespace.dbf'
SIZE 100M AUTOEXTEND ON NEXT 100M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M
SEGMENT SPACE MANAGEMENT AUTO;
2. 在分区表空间下创建分区表。
下一步需要在分区表空间下创建分区表。可以使用以下语句来创建分区表,并把数据从非分区表中导入到分区表中。
CREATE TABLE my_partitioned_table
PARTITION BY RANGE (order_date) (
PARTITION p1 VALUES LESS THAN (TO_DATE('01-01-2016','DD-MM-YYYY')),
PARTITION p2 VALUES LESS THAN (TO_DATE('01-01-2017','DD-MM-YYYY')),
PARTITION p3 VALUES LESS THAN (TO_DATE('01-01-2018','DD-MM-YYYY')),
PARTITION p4 VALUES LESS THAN (MAXVALUE)
)
AS SELECT * FROM my_non_partitioned_table;
3. 删除非分区表。
最后一步是删除非分区表,可以使用以下语句来删除非分区表。
DROP TABLE my_non_partitioned_table;
以上三个步骤就可以在线实现非分区表向分区表的转换。这种方式操作简单,不需要离线,对于一些大型数据库来说,成本很低。总之,Oracle 12.2引入的在线把非分区表转为分区表的新特性,为数据库管理员提供了一种更加高效的管理表格结构的方式。
