一个段建立以后首先会分配一个区,区中包括含8个块,这时执行insert插入数据,当这个区写满后,会在分配一个区

  1.一个段建立以后,Oracle如何给段分配区?

  2.段分配到区以后,有了空闲空间,应该如何进行使用和管理呢?

段与区的管理方式

  1.区的管理方式

    数据字典

    本地--------自动

           手动CREATE SMALLFILE TABLESPACE "DATA1" DATAFILE '/ora/oracle/oradata/orcl/data1_01.dbf' SIZE 100M REUSE AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO

  区管理---- 本地

  2.段管理方式

    手工管理方式

    自动管理方式

  段管理---- 自动

分析表:

SQL> analyze table T2 compute statistics;

SQL> select segment_name,blocks,extents,bytes,segment_type,tablespace_name from dba_segments where segment_name='T2';

对表进行统计分析1

SQL> exec dbms_stats.gather_table_stats('SYS','T2');

SQL> select table_name,NUM_ROWS,BLOCKS,EMPTY_BLOCKS,AVG_SPACE,CHAIN_CNT,AVG_ROW_LEN FROM user_tables where table_name='T2';

索引列的统计信息的SQL语句

SQL>select BLEVEL ,LEAF_BLOCKS,DISTINCT_KEYS,AVG_LEAF_BLOCKS_PER_KEY,AVG_DATA_BLOCKS_PER_KEY,CLUSTERING_FACTOR from USER_INDEXES

列的统计信息

SQL> select NUM_DISTINCT,LOW_VALUE,HIGH_VALUE,DENSITY,NUM_NULLS,NUM_BUCKETS,HISTOGRAM from USER_TAB_COLUMNS;

区管理:本地  段管理:自动

查看表dba_extents的结构

SQL> select * from dba_extents where segment_name='T2';

区的自动管理:当连续的分配了很多区后,Oracle会认为目前处理的数据较大,一次性的分配大的区。

高水位线:一段建立了,分配一个区,区有很多块,在有数据表时,段会使用区中的块,高水位线指的是段使用的最后一个块

高水位线的意义:是Oracle数据库对表进行扫描时,代表最后一个位置

问题:在将数据删除后,高水位线还是在原来的位置,并没有随着数据的删除而下降

  例子:假如一共有10万个块,高水位线在1000,删除1000块中保存的数据,高水位线还是在1000的位置。

高水位线影响得是全表扫描(对高水位线以下的)

例子:

  先对表进行分析,在查询表相关信息

将表中数据删除后,在进行分析以及查看

降低高水位线

SQL> truncate table T2;

    块头部信息 8K  块:物理地址

    块属于哪个空间

    事务槽 ZTL

    行目录

  块是从底下开始用的

  块头是从上面开始用的

  中间是空闲空间

    行与行之间是串起来用的(所有行是连在一起的)

    第一行头部连接第二行尾部,整体看起来貌似是一行,其实是多行

  假如需要查找块中3行4列的数据,这是就需要用到块头部的行目录了

    首先在行目录中找到第三行的起点,起点后面跟的是第一列的列宽,跳过列宽,就可以找到第四列。

    数据库默认大小8k show parameter block;

行链接与行迁移

正常情况下:一个块里放多行,不允许行跨块

PCT_free空间是为了在进行update,增加空间的时候,不至于使块溢出

行链接:一个行10k,一个块8k,块是存不下这一 行,所以一个块存8k另一个块存2k,第一个块儿上写上第二个块的地址,行链接。

行迁移:由于PCT_free空间过小,update在更新的时候,空间不够用,将整个刚迁移出来,在迁移的位置上写上迁移的地址

  如果行迁移过多的话,就会导致分为一个数据块实际上访问了两个数据块

如何判断行链接与行迁移?

行的平均长度>块长度---- 块大小的问题

行的平均长度<块长度&&CHAIN_CNT过大---行迁移的问题

这需要对表进行重新的整理,将表导出再导入。

SELECT table_name,NUM_ROWS,BLOCKS, EMPTY_BLOCKS,AVG_SPACE,CHAIN_CNT, AVG_ROW_LEN
FROM USER_TABLES where table_name='TEST2';

从结果看目前
CHAIN_CNT 的值是 0
就是行迁移行链接数量值是0
说明在这方面做得比较好

      

  

  

    

 

  

