我创建一个表并用数据填充它:
create table tab
as
select 'value' || level val
from dual
connect by level <= 10000;
Run Code Online (Sandbox Code Playgroud)
如果我然后删除所有行并插入相同的数据:
delete from tab;
insert into tab
select 'value' || level val
from dual
connect by level <= 10000;
commit;
Run Code Online (Sandbox Code Playgroud)
每次执行删除然后插入时表大小都会增加。多次执行这些操作会导致表增长到原始大小的许多倍。
我希望大小保持(大约)相同。为什么会这样?
删除将空间标记为空闲,它实际上并没有缩小段。后续插入应首先使用 HWM 以下的可用空块。
我可以使用alter table tab shrink space
.
我在 Oracle 12 和 Oracle 18c 中进行了测试。