今天准备一个测试环境,
先创建表
CREATE TABLE test (id integer ,str varchar2(100),dt date, dbl float);
然后插入一条记录,之后使用如下语句扩展表
insert into test_s select * from test;
连续N次之后,数据量大概到了300,000,000,18G的时候,再执行一次,提示空间不足。注意这个空间不足是隔了一会儿进行的,也就是说Oracle进行了部分的操作之后,发现空间不足,事务停止了。这个时候,表中数据量没有变化。
但是看下表空间利用率,已经差不多100%了。
就是说,插入失败,但是空间没有释放,一定是Oracle已经把block分配给test表了。
然后在试如下语句:
insert into test_s select * from test where rownum <= 100000000;
语句成功后,表空间利用率没有变化。
由此得证。