段的创建表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 selected test@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 2147483645
DEFAULTDEFAULT 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 1 9 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 1 9 rows selected.
可见,区增长为3个,block增长到24个,即段占用空间为24*8K。
注:字典/本地表空间管理决定了如何把空间分配给各个表,而ASSM/MSSM决定了如何把表已经拥有的空间分配给各行,以及如何管理各个区、块,如通过PCTFREE指定每个块应该预留多少空间用于将来的更新。
段的创建表user_segments的更多相关文章
- 段的创建表user_segments 分类: H2_ORACLE 2013-08-10 11:13 714人阅读 评论(0) 收藏
1.段的定义及类型 Oracle中的段(segment)是占用磁盘空间的一个对象,最常见的段类型包括: l 聚簇cluster l 表table l 表分区 tablepartition l ...
- Oracle创建表空间
1.创建表空间 导出Oracle数据的指令:/orcl file=C:\jds.dmp owner=jds 导入Oracle数据的指令:imp zcl:/orcl file=C:\jds.dmp fu ...
- Oracle数据库体系结构及创建表结构
Oracle服务器主要由实例.数据库.程序全局区和前台进程组成,其中实例就是用来提供管理数据库的功能:数据库由数据库文件组成,用来存储系统数据:实例可以进一步划分为系统全局区(SGA)和后台进程(PM ...
- SQL Server 2008|2012 阻止保存要求重新创建表的更改
不是很理解为什么在SQL Server 2008及以后的版本中会加入阻止保存要求重新创建表的更改这个选项.太麻烦了,每次修改表结构的时候会被"阻止".很不方便. 问题描述: SQL ...
- Oracle创建表空间和表
创建表空间和表ORACLE物理上是由磁盘上的以下几种文件:数据文件和控制文件和LOGFILE构成的oracle中的表就是一张存储数据的表.表空间是逻辑上的划分.方便管理的.数据表空间 (Tablesp ...
- Oracle笔记 五、创建表、约束、视图、索引、序列、同义词、表空间
alter table userInfo add(msn varchar2(20)); 1.建表 create table userInfo ( id number(6), name varchar2 ...
- oracle创建表空间语句分解
1 create tablespace db_name 2 datafile 'D:\oracle\product\10.2.0\oradata\orcl\db_name_.dbf' size 200 ...
- 基于CDH5.x 下面使用eclipse 操作hive 。使用java通过jdbc连接HIVESERVICE 创建表
基于CDH5.x 下面使用eclipse 操作hive .使用java通过jdbc连接HIVESERVICE 创建表 import java.sql.Connection; import java.s ...
- Oracle数据库之创建表结构
Oracle数据库之创建表结构 主键与外键 主键:关系型数据库中的一条记录中有若干个属性,若其中的某一个属性组(可以是一个属性,也可以是多个)能唯一标识一条记录,那么该属性组就是主键. 外键:关系型数 ...
随机推荐
- 火狐的bug
初次启动火狐的界面并且默认是最大化的情况下,第一个业签时会发现火狐的浏览器无法达到下边框,请看图 途中可以看到,body区域没有填充满浏览器可用区域.但是当浏览器已经启动页签,现在是第二个页签时,则不 ...
- POJ3041 二分图最大匹配
问题:POJ3041 分析: 构造二分图:令A = B = { 1, 2, ... , n }, 分别代表行号集与列号集.假如第i行第j列有一颗行星,则连接Ai与Bj, 表示必须从Ai(即第i行),B ...
- [LA] 3644 - X-Plosives [并查集]
A secret service developed a new kind of explosive that attain its volatile property only when a spe ...
- 那两年炼就的Android内功修养
http://blog.csdn.net/luoshengyang/article/details/8923485 http://iconsparadise.com/ http://blog.csdn ...
- 10.1.5 Connection Character Sets and Collations
10.1.5 Connection Character Sets and Collations Several character set and collation system variables ...
- kibana 统计每天注册数
- Remove Invalid Parentheses 解答
Question Remove the minimum number of invalid parentheses in order to make the input string valid. R ...
- sudo nopasswd
preface,不问头条,但汝读荐,诚意满满的!
- mysql补充(1)校对集utf8_unicode_ci与utf8_general_ci
创建数据库并设置编码utf-8 多语言(补充1 2) create database mydb default character set utf8 collate utf8_general_ci; ...
- hadoop备战:一台x86计算机搭建hadoop的全分布式集群
主要的软硬件配置: x86台式机,window7 64位系统 vb虚拟机(x86的台式机至少是4G内存,才干开3台虚机) centos6.4操作系统 hadoop-1.1.2.tar.gz jdk- ...