我想知道以下步骤是否可行以及速度有多快:
- 在表 A 中创建一个名为 part1 的分区
- 删除表 B 中的分区 part1
- 将表A分区part1导入表B
如果确实有可能,你能给我举个例子吗?或者我可以查看的任何资源?
请注意,这些表将具有完全相同的结构。
我想知道以下步骤是否可行以及速度有多快:
如果确实有可能,你能给我举个例子吗?或者我可以查看的任何资源?
请注意,这些表将具有完全相同的结构。
您可以使用该ALTER TABLE ... EXCHANGE PARTITION
命令执行类似的操作。这将与具有相同结构的表交换单个分区。
一个小例子:
/* 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