oracle是没有直接删除全部分区或多个分区的语句,但是可以变通方法
方法一:先备份表,再删除表、重新创建表;
方法二:拼接
sql语句
,比如
SELECT
'ALTER
TABLE
LOG_INFO
DROP
PARTITION
'
||
PARTITION_NAME
';'
FROM
USER_TAB_PARTITIONS
WHERE
TABLE_NAME
=
'LOG_INFO';
可以列出删除所有分区的语句,全部执行即可.
①.、创建语句
create table p(id number)
partition by range(id)
(partition p1 values less than(100) tablespace t1,
alter table p trunc partition p1;
alter table p drop partition p1;
ALTER
用于删除table中某个PARTITION和其中的数据,主要是用于历史数据的删除.如果还想保留数据,就需要合并到另一个partition中.
删除该partition之后,如果再insert该partition范围内的值,要存放在更高的partition中.如果你删除了最大的partition,就会出错.
删除table
partition的同时,删除相应的local
index.即使该index是IU状态.
如果table上有global
index,且该partition不空,drop
partition会使所有的global
index
为IU状态.如果不想REBUIL
INDEX,可以用SQL语句手工删除数据,然后再DROP
PARTITION.
例子:
ALTR
ATBEL
sales
到底是DROP
PARTITION或者是DELETE?
如果GLOBAL
INDEX是最重要的,就应该先DELETE
数据再DROP
在下面情况下,手工删除数据的代价比DROP
PARTITION要小
-
如果要删除的数据只占整个TABLE的小部分
在TABLE中有很多的GLOBAL
INDEX.
PARTITION要大
如果要删除的数据占整个TABLE的绝大部分
在TABLE中没有很多的GLOBAL
如果在TABLE是父TABLE,有被引用的约束,且PARTITION不空,DROP
PARTITION时出错.
如果要删除有数据的PARTITION,应该先删除引用约束.或者先DELETE,然后再DROP
如果TABLE只有一个PARTITON,不能DROP
PARTITION,只能DROP
TABLE.
以上就是土嘎嘎小编为大家整理的oracle怎么删除分区相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!