这个要看你的业务要不要备份保留这个分区的数据,如果不需要保留,可以直接truncate/drop分区的,如果要保留,可以用交换分区方法;
创新互联是一家专业的成都网站建设公司,我们专注网站建设、网站设计、网络营销、企业网站建设,友情链接,一元广告为企业客户提供一站式建站解决方案,能带给客户新的互联网理念。从网站结构的规划UI设计到用户体验提高,创新互联力求做到尽善尽美。
具体步骤:
1.不保留,直接删除:
alter
table
table_name
drop/truncate
partition
partition_name;
具体用drop还是truncate,得你自己衡量,drop的话原来的分区和数据直接就没有了,truncate的话,只是数据没有了,分区还在。
2.保留数据作为备份,交换分区
2.1创建一个表结构一样的表:
create
table
teable_bak
as
select
*
from
table_name
where
1=2;
--只要表结构,不要数据;
2.2分区交换
alter
table
table_name
exchange
partition
partition_name
with
table
table_bak;
这样执行后,分区partition_name的数据就会交换到table_bak中,table_bak的数据(刚刚建的空表)就会到分区里面去。
可以用
ALTER
TABLE
DROP
PARTITION
来删除分区,元数据和数据将被一并删除。
全删除
ALTER
TABLE
yourTable
DROP
PARTITION
partionName1;
清数据
ALTER
TABLE
yourTable
TRUNCATE
PARTITION
partionName1;
语句虽简单、操作需谨慎。
oracle是没有直接删除全部分区或多个分区的语句,但是可以变通方法
方法一:先备份表,再删除表、重新创建表;
方法二:拼接
sql语句
,比如
SELECT
'ALTER
TABLE
LOG_INFO
DROP
PARTITION
'
||
PARTITION_NAME
||
';'
FROM
USER_TAB_PARTITIONS
WHERE
TABLE_NAME
=
'LOG_INFO';
可以列出删除所有分区的语句,全部执行即可。
可以用 ALTER TABLE DROP PARTITION 来删除分区,元数据和数据将被一并删除。
全删除
ALTER TABLE yourTable DROP PARTITION partionName1;
清数据
ALTER TABLE yourTable TRUNCATE PARTITION partionName1;
语句虽简单、操作需谨慎。
alter table test truncate partiton a;
alter table test truncate partiton b;
alter table test truncate partiton c;
alter table test truncate partiton d;
declare
job number;
begin
sys.dbms_job.submit(job,trunc(sysdate+1)+2/24,
'alter table test truncate partiton a;
alter table test truncate partiton b;
alter table test truncate partiton c;
alter table test truncate partiton d;'
,'trunc(sysdate+1)+2/24');
commit;
end;
/
可以用 ALTER TABLE DROP PARTITION 来删除分区,元数据和数据将被一并删除。
全删除
ALTER TABLE yourTable DROP PARTITION partionName1;
清数据
ALTER TABLE yourTable TRUNCATE PARTITION partionName1;
语句虽简单、操作需谨慎。