MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 数据库 / 正文

Oracle 表分区在线重定义

2024-11-26 19:41 huorong 数据库 6 ℃ 0 评论

表分区有以下优点:

a、改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度。

b、增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用;

c、维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可;

d、均衡I/O:可以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能。

缺点:

分区表相关:已经存在的表没有方法直接转化为分区表。不过 Oracle 提供了在线重定义表的功能。操作步骤如下:

1、建立测试表

CREATE TABLE T(ID NUMBER ,TIME DATE);

INSERT INTO T SELECT ROWNUM,CREATED FROM ALL_OBJECTS;

建立主键

alter table t add constraint pk_t primary key(id);

2、建立中间表及分区

CREATE TABLE T_NEW 
(
ID NUMBER PRIMARY KEY, TIME DATE
) 
        PARTITION BY RANGE (TIME)
         (
         PARTITION T_2017 VALUES LESS THAN (TO_DATE('2018-1-1', 'YYYY-MM-DD')),
         PARTITION T_2018 VALUES LESS THAN (TO_DATE('2019-1-1', 'YYYY-MM-DD')),
         PARTITION T_2019 VALUES LESS THAN (TO_DATE('2020-1-1', 'YYYY-MM-DD')),
         PARTITION T_2020 VALUES LESS THAN (TO_DATE('2021-1-1', 'YYYY-MM-DD')),  
         PARTITION T_2021 VALUES LESS THAN (TO_DATE('2022-1-1', 'YYYY-MM-DD')),
        PARTITION T_2022 VALUES LESS THAN (TO_DATE('2023-1-1', 'YYYY-MM-DD'))
         );

3、在线重新定义操作

exec dbms_redefinition.start_redef_table('LC0019999','T','T_NEW');
select mview_name from user_mviews;

4、执行重定义后的分区数据同步

 exec dbms_redefinition.sync_interim_table('LC0019999','T','T_NEW');

5、完成在线重定义操作

EXEC DBMS_REDEFINITION.FINISH_REDEF_TABLE('LC0019999','T','T_NEW');

6、查询表的分区

SELECT * FROM useR_TAB_PARTITIONS WHERE TABLE_NAME='T';

结束:对于已经存在的表进行表分区,按照以上步骤操作完全没有问题,这也是DBA在实际工作中经常处理的问题。

Tags:表分区 oracle

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言