通过以上结构可以看出,我在创建表后,去查看表信息,发现表拥有的blocks=0,以为是统计信息的问题,使用dbms_stats去重新收集表的基础信息,结果依然相同。然后查看该表段的信息,发现这个段并不存在。可以说明,数据库在创建表后,只存储了表的基本结构信息,只有在插入数据的时候,才会去分配区。
此时由于未分配数据块,也就不存在高水位线的问题。
(2)我们往test01里面插入10000条数据
SQL> declare 2 i number :=1; 3 begin 4 loop 5 if i > 10000 6 then 7 exit; 8 end if; 9 insert into test01 values(i,'euvcg'); 10 i:=i+1; 11 end loop; 12 commit; 13 end; 14 / PL/SQL procedure successfully completed
再去看一下表与段的统计信息
SQL> select 2 dt.table_name, 3 dt.blocks, 4 dt.empty_blocks 5 from 6 dba_tables dt 7 where 8 dt.table_name = 'TEST01'; TABLE_NAME BLOCKS EMPTY_BLOCKS ----------- ---------- ------------ TEST01 0 0 SQL> SQL> select 2 ds.segment_name, 3 ds.segment_type, 4 ds.header_file, 5 ds.header_block, 6 ds.bytes, 7 ds.blocks, 8 ds.extents 9 from 10 dba_segments ds 11 where 12 ds.segment_name = 'TEST01'; SEGMENT_NAME SEGMENT_TYPE HEADER_FILE HEADER_BLOCK BYTES BLOCKS EXTENTS ------------ ------------------ ----------- ------------ ---------- ---------- ---------- TEST01 TABLE 6 162 262144 32 4
表test01的blocks依然为0,我们使用dbms_stats重新收集统计信息,