使用exchange 和split partition 来将一个Oracle非分区表转换为分区表
来源:互联网 发布:笔记记录软件 编辑:程序博客网 时间:2024/06/05 03:48
在线重定义表可以将一个非分区表转换成一个分区表。使用exchange 和split partition 也可以将一个非分区表转换为分区表。后者相比较前者,因为不受要转换的数据量影响,因此也更方便、快捷一些。
exchange partition 操作能将一个分区表的一个分区和另一张表的数据互换,这里的互换是segment 头部信息的修改,数据block 并不做改动,因此,和数据量无关,速度会非常快;完成后,再可以按照需要将分区具体split 成其他多个分区。
总的有三个步骤:
1.建立一个空的,只有一个分区的同构分区表
2.exchange partition with table 来互换数据
3.split 分区表的分区为合适的个数
举例如下:
-- 建立空的分区表
create table test_part
partition by range ( created )
( partition all_data values less than (MAXVALUE))
as select owner,object_name,object_type,created from test2 where 1=2;
-- 执行exchange partition 操作
SQL> alter table test_part exchange partition all_data with table test2 ;
Table altered
SQL> select * from test_part where rownum<4; --分区表中有数据了,原表没有了数据
OWNER OBJECT_NAME OBJECT_TYPE CREATED
------------------------------ -------------------------------------------------------------------------------- ------------------ -----------
SYS I_CDEF1 INDEX 2000-5-12 1
SYS IND$ TABLE 2000-5-12 1
SYS FILE$ TABLE 2000-5-12 1
SQL> select * from test2 where rownum<4;
OWNER OBJECT_NAME OBJECT_TYPE CREATED
------------------------------ -------------------------------------------------------------------------------- ------------------ -----------
SQL>
-- split range 分区
SQL> alter table test_part split partition all_data AT (to_date('20070101','YYYYMMDD')) into ( partition before_2007 , partition after_2007 ) ;
Table altered
SQL>
SQL> select table_name,partition_name,high_value,composite,subpartition_count from user_tab_partitions;
TABLE_NAME PARTITION_NAME HIGH_VALUE COMPOSITE SUBPARTITION_COUNT
------------------------------ ------------------------------ -------------------------------------------------------------------------------- --------- ------------------
TEST_PART AFTER_2007 MAXVALUE NO 0
TEST_PART BEFORE_2007 TO_DATE(' 2007-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA NO 0
SQL>
--对 exchange partition with table 操作做了10046 trace,分析trace 可以看出,这个ddl 操作实际上递归出了若干个dml,正是这些dml ,直接修改了某些头部信息,完成了所谓的数据互换工作
- 使用exchange 和split partition 来将一个Oracle非分区表转换为分区表
- 使用exchange 和split partition 来将一个Oracle非分区表转换为分区表
- 使用exchange 和split partition 来将一个非分区表转换为分区表
- 将mysql非分区表转换为分区表
- 联机将非分区表转换为分区表
- 将非分区表转换为分区表
- 将mysql非分区表转换为分区表
- MaxCompute分区表和非分区表使用对比
- 非分区表转换为分区表(非联机)
- oracle分区表之交换分区 altertable exchange partition with table
- oracle分区表之交换分区 altertable exchange partition with table
- oracle分区表之交换分区 altertable exchange partition with table
- oracle分区表之交换分区 altertable exchange partition with table
- oracle 分区表exchange原理
- 关于非分区表转换分区表
- Oracle 将普通表转换为分区表
- Oracle 分区表(Partition)
- ORACLE 分区表 PARTITION table
- Box2D v2.1.0用户手册(12)——其它
- SqlServer取出多个字段列中的最大值和最小值
- Python语言(八)函数式编程
- 多播(组播)
- CPoint
- 使用exchange 和split partition 来将一个Oracle非分区表转换为分区表
- 初学者对bootstrap感觉,弹出框和进度条的使用
- Myeclpse里的jsp页面:Invalid result location value/parameter
- mvc4设置伪静态---路由伪静态
- B. Little Dima and Equation
- Solr问题处理(总结版)
- Mysql:is not allowed to connect to this MySQL server
- Python编程中常用的12种基础知识总结
- 解决Struts2配置文件无提示问题