数据库
首页 > 数据库> > 【DB笔试面试234】在Oracle中,如何有效的删除一个大表(即表的EXTENT数很多)?

【DB笔试面试234】在Oracle中,如何有效的删除一个大表(即表的EXTENT数很多)?

作者:互联网

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


Q          题目如下所示:

在Oracle中,如何有效的删除一个大表(即表的EXTENT数很多)?


     
A          答案如下所示:          



一个有很多EXTENT(100k+)的表,如果只是简单地用DROP TABLE的话,那么会大量消耗CPU(在DMT管理下,Oracle要对FET$、UET$数据字典进行操作),可能会用上很长的时间,较好的方法是分多次删除EXTENT,以减轻这种消耗:

1. TRUNCATE TABLE BIG_TABLE REUSE STORAGE;

2. ALTER TABLE BIG_TABLE DEALLOCATE UNUSED KEEP 2000M ;

3. ALTER TABLE BIG_TABLE DEALLOCATE UNUSED KEEP 1500M ;

  ....

4. DROP TABLE BIG_TABLE;


标签:BIG,DROP,DB,KEEP,即表,EXTENT,Oracle,TABLE
来源: https://blog.51cto.com/lhrbest/2698546