Oracle9i以上版本,利用在线重定义功能 SQL> CREATE TABLE T (ID NUMBER PRIMARY KEY, TIME DATE);
Table created
SQL> INSERT INTO T SELECT ROWNUM, CREATED FROM DBA_OBJECTS;
52276 rows inserted
SQL> commit;
Commit complete
SQL> EXEC DBMS_REDEFINITION.CAN_REDEF_TABLE(USER, 'T', DBMS_REDEFINITION.CONS_USE_PK);
PL/SQL procedure successfully completed
SQL>
SQL> CREATE TABLE T_NEW (ID NUMBER PRIMARY KEY, TIME DATE) PARTITION BY RANGE (TIME)
2 (PARTITION P1 VALUES LESS THAN (TO_DATE('2004-7-1', 'YYYY-MM-DD')),
3 PARTITION P2 VALUES LESS THAN (TO_DATE('2006-7-1', 'YYYY-MM-DD')),
4 PARTITION P3 VALUES LESS THAN (TO_DATE('2008-7-1', 'YYYY-MM-DD')),
5 PARTITION P4 VALUES LESS THAN (MAXVALUE));
Table created
SQL> EXEC DBMS_REDEFINITION.START_REDEF_TABLE(USER, 'T', 'T_NEW', 'ID ID, TIME TIME', DBMS_REDEFINITION.CONS_USE_PK);
PL/SQL procedure successfully completed
SQL> EXEC DBMS_REDEFINITION.FINISH_REDEF_TABLE('landuser', 'T', 'T_NEW');
PL/SQL procedure successfully completed
SQL> SELECT COUNT(*) FROM T PARTITION (P2);
COUNT(*)
----------
49697
SQL> SELECT COUNT(*) FROM T PARTITION (P4);
COUNT(*)
----------
2579
SQL>
优点:保证数据的一致性,在大部分时间内,表T都可以正常进行DML操作。只在切换的瞬间锁表,具有很高的可用性。这种方法具有很强的灵活性,对各种不同的需要都能满足。而且,可以在切换前进行相应的授权并建立各种约束,可以做到切换完成后不再需要任何额外的管理操作。
不足:实现上比上面两种略显复杂。
适用于各种情况。
这里只给出了在线重定义表的一个最简单的例子,详细的描述和例子可以参考下面两篇文章。
Oracle的在线重定义表功能:http://blog.itpub.net/post/468/12855
Oracle的在线重定义表功能(二):http://blog.itpub.net/post/468/12962
分享到:
相关推荐
主要介绍了oracle普通表转化为分区表的方法,官方给出了四种操作方法,本文主要对第四种方法进行详细分析,需要的朋友可以参考下。
BLOG_如何将一个普通表转换为分区表.pdfBLOG_如何将一个普通表转换为分区表.pdf
分区表的修复分区表的修复分区表的修复分区表的修复
oracle非常详细的将普通表转成分区表的方式
一个大型表的分区表改造方案以及详细步骤。
db2分区表在线迁移 db2分区表在线迁移 db2分区表在线迁移
Oracle数据库分区表操作方法Oracle数据库分区表操作方法
硬盘分区表详解 硬盘分区表详解 硬盘分区表详解 硬盘分区表详解
用于手动编写硬盘的分区表 用于手动编写硬盘的分区表 用于手动编写硬盘的分区表
SCI期刊分区表是中国科学院文献情报中心组织相关学科资深专家,以当年SCI期刊的影响因子为主要依据,结合该期刊在本学科的影响度,将各学科的全部SCI期刊分为1区(最高区)、2区、3区和4区等4个等级。有个别期刊在...
MS SQL Server:分区表...分区一方面可以将数据分为更小、更易管理的部分,为提高性能起到一定的作用;另一方面,对于如果具有多个CPU的系统,分区可以是对表的操作通过并行的方式进行,这对于提升性能是非常有帮助的。
oracle 分区表管理oracle 分区表管理oracle 分区表管理oracle 分区表管理oracle 分区表管理
Hash分区是Oracle实现表分区的三种基本分区方式之一。对于那些无法有效划分分区范围的大表,或者出于某些特殊考虑的设计,需要使用Hash分区,下面介绍使用方法
恢复分区表问题恢复分区表问题恢复分区表问题恢复分区表问题
硬盘分区表详解硬盘分区表详解硬盘分区表详解硬盘分区表详解
SQL2008分区操作详解 1.分区表介绍 2.创建分区表 3.操作分区表 4.将普通表转换为分区表. 5.分区表建立
Oracle分区表详解 大家可以参考下 网上找的资料共享一下
oracle分区表总结oracle分区表总结oracle分oracle分区表总结区表总结oracle分区表总结
我自己做的一个表格,基于海思hi3516C板子,MTD分区表。对于一些不会怎么修改内核大小以及文件大小后,怎么调整MTD表很有帮助哦。
项目中有需求要垂直分表,即按照时间区间将数据拆分到n个表中,PostgreSQL提供了分区表的功能。分区表实际上是把逻辑上的一个大表分割成物理上的几小块,提供了很多好处,比如: 1、查询性能大幅提升 2、删除历史...