oracle 11g r2的新特性,延迟段创建 ,就是说从11gr2开始默认创建的表不会立及分配segment,,不会占用磁盘空间,这听上去也是很合理的,当第一条数据insert时才会分配空间
试验一把
sys@anbob> conn anbob/anbobconnected.anbob@anbob> select * from v$version;banner--------------------------------------------------------------------------------oracle database 11g enterprise edition release 11.2.0.1.0 - productionpl/sql release 11.2.0.1.0 - productioncore 11.2.0.1.0productiontns for linux: version 11.2.0.1.0 - productionnlsrtl version 11.2.0.1.0 - productionanbob@anbob> create table testnew(id int primary key,name varchar2(10));table created.anbob@anbob> create table testnew_ime(id int primary key,name varchar2(10)) segment creation immediate;table created.anbob@anbob> create table testnew_def(id int primary key,name varchar2(10)) segment creation deferred;table created.anbob@anbob> select segment_name from user_segments where segment_name like 'testnew%';segment_name---------------------------------------------------------------------------------testnew_imeanbob@anbob> select index_name,table_owner from user_indexes where table_name='testnew';index_nametable_owner------------------------------ ------------------------------sys_c0010903anbobanbob@anbob> select index_name,table_owner from user_indexes where table_name='testnew_ime';index_nametable_owner------------------------------ ------------------------------sys_c0010904anbobanbob@anbob> select index_name,table_owner from user_indexes where table_name='testnew_def';index_nametable_owner------------------------------ ------------------------------sys_c0010905anbobanbob@anbob> select segment_name from user_segments where segment_name='sys_c0010903';no rows selectedanbob@anbob> select segment_name from user_segments where segment_name='sys_c0010904';segment_name---------------------------------------------------------------------------------sys_c0010904anbob@anbob> select segment_name from user_segments where segment_name='sys_c0010905';no rows selectedanbob@anbob> insert into testnew values(1,'anbob.com');1 row created.anbob@anbob> commit;commit complete.anbob@anbob> select segment_name from user_segments where segment_name like 'testnew%';segment_name---------------------------------------------------------------------------------testnewtestnew_imeanbob@anbob> select index_name,table_owner from user_indexes where table_name='testnew';index_nametable_owner------------------------------ ------------------------------sys_c0010903anbobanbob@anbob> select segment_name from user_segments where segment_name='sys_c0010903';segment_name---------------------------------------------------------------------------------sys_c0010903anbob@anbob> truncate table testnew;table truncated.anbob@anbob> select segment_name from user_segments where segment_name like 'testnew%';segment_name---------------------------------------------------------------------------------testnewtestnew_imeanbob@anbob> conn sys/oracle as sysdbaconnected.sys@anbob> create table testnew_def(id int primary key,name varchar2(10)) segment creation deferred;create table testnew_def(id int primary key,name varchar2(10)) segment creation deferred*error at line 1:ora-14223: 此表不支持延迟创建段note:
11g r2默认是使用segment creation deferred建立,新建的无记录表不分配sement,当insert 第一条记录时分配段空间,不会因truncate而回收,并且在sys schema里不支持,听说exp 也不会导出
