段的创建表user_segments
1、段的定義及類型
Oracle中的段(segment)是占用磁盤空間的一個(gè)對(duì)象,最常見(jiàn)的段類型包括:
l? 聚簇cluster
l? 表table
l? 表分區(qū) tablepartition
l? 索引 index
l? 索引分區(qū)
l? Lob分區(qū)lob partition、lob子分區(qū)lobsubpartition、lob索引lobindex、lob段lob segmnent
l? 嵌套表 nestedtable
l? 回滾段rollback
詳細(xì)介紹可見(jiàn)《編程藝術(shù)》P313
2、段的創(chuàng)建
在表、索引等創(chuàng)建的過(guò)程中(在11gR2中,段的創(chuàng)建要等到第一條數(shù)據(jù)被插入時(shí)),事實(shí)上即在創(chuàng)建段,從user_segment可以查看已創(chuàng)建的段
(1)創(chuàng)建一個(gè)基本表,查看所分配的段
10.2.0.4:
SQL> create table t(id number);Table created.SQL> select * from user_segments;SEGMENT_NAME PARTITION_NAME SEGMENT_TYPE TABLESPACE_NAME BYTES BLOCKS EXTENTS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE FREELISTS FREELIST_GROUPS BUFFER_ T TABLE USERS 65536 8 1 65536 1 2147483645 DEFAULT11gR2:
test@IRMSDC2> create table t(idnumber);Table created.test@IRMSDC2> select * from user_segments;no rows selectedtest@IRMSDC2> insert into t(id)values(1);1 row created.test@IRMSDC2> select * fromuser_segments;SEGMENT_NAME PARTITION_NAME SEGMENT_TYPE SEGMENT_SUTABLESPACE_NAME BYTES BLOCKS EXTENTS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS MAX_SIZE RETENTI MINRETENTION --------------------------------------------------------------------------------------------------------------- ------------------ ---------------------------------------- ---------- ---------- ---------- ------------------------- ----------- ----------- ---------- ------- ------------ PCT_INCREASE FREELISTS FREELIST_GROUPS BUFFER_ FLASH_CCELL_FL ------------ ---------- ---------------------- ------- ------- T TABLE ASSM USERS 65536 8 1 65536 1048576 1 2147483645 2147483645DEFAULTDEFAULT DEFAULT由此可見(jiàn),在11gR2中,只有插入數(shù)據(jù)后才會(huì)分配段空間。以下操作均在10g中進(jìn)行,在11g中只要插入一條數(shù)據(jù)或者在創(chuàng)建表時(shí)指定segment creation immediate即可得到相同效果。
(2)創(chuàng)建一個(gè)帶主鍵的表,查看所分配的段?
SQL> create table t2(id numberprimary key);Table created.SQL> select * fromuser_segments; SEGMENT_NAME PARTITION_NAME SEGMENT_TYPE TABLESPACE_NAME BYTES BLOCKS EXTENTS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE FREELISTS FREELIST_GROUPS BUFFER_ --------------------------------------------------------------------------------------------------------------- ------------------------------------------------ ---------- ---------- ---------- ------------------------- ----------- ----------- ------------ ---------- ---------------------- T TABLE USERS 65536 8 1 65536 1 2147483645 DEFAULT T2 TABLE USERS 65536 8 1 65536 1 2147483645 DEFAULT SYS_C00326438 INDEX USERS 65536 8 1 65536 1 2147483645 DEFAULT(3)創(chuàng)建一個(gè)有l(wèi)ob字段的表,查看所分配的段
SQL> createtable t3(x int primary key, y clob, z blob);Table created. SQL> select segment_name,segment_type,tablespace_name,bytes,blocks,extents from user_segments; SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME BYTES BLOCKS EXTENTS ------------------------------------------------ ------------------------------ ---------- -------------------- T TABLE USERS 65536 8 1 T2 TABLE USERS 65536 8 1 SYS_C00326438 INDEX USERS 65536 8 1 T3 TABLE USERS 65536 8 1 SYS_LOB0000469684C00002$$ LOBSEGMENT USERS 65536 8 1 SYS_IL0000469684C00002$$ LOBINDEX USERS 65536 8 1 SYS_LOB0000469684C00003$$ LOBSEGMENT USERS 65536 8 1 SYS_IL0000469684C00003$$ LOBINDEX USERS 65536 8 1 SYS_C00326439 INDEX USERS 65536 8 19 rowsselected.由此可見(jiàn),t只創(chuàng)建一個(gè)表的段,t2創(chuàng)建了一個(gè)表段以及一個(gè)索引段,t3創(chuàng)建了一個(gè)表段、一個(gè)索引段、2個(gè)lobindex,2個(gè)lobsegment。
結(jié)論:創(chuàng)建一個(gè)表時(shí),表的信息及數(shù)據(jù)可能會(huì)分散到多個(gè)段之中,每個(gè)段保存著一部分信息,而段由區(qū)組成,區(qū)由oracle塊組成,oracle塊由操作系統(tǒng)組成。
創(chuàng)建一個(gè)新段時(shí),默認(rèn)由1個(gè)區(qū)、8個(gè)塊組成,共計(jì)8K*8空間,默認(rèn)情況下oracle塊大小為8k.
SQL> show parameter block_size;NAME TYPE VALUE ------------------------------------------------------------------ ------------------------------ db_block_size integer 8192(4)插入大量數(shù)據(jù)
在表t中插入大量數(shù)據(jù),觀察段大小的變化
SQL> conn / as sysdba Connected. SQL> INSERT INTO test.t SELECT ROWNUMFROM dba_TABLES WHERE ROWNUM <= 10000;10000 rows created.SQL> conn test/test_123; Connected. SQL> selectsegment_name, segment_type,tablespace_name,bytes,blocks,extents fromuser_segments;SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME BYTES BLOCKS EXTENTS ------------------------------------------------ ------------------------------ ---------- -------------------- T TABLE USERS 196608 24 3 T2 TABLE USERS 65536 8 1 SYS_C00326438 INDEX USERS 65536 8 1 T3 TABLE USERS 65536 8 1 SYS_LOB0000469684C00002$$ LOBSEGMENT USERS 65536 8 1 SYS_IL0000469684C00002$$ LOBINDEX USERS 65536 8 1 SYS_LOB0000469684C00003$$ LOBSEGMENT USERS 65536 8 1 SYS_IL0000469684C00003$$ LOBINDEX USERS 65536 8 1 SYS_C00326439 INDEX USERS 65536 8 19 rows selected.
可見(jiàn),區(qū)增長(zhǎng)為3個(gè),block增長(zhǎng)到24個(gè),即段占用空間為24*8K。
注:字典/本地表空間管理決定了如何把空間分配給各個(gè)表,而ASSM/MSSM決定了如何把表已經(jīng)擁有的空間分配給各行,以及如何管理各個(gè)區(qū)、塊,如通過(guò)PCTFREE指定每個(gè)塊應(yīng)該預(yù)留多少空間用于將來(lái)的更新。 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的段的创建表user_segments的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 定位导致物化视图无法快速刷新的原因
- 下一篇: POI操作Excel常用方法总结