日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

段的创建表user_segments

發布時間:2024/1/23 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 段的创建表user_segments 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、段的定義及類型

Oracle中的段(segment)是占用磁盤空間的一個對象,最常見的段類型包括:

l? 聚簇cluster

l? 表table

l? 表分區 tablepartition

l? 索引 index

l? 索引分區

l? Lob分區lob partition、lob子分區lobsubpartition、lob索引lobindex、lob段lob segmnent

l? 嵌套表 nestedtable

l? 回滾段rollback

詳細介紹可見《編程藝術》P313

2、段的創建

在表、索引等創建的過程中(在11gR2中,段的創建要等到第一條數據被插入時),事實上即在創建段,從user_segment可以查看已創建的段

(1)創建一個基本表,查看所分配的段

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 DEFAULT

11gR2:

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

由此可見,在11gR2中,只有插入數據后才會分配段空間。以下操作均在10g中進行,在11g中只要插入一條數據或者在創建表時指定segment creation immediate即可得到相同效果。

(2)創建一個帶主鍵的表,查看所分配的段?

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)創建一個有lob字段的表,查看所分配的段

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.

由此可見,t只創建一個表的段,t2創建了一個表段以及一個索引段,t3創建了一個表段、一個索引段、2個lobindex,2個lobsegment。

結論:創建一個表時,表的信息及數據可能會分散到多個段之中,每個段保存著一部分信息,而段由區組成,區由oracle塊組成,oracle塊由操作系統組成。

創建一個新段時,默認由1個區、8個塊組成,共計8K*8空間,默認情況下oracle塊大小為8k.

SQL> show parameter block_size;NAME TYPE VALUE ------------------------------------------------------------------ ------------------------------ db_block_size integer 8192

(4)插入大量數據

在表t中插入大量數據,觀察段大小的變化

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.


可見,區增長為3個,block增長到24個,即段占用空間為24*8K。

注:字典/本地表空間管理決定了如何把空間分配給各個表,而ASSM/MSSM決定了如何把表已經擁有的空間分配給各行,以及如何管理各個區、塊,如通過PCTFREE指定每個塊應該預留多少空間用于將來的更新。 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的段的创建表user_segments的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。