高效删除多碎片的字典管理表空间
在Oracle8i版本中,当一个字典管理(DMT)的表空间由于长期数据更新而产生大量碎片之后,通常我们的做法需要将原先放置在DMT表空间中的表move到本地管理(LMT)表空间来重组数据以减少空间碎片。move完毕以后,原先的DMT表空间需要删除以回收空间,但是删除表空间对于fet$的级联操作,导致删除DMT表空间非常耗费时间。 在字典管理类型下,fet$中存储数据库目前可以使用的空闲块信息,uet$存储数据库目前已经被使用的数据块信息。当删除表空间时,Oracle需要把fet$中跟此表空间相关的所有的记录都一一删除,如果表空间碎片很多,那么这一步操作将耗费很长的时间。 SQL>select ts#,count(*) from fet$ group by ts#; TS# COUNT(*) ---------- ---------- 0 817 1 12160 3 440932 4 15775 5 5300 6 314997 6 rows selected. 在这个数据库中TS#=3和6的表空间正需要做删除的操作,而fet$中分别存在440932和314997条记录,在删除表空间时跟踪了一下,平均每秒钟Oracle能够清理fet$的3条记录。 SQL>…