当前位置:Gxlcms > mysql > Oracle分区交换-归档数据

Oracle分区交换-归档数据

时间:2021-07-01 10:21:17 帮助过:28人阅读

Oracle交换分区的操作步骤如下: 1. 创建分区表t1,假设有2个分区,P1,P2.2. 创建基表t11存放P1规则的数据。3. 创建基表t12 存

Oracle交换分区的操作步骤如下:

1. 创建分区表t1,假设有2个分区,P1,P2.
2. 创建基表t11存放P1规则的数据。
3. 创建基表t12 存放P2规则的数据。
4. 用基表t11和分区表T1的P1分区交换。 把表t11的数据放到到P1分区
5. 用基表t12 和分区表T1p2 分区交换。 把表t12的数据存放到P2分区。

----1.未分区表和分区表中一个分区交换

create table t1
(
sid int not null primary key,
sname varchar2(50)
)
PARTITION BY range(sid)
( PARTITION p1 VALUES LESS THAN (5000) tablespace test,
PARTITION p2 VALUES LESS THAN (10000) tablespace test,
PARTITION p3 VALUES LESS THAN (maxvalue) tablespace test
) tablespace test;

SQL> select count(*) from t1;

COUNT(*)
----------
0

create table t11
(
sid int not null primary key,
sname varchar2(50)
) tablespace test;

create table t12
(
sid int not null primary key,
sname varchar2(50)
) tablespace test;

create table t13
(
sid int not null primary key,
sname varchar2(50)
) tablespace test;

--循环导入数据
declare
maxrecords constant int:=4999;
i int :=1;
begin
for i in 1..maxrecords loop
insert into t11 values(i,'ocpyang');
end loop;
dbms_output.put_line(' 成功录入数据! ');
commit;
end;
/

declare
maxrecords constant int:=9999;
i int :=5000;
begin
for i in 5000..maxrecords loop
insert into t12 values(i,'ocpyang');
end loop;
dbms_output.put_line(' 成功录入数据! ');
commit;
end;
/

declare
maxrecords constant int:=70000;
i int :=10000;
begin
for i in 10000..maxrecords loop
insert into t13 values(i,'ocpyang');
end loop;
dbms_output.put_line(' 成功录入数据! ');
commit;
end;
/

commit;

SQL> select count(*) from t11;

COUNT(*)
----------
4999

SQL> select count(*) from t12;

COUNT(*)
----------
5000

SQL> select count(*) from t13;

COUNT(*)
----------
60001

--交换分区

alter table t1 exchange partition p1 with table t11;

SQL> select count(*) from t11; --基表t11数据为0

COUNT(*)
----------
0

SQL> select count(*) from t1 partition (p1); --分区表的P1分区数据位基表t11的数据

COUNT(*)
----------
4999

alter table t1 exchange partition p2 with table t12;

select count(*) from t12;

select count(*) from t1 partition (p2);

alter table t1 exchange partition p3 with table t13;

select count(*) from t13;

select count(*) from t1 partition (p3);

linux

人气教程排行