在Oracle12c当中可以在线移动分区。这里我们先随便建一个分区表,来试验这个新特性。
SQL> select TABLE_NAME,PARTITION_NAME,COMPRESS_FOR,READ_ONLY from dba_tab_partitions where TABLE_NAME='T1';
TABLE_NAME PARTITION_NAME COMPRESS_FOR READ
------------------------------ ------------------------------ ------------------------------ ----
T1 T_RANGE_P1 NO
T1 T_RANGE_P2 NO
T1 T_RANGE_P3 NO
T1 T_RANGE_PMAX NO
SQL> select segment_name,partition_name,bytes/1024/1024 from dba_segments where segment_name='T1';
SEGMENT_NAME PARTITION_NAME BYTES/1024/1024
------------------------------ ------------------------------ ---------------
T1 T_RANGE_P1 192
T1 T_RANGE_P2 104
T1 T_RANGE_P3 104
T1 T_RANGE_PMAX 104
直接对其中一个分区进行压缩并在线移动。
alter table T1 move partition T_RANGE_P1 row store compress basic online;
在压缩的过程中对这个分区进行增删改查的操作均不受影响。
同时在有一些情况下,我们可以对单独的分区设置成read only。一般业务都有一定程度的需求,比如:1.历史数据太大,需要存很久,这个时候,压缩就是一个不错的选择。2.历史数据只是做查询用,不涉及修改和删除。所以Oracle在12c推出的这两个功能和业务贴合的更加紧密了。
SQL> select TABLE_NAME,PARTITION_NAME,COMPRESS_FOR,READ_ONLY from dba_tab_partitions where TABLE_NAME='T1';
TABLE_NAME PARTITION_NAME COMPRESS_FOR READ
------------------------------ ------------------------------ ------------------------------ ----
T1 T_RANGE_P1 BASIC YES
T1 T_RANGE_P2 NO
T1 T_RANGE_P3 NO
T1 T_RANGE_PMAX NO
设置成read only之后,该分区就不能做修改操作了。
分享到:
更多