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:

  1. SQL> create table t(id number);
  2.  
  3. Table created.
  4.  
  5. SQL> select * from user_segments;
  6.  
  7. 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_
  8. T TABLE USERS 65536 8 1 65536 1 2147483645 DEFAULT

11gR2:

  1. test@IRMSDC2> create table t(idnumber);
  2.  
  3. Table created.
  4.  
  5. test@IRMSDC2> select * from user_segments;
  6.  
  7. no rows selected
  8.  
  9. test@IRMSDC2> insert into t(id)values(1);
  10.  
  11. 1 row created.
  12.  
  13. test@IRMSDC2> select * fromuser_segments;
  14.  
  15. SEGMENT_NAME PARTITION_NAME SEGMENT_TYPE SEGMENT_SUTABLESPACE_NAME BYTES BLOCKS EXTENTS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS MAX_SIZE RETENTI MINRETENTION
  16. --------------------------------------------------------------------------------------------------------------- ------------------ ---------------------------------------- ---------- ---------- ---------- ------------------------- ----------- ----------- ---------- ------- ------------
  17. PCT_INCREASE FREELISTS FREELIST_GROUPS BUFFER_ FLASH_CCELL_FL
  18. ------------ ---------- ---------------------- ------- -------
  19. T TABLE ASSM USERS 65536 8 1 65536 1048576 1 2147483645 2147483645
  20. DEFAULTDEFAULT DEFAULT

由此可见,在11gR2中,只有插入数据后才会分配段空间。以下操作均在10g中进行,在11g中只要插入一条数据或者在创建表时指定segment creation immediate即可得到相同效果。

(2)创建一个带主键的表,查看所分配的段

  1. SQL> create table t2(id numberprimary key);
  2.  
  3. Table created.
  4.  
  5. SQL> select * fromuser_segments;
  6.  
  7. 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_
  8. --------------------------------------------------------------------------------------------------------------- ------------------------------------------------ ---------- ---------- ---------- ------------------------- ----------- ----------- ------------ ---------- ----------------------
  9. T TABLE USERS 65536 8 1 65536 1 2147483645 DEFAULT
  10. T2 TABLE USERS 65536 8 1 65536 1 2147483645 DEFAULT
  11. SYS_C00326438 INDEX USERS 65536 8 1 65536 1 2147483645 DEFAULT

(3)创建一个有lob字段的表,查看所分配的段

  1. SQL> createtable t3(x int primary key, y clob, z blob);
  2.  
  3. Table created.
  4. SQL> select segment_name,segment_type,tablespace_name,bytes,blocks,extents from user_segments;
  5. SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME BYTES BLOCKS EXTENTS
  6. ------------------------------------------------ ------------------------------ ---------- --------------------
  7. T TABLE USERS 65536 8 1
  8. T2 TABLE USERS 65536 8 1
  9. SYS_C00326438 INDEX USERS 65536 8 1
  10. T3 TABLE USERS 65536 8 1
  11. SYS_LOB0000469684C00002$$ LOBSEGMENT USERS 65536 8 1
  12. SYS_IL0000469684C00002$$ LOBINDEX USERS 65536 8 1
  13. SYS_LOB0000469684C00003$$ LOBSEGMENT USERS 65536 8 1
  14. SYS_IL0000469684C00003$$ LOBINDEX USERS 65536 8 1
  15. SYS_C00326439 INDEX USERS 65536 8 1
  16.  
  17. 9 rowsselected.

由此可见,t只创建一个表的段,t2创建了一个表段以及一个索引段,t3创建了一个表段、一个索引段、2个lobindex,2个lobsegment。

结论:创建一个表时,表的信息及数据可能会分散到多个段之中,每个段保存着一部分信息,而段由区组成,区由oracle块组成,oracle块由操作系统组成。

创建一个新段时,默认由1个区、8个块组成,共计8K*8空间,默认情况下oracle块大小为8k.

  1. SQL> show parameter block_size;
  2.  
  3. NAME TYPE VALUE
  4. ------------------------------------------------------------------ ------------------------------
  5. db_block_size integer 8192

(4)插入大量数据

在表t中插入大量数据,观察段大小的变化

  1. SQL> conn / as sysdba
  2. Connected.
  3. SQL> INSERT INTO test.t SELECT ROWNUMFROM dba_TABLES WHERE ROWNUM <= 10000;
  4.  
  5. 10000 rows created.
  6.  
  7. SQL> conn test/test_123;
  8. Connected.
  9. SQL> selectsegment_name, segment_type,tablespace_name,bytes,blocks,extents fromuser_segments;
  10.  
  11. SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME BYTES BLOCKS EXTENTS
  12. ------------------------------------------------ ------------------------------ ---------- --------------------
  13. T TABLE USERS 196608 24 3
  14. T2 TABLE USERS 65536 8 1
  15. SYS_C00326438 INDEX USERS 65536 8 1
  16. T3 TABLE USERS 65536 8 1
  17. SYS_LOB0000469684C00002$$ LOBSEGMENT USERS 65536 8 1
  18. SYS_IL0000469684C00002$$ LOBINDEX USERS 65536 8 1
  19. SYS_LOB0000469684C00003$$ LOBSEGMENT USERS 65536 8 1
  20. SYS_IL0000469684C00003$$ LOBINDEX USERS 65536 8 1
  21. SYS_C00326439 INDEX USERS 65536 8 1
  22.  
  23. 9 rows selected.

可见,区增长为3个,block增长到24个,即段占用空间为24*8K。

