Oracle 各种删除操作对空间返还的说明 | |||||||
操作 | 表空间是否回收空间? | 文件系统或ASM是否回收空间? | 是否造成表上的碎片? | 在本地管理表空间(LMT 9i以后)是否造成表空间碎片? | 在字典管理表空间(DMT 9i以前)是否造成表空间碎片?注意现在的oracle版本不太可能用DMT | 是否造成索引碎片? | 有心理问题,或者为应付领导,一定要对付对付不存在的碎片怎么办? |
DELETE SQL | 否 | 否 | 否,空间可以被该表重用。可以称之为高水位,但谈不上碎片 | 不适用 | 不适用 | 否 | 对表可以shrink space;对索引可以coalesce操作;对于大表而言IO和redo会很多,耗时也可能长 |
DROP TABLE | 是的;视乎recyclebin参数是否进入回收站;但空间都可以被表空间重用 | 否 | 都没表了 | 本地管理表空间的extent是统一大小或系统自动分配大小,不存在表空间碎片 | 可能导致碎片(alter tablespace coalesce适用场景) | 索引都没了 | 不适用 |
TRUNCATE TABLE | 默认是的 | 否 | 否 | 本地管理表空间的extent是统一大小或系统自动分配大小,不存在表空间碎片 | 可能导致碎片(alter tablespace coalesce适用场景) | 否 | 不适用 |
注:Oracle除非手动resize datafile,否则一般不会自动返回空间给文件系统或ASM |
Comment