我想知道以下步骤是否可行以及速度有多快:
- 在表A中创建名为part1的分区
- 删除表B中的分区part1
- 将表A分区part1导入表B
如果确实可能的话,你能为我提供一个例子吗?或者有什么资源可以看吗?
请注意,这些表将具有完全相同的结构。
你可以做类似的事情ALTER TABLE ... EXCHANGE PARTITION http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_3001.htm#i2084770命令。这会将单个分区与具有相同结构的表交换。
一个小例子:
/* Partitionned Table Creation */
SQL> CREATE TABLE table_a (
2 ID NUMBER PRIMARY KEY,
3 DATA VARCHAR2(200)
4 )
5 PARTITION BY RANGE (ID) (
6 PARTITION part100 VALUES LESS THAN (100),
7 PARTITION part200 VALUES LESS THAN (200)
8 );
Table created
/* Swap table creation */
SQL> CREATE TABLE swap_table (
2 ID NUMBER PRIMARY KEY,
3 DATA VARCHAR2(200)
4 );
Table created
SQL> INSERT INTO swap_table SELECT ROWNUM, 'a' FROM dual CONNECT BY LEVEL <= 99;
99 rows inserted
SQL> select count(*) from table_a partition (part100);
COUNT(*)
----------
0
这将交换分区part100
与转换表swap_table
:
SQL> ALTER TABLE table_a EXCHANGE PARTITION part100 WITH TABLE swap_table;
Table altered
SQL> select count(*) from table_a partition (part100);
COUNT(*)
----------
99
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)