想做个精简版本的数据库用于演示:
60G的表空间 删除了2亿多条业务记录(用的是DELETE删除记录表还在,因为直接dorp掉的话在导出时停在了“导出簇”这个地停了一宿没动),只留下了公共的记录。
导出后确实小了不少600M左右,但再次导入后(演示用机)发现还是需要很大的表空间。
是不是光DELETE没用?!还需要什么操作呢?!
60G的表空间 删除了2亿多条业务记录(用的是DELETE删除记录表还在,因为直接dorp掉的话在导出时停在了“导出簇”这个地停了一宿没动),只留下了公共的记录。
导出后确实小了不少600M左右,但再次导入后(演示用机)发现还是需要很大的表空间。
是不是光DELETE没用?!还需要什么操作呢?!
使用truncate删除之后,再导出
而truncate可以很快
查看表空间使用率没有变化?
不知是否已起作用?
SELECT t.BYTES / 1048576 "空间占用(M)" FROM user_segments t
WHERE t.segment_name = upper('table1');
truncate table 表名;
2、如果使用delete table 需要commit;
truncate table table_name
command
查了下:正式用的库:
SELECT t.BYTES / 1048576 "空间占用(M)" FROM user_segments t
WHERE t.segment_name = upper('AAA');
3933
测试的:
3840
.......(有业务记录差,忽略)我在测试库 执行了
truncate table AAA;了....