12C支持在线迁移表分区和子分区,且同时可以进行DML操作
[code]SQL> create table pt_move_test(obj_id number,obj_name varchar2(32)) partition by range(obj_id)
2 (
3 partition pa values less than (1000),
4 partition pb values less than (10000),
5 partition pc values less than (maxvalue)
6* )
/
Table created.
SQL> insert into pt_move_test select object_id,object_name from dba_objects;
90919 rows created.
Elapsed: 00:00:02.75
SQL> commit;
SQL> select count(*) from pt_move_test partition(pa);
COUNT(*)
----------
996
Elapsed: 00:00:00.02
SQL> select count(*) from pt_move_test partition(pb);
COUNT(*)
----------
8962
Elapsed: 00:00:00.01
SQL> select count(*) from pt_move_test partition(pc);
COUNT(*)
----------
80961
Elapsed: 00:00:00.01
SQL> COL SEGMENT_NAME FOR A40
SQL> col PARTITION_NAME for a40
SQL> select SEGMENT_NAME,PARTITION_NAME,TABLESPACE_NAME from dba_segments where SEGMENT_NAME='PT_MOVE_TEST';
SEGMENT_NAME PARTITION_NAME TABLESPACE_NAME
----------------------- ----------------- ------------------
PT_MOVE_TEST PC USERS
PT_MOVE_TEST PB USERS
PT_MOVE_TEST PA USERS
SQL> alter table pt_move_test move partition pc tablespace pt_test;
Table altered.
Elapsed: 00:00:02.27[/code]
在move过程中在另外的session中可以查询
[code]SQL> select count(*) from pt_move_test;
COUNT(*)
----------
90919
SQL> select SEGMENT_NAME,PARTITION_NAME,TABLESPACE_NAME from dba_segments where SEGMENT_NAME='PT_MOVE_TEST';
SEGMENT_NAME PARTITION_NAME TABLESPACE_NAME
----------------------- ----------------- ------------------
PT_MOVE_TEST PC PT_TEST
PT_MOVE_TEST PB USERS
PT_MOVE_TEST PA USERS [/code]
[code]SQL> create table pt_move_test(obj_id number,obj_name varchar2(32)) partition by range(obj_id)
2 (
3 partition pa values less than (1000),
4 partition pb values less than (10000),
5 partition pc values less than (maxvalue)
6* )
/
Table created.
SQL> insert into pt_move_test select object_id,object_name from dba_objects;
90919 rows created.
Elapsed: 00:00:02.75
SQL> commit;
SQL> select count(*) from pt_move_test partition(pa);
COUNT(*)
----------
996
Elapsed: 00:00:00.02
SQL> select count(*) from pt_move_test partition(pb);
COUNT(*)
----------
8962
Elapsed: 00:00:00.01
SQL> select count(*) from pt_move_test partition(pc);
COUNT(*)
----------
80961
Elapsed: 00:00:00.01
SQL> COL SEGMENT_NAME FOR A40
SQL> col PARTITION_NAME for a40
SQL> select SEGMENT_NAME,PARTITION_NAME,TABLESPACE_NAME from dba_segments where SEGMENT_NAME='PT_MOVE_TEST';
SEGMENT_NAME PARTITION_NAME TABLESPACE_NAME
----------------------- ----------------- ------------------
PT_MOVE_TEST PC USERS
PT_MOVE_TEST PB USERS
PT_MOVE_TEST PA USERS
SQL> alter table pt_move_test move partition pc tablespace pt_test;
Table altered.
Elapsed: 00:00:02.27[/code]
在move过程中在另外的session中可以查询
[code]SQL> select count(*) from pt_move_test;
COUNT(*)
----------
90919
SQL> select SEGMENT_NAME,PARTITION_NAME,TABLESPACE_NAME from dba_segments where SEGMENT_NAME='PT_MOVE_TEST';
SEGMENT_NAME PARTITION_NAME TABLESPACE_NAME
----------------------- ----------------- ------------------
PT_MOVE_TEST PC PT_TEST
PT_MOVE_TEST PB USERS
PT_MOVE_TEST PA USERS [/code]
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