注:字典/本地表空间管理决定了如何把空间分配给各个表,而ASSM/MSSM决定了如何把表已经拥有的空间分配给各行,以及如何管理各个区、块,如通过PCTFREE指定每个块应该预留多少空间用于将来的更新。

版权声明:本文为博主原创文章,未经博主允许不得转载。

段的创建表user_segments 分类: H2_ORACLE 2013-08-10 11:13 714人阅读 评论(0) 收藏的更多相关文章

  1. Windows平台下解决Oracle12c使用PDB数据库创建SDE的问题 分类: oracle sde 2015-06-12 11:03 88人阅读 评论(0) 收藏

    Windows平台下解决Oracle12c使用PDB数据库创建SDE的问题 Oracle 12C中引入了CDB与PDB的新特性,在ORACLE 12C数据库引入的多租用户环境(Multitenant ...

  2. 解决ORA-29857:表空间中存在域索引和/或次级对象 & ORA-01940:无法删除当前连接的用户问题 分类: oracle sde 2015-07-30 20:13 8人阅读 评论(0) 收藏

    今天ArcGIS的SDE发生了一点小故障,导致系统表丢失,所以需要重建一下SDE数据库,在删除SDE用户和所在的表空间过程中遇到下面两个ORA错误,解决方法如下: 1)删除表空间时报错:ORA-298 ...

  3. 8大排序算法图文讲解 分类: Brush Mode 2014-08-18 11:49 78人阅读 评论(0) 收藏

    排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 常见的内部排序算法有:插入排序.希尔排序. ...

  4. IOS即时通讯XMPP搭建openfire服务器 分类: ios技术 2015-03-07 11:30 53人阅读 评论(0) 收藏

    一.下载并安装openfire 1.到http://www.igniterealtime.org/downloads/index.jsp下载最新openfire for mac版 比如:Openfir ...

  5. 指向函数的指针 分类: C/C++ 2015-07-13 11:03 14人阅读 评论(0) 收藏

    原文网址:http://www.cnblogs.com/zxl2431/archive/2011/03/25/1995285.html 讲的很清楚,备份记录. (一) 用函数指针变量调用函数 可以用指 ...

  6. 树莓派入手(烧写系统,调整分区,配置Java环境,串口GPS配置) 分类: Raspberry Pi 2015-04-09 21:13 145人阅读 评论(0) 收藏

    原来的tf卡无故启动不起来,检查发现其文件系统分区使用率为0%. 数据全部丢失!!!!! 血的教训告诉我们备份文件系统的重要性,一切需要重头来.... 烧录系统 安装系统有两种方式, NOOBS工具安 ...

  7. iOS调用相机,相册,上传头像 分类: ios技术 2015-04-14 11:23 256人阅读 评论(0) 收藏

    一.新建工程 二.拖控件,创建映射 三.在.h中加入delegate @interface ViewController : UIViewController 复制代码 四.实现按钮事件 -(IBAc ...

  8. UIAlertController高级之嵌入其他控件 分类: ios技术 2015-02-02 11:58 96人阅读 评论(0) 收藏

    在编码过程中,我们经常遇到需要这样一个效果,就是弹出框的嵌套; 举个最简单的例子,比如你要选择时间,必然需要一个时间选择器DatePicker.但是这个选择器又是在你点击某按钮时弹出,弹出方式最常见的 ...

  9. 百度编辑器UEditor ASP.NET示例Demo 分类: ASP.NET 2015-01-12 11:18 346人阅读 评论(0) 收藏

    在百度编辑器示例代码基础上进行了修改,封装成类库,只需简单配置即可使用. 完整demo下载 版权声明:本文为博主原创文章,未经博主允许不得转载.

随机推荐

  1. ios UITextView 提示文本

    定义两个UITextView,一个用于输入文本,一个用于显示提示信息,当输入文本为空时显示提示信息,否则不显示提示信息. //6.3.1文字内容提示 _contentTextViewTip = [[U ...

  2. git -处理分支合并

    1.分支间的合并 1)直接合并:把两个分支上的历史轨迹合二为一(就是所以修改都全部合并) zhangshuli@zhangshuli-MS-:~/myGit$ vim merge.txt zhangs ...

  3. gdbserver 使用方法

    1.分别编译出在宿主机运行的交叉调试器arm-linux-gdb和在目标板上运行的gdbserver: 2.在目标板开启gdbserver#gdbserver  宿主机ip:任意指定端口号 ./待调试 ...

  4. JS/CSS 各种操作信息提示效果

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  5. Vue的学习--开始之前的思考

    1.前端后端的思考,到底前端做什么工作 有关前端后端工作的区分,曾经有个朋友告诉我:web开发过程,前端负责从将数据从数据接口提取到前端.路由转换.前端交互展示等等所有工作,后端负责处理数据库里面的数 ...

  6. natapp解决Invalid Host header的问题

    最近在做一个微信公众号项目,用微信开发工具调试本地项目,需要做一下内网穿透,代理都配置好了,页面出现这个Invalid Host header错误,内网穿透工具我是用的frps做的,最后通过googl ...

  7. hdu5387 Clock

    Problem Description Give a time.(hh:mm:ss).you should answer the angle between any two of the minute ...

  8. [Node.js] Serve Static Files with Express

    In this lesson we will find out how to serve static assets (images, css, stylesheets, etc.) with Exp ...

  9. LinearLayout-layout_gravity 属性没有效果分析

    今天在一个布局文件中,遇到了一个问题,先看代码 <LinearLayout android:layout_width="match_parent" android:layou ...

  10. actionbar-displayOptions 属性分析

    displayOptions 这个属性主要是控制这actionbar 上返回按钮.标题等的显示.它作为 actionBarStyle 的一个item,如下 <style name="A ...