Oracle Partition维护操作

时间:2022-11-21 00:36:10 作者:壹号 字数:2862字

Oracle Event 10434 And DRM

Cache Fusion and Inter Instance Coordination

EXECUTE IMMEDIATE动态SQL的使用总结

Oracle Data & Temp Files Management

分区表维护的常用命令:


ALTER TABLE
-- DROP -- PARTITION
-- ADD |
-- RENAME |
-- MODIFITY |
-- TRUNCATE |
-- SPILT |
-- MOVE |
-- EXCHANGE |

分区索引的常用维护命令:


ALTER INDEX
-- DROP -- PARTITION
-- REBUILD |
-- RENAME |
-- MODIFITY |
-- SPILT |
-- PARALLEL
-- UNUSABLE

1、ALTER TABLE DROP PARTITION
用于删除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 dec96;

到底是DROP PARTITION或者是DELETE?
如果GLOBAL INDEX是最重要的,就应该先DELETE 数据再DROP PARTITION。
在下面情况下,手工删除数据的代价比DROP PARTITION要小
- 如果要删除的数据只占整个TABLE的小部分
- 在TABLE中有很多的GLOBAL INDEX。

在下面情况下,手工删除数据的代价比DROP PARTITION要大
- 如果要删除的数据占整个TABLE的绝大部分
- 在TABLE中没有很多的GLOBAL INDEX。

如果在TABLE是父TABLE,有被引用的约束,且PARTITION不空,DROP PARTITION时出错。
如果要删除有数据的PARTITION,应该先删除引用约束。或者先DELETE,然后再DROP PARTITION。
如果TABLE只有一个PARTITON,不能DROP PARTITION,只能DROP TABLE。


2、ALTER INDEX .. DROP PARTITION
删除PARTIOTN GLOBAL INDEX上删除INDEX和INDEX ENTRY,一般用于平衡I/O。
INDEX必须是GLOBAL INDEX。不能显式的drop local index partition,不能删除最大的index。
删除之后,insert属于该partition的值时候,index建立在更高的partition。
如果包含数据的partition删除之后,下一个partition是IU状态,必须rebuild。可以删除IU状态的partition,即使它包含数据。

3、ALTER TABLE / INDEX RENAME PARTITION
主要用于改变隐式建立的INDEX NAME。
INDEX 可以是IU状态。
一般的INDEX可以用ALTER INDEX RENAME ....

4、ALTER TABLE .. ADD PARTITION...
只能加到最后一个PARTITION之后。一般用于数据会单调增长的地方,比如每周/月/年
会增加新的历史数据等。
SPLIT可以在中间插入PARTITION。
如果VALUES LESS THAN的第一个值是MAXVALUE,就不能增加PARTITION.必须SPLIT。
该命令也可以给自动增加PARTITION LOCAL INDEX。新的LOCAL INDEX PA