Oracle存储结构-段区块的更多相关文章

  1. Oracle存储结构-表空间

    表空间 oracle文件注意的问题 控制文件,redolog文件,数据文件----一定要放在存储上 问题:银行用户,集群切换失败,原因是数据库中部分的文件未放到存储上 存储三种组织形式:文件系统.AS ...

  2. Oracle 存储结构一

    了解块中表行数据的存储 Oracle数据存储模型 逻辑结构在左,物理结构在右 有一个关系使用虚线绘制,表示段与数据文件的多对多关系.之所以使用虚线表示关系,是因为这种多对多关系不应存在. 表空间实体消 ...

  3. Oracle 存储结构

    数据库是存储数据的容器,它的主要功能是保存和共享数据. oracle数据库的存储结构可以分为逻辑存储结构和物理存储结构,对于这两种存储结构,oracle是分别进行管理的. 逻辑存储结构:oracle内 ...

  4. oracle存储结构

    数据库的物理存储结构 select * from v$datafile; 数据库的逻辑存储结构,从表空间开始查起一个数据库对象的逻辑存储结构如下表空间-段-区-块 select * from dba_ ...

  5. Oracle 存储结构三

    Oracle数据库服务器自动管理空间的方法 段空间的分配 空间以区间的形式分配给段,区间是一组连续的Oracle块.每个数据文件都有一个位图,来描述文件中块的状态,块可能是空闲的,也可能是区间中已分配 ...

  6. 【oracle11g,17】存储结构: 段的类型,数据块(行连接、行迁移,块头),段的管理方式,高水位线

    一.段的类型: 1.什么是段:段是存储单元. 1.段的类型有: 表 分区表 簇表 索引 索引组织表(IOT表) 分区索引 暂时段 undo段 lob段(blob ,clob) 内嵌表(record类型 ...

  7. Oracle 存储结构二

    创建和管理表空间 创建表空间 典型语句: CREATE SMALLFILE TABLESPACE "JWTS" DATAFILE '/u01/app/oracle/oradata/ ...

  8. Oracle 逻辑存储结构

    一.总述 逻辑存储结构是 Oracle 数据库存储结构的核心内容,对 Oracle 数据库的所有操作都会涉及逻辑存储结构.逻辑存储结构是从逻辑的角度分析数据库的组成,是对数据存储结构在逻辑概念上的划分 ...

  9. 学习笔记:oracle学习一:oracle11g体系结构之体系结构概述和逻辑存储结构

    目录 1.oracle 11g体系结构概述 1.1 三个重要概念 1.2 oracle数据库存储结构 2 逻辑存储结构 2.1 数据块(Data Blocks) 2.2 数据区(Extent) 2.3 ...

随机推荐

  1. C语言之联合体

    联合union是一个能在同一个存储空间存储不同类型数据的类型 联合体所占的内存长度等于其最长成员的长度,也有叫做共用体 联合体虽然可以有多个成员,但同一时间只能存放其中一种 对于联合体来讲最基本的原则 ...

  2. Autofac依赖注入容器

    依赖注入容器-- Autofac https://github.com/danielpalme/IocPerformance Unity 更新频率高,微软的项目Grace 综合性能更高 目录: 一.简 ...

  3. DatePickerDialog与OnDateSetListener基本用法与常见问题

    日期时再显示更改控件一般我们使用构造方法public DatePickerDialog(@NonNull Context context, @Nullable OnDateSetListener li ...

  4. Windows 2016 安装单机版本Oracle ASM 的简单说明

    发现这样弄完 启动之后 就挂了 真蛋疼.  改天再研究一下. 1. 需要给磁盘处理一下 建议使用压缩卷的模式进行处理 如图示 需要新建简单卷 注意设置 然后不进行格式化 2. 然后安装oracle的g ...

  5. [转帖]英特尔的 ME 或侵犯 Minix3 的自由软件许可证

    英特尔的 ME 或侵犯 Minix3 的自由软件许可证 [日期:2017-12-11] 来源:Linux公社  作者:非非然 [字体:大 中 小] https://www.linuxidc.com/L ...

  6. linux 下如何将网页版应用生成桌面图标

    使用linux mint已经两年了,很多国民应用,都没有Linux版,但是这些应用都有网页版,今天就说下最简单的将网页应用变成桌面应用,无需配置,安装任何插件.以微信为例; 首先,在谷歌浏览器打开网页 ...

  7. PHP7 错误及异常机制

    关键词 error 不能在编译期发现的运行期错误,比如试图用 echo 输出一个未赋值的变量,这类问题往往导致程序或逻辑无法继续下去而需要中断: exception 程序执行过程中出现意料之外的情况, ...

  8. Fire Net(HDU-1045)(匈牙利最大匹配)(建图方式)

    题意 有一个 n*n 的图,. 代表空白区域,X 代表墙,现在要在空白区域放置结点,要求同一行同一列只能放一个,除非有墙阻隔,问最多能放多少个点 思路 只有在墙的阻隔情况下,才会出现一行/列出现多个点 ...

  9. vue-resource 全局拦截器

    项目中可能会添加超时登录的功能,因此根据tokenid 判断是否超时.如果token已过期,需要跳转至登录页面. 因此需要用到全局拦截器拦截返回的状态 //下边代码添加在main.js中 Vue.ht ...

  10. 独热编码 pandas get_dummies

    映射技巧 将'income_raw'编码成数字值 income_mapping = {'<=50K': 0,'>50K': 1} income = income_raw.map(incom ...