精华内容
下载资源
问答
  • 2021-05-07 05:12:49

    16.2  数据库逻辑存储结构

    数据库的物理存储结构对应一系列的物理文件,这部分内容主要描述的是数据存储的实际位置,不过数据如何存储,以什么结构存储到数据文件中,则取决于数据库的逻辑存储结构。

    不会有人认为Oracle数据库执行的每次操作,都是以数据文件为单位进行的吧?虽然修改最终反映到物理文件中,但Oracle数据库在执行操作时,并不是以数据文件为单位,而是从逻辑上定义出一组结构,操作的数据可以一步步被细分为不同的存储单元,Oracle操作数据的过程,实际上就是对这些不同级别的存储单元进行维护和管理的过程。

    16.2.1  逻辑存储结构概述

    按照由小到大的顺序,逻辑存储单元可以做如下划分:

    (1)块(Block)。块是Oracle逻辑存储结构中个头最小的存储单元,所有数据的存取都是以块为单位进行的。初始化参数文件中有一个参数叫BLOCK_SIZE,就是专门用来指定这个小家伙个头的。天哪,初始化参数文件,那可是传说中作用于整个Oracle数据库的存在啊,想不到"块"这个家伙个头虽小,地位这么崇高。不错,Oracle数据库的块大小在数据库创建时指定,一经指定就无法修改,除非重建数据库。

    (2)区(Extent)。区是Oracle数据库的最小分配单位,由一组连续的块组成,这些块物理上可能并不连续,但是必须都存在于同一个物理文件,单个区在分配时不能跨文件分配。创建对象时,最少会为该对象分配一个区,初始分配的空间叫做初始区(Initial Extent),随着对象的不断扩展,超出初始区后,Oracle就会再为其分配扩展区(Incremental Extent),扩展区不一定要与初始区连续存放,甚至大小也可以与初始区不同(基本上同一个对象中的每一个区的大小都可以不同),不过扩展区也必然是由连续的块组成。

    (3)段(Segment)。很久很久一前,段可以直接被理解成对象,不过随着软件版本的变化,功能的提升,关于段的定义也越来越复杂,如果仍用一句话来形容的话,可以将段看作是对象的全部或者某个部分。从逻辑的角度看,段由一个或多个区组成,它是一个真正的逻辑结构,很难将其对应到某个物理对象上去。例如,创建一个普通的堆组织表(不含分区、LOB类型及索引等),那么该表就对应一个段,不管这个表中被存放多少记录,它都仍然只对应这一个段,不过如果为该表创建了索引,那么索引数据会存储到专门的索引段,如果该表有LOB类型,LOB数据也会被存入单独的数据段等。

    (4)表空间(Tablespace)。一个表空间从逻辑上定义,是由一个或多个段组成,从

    【责任编辑:董书 TEL:(010)68476606】

    点赞 0

    更多相关内容
  • 1、 物理存储结构 1.1 oracle数据文件 数据文件是保存Oracle数据的操作系统文件。 数据文件由头部、区间(已分配的空间)和空闲空间(未分配的空间)组成。 头部:将数据文件标识为数据库的一部分;存储了数据文件所属的...

    1、 物理存储结构
    1.1 oracle数据文件
    数据文件是保存Oracle数据的操作系统文件。
    数据文件由头部、区间(已分配的空间)和空闲空间(未分配的空间)组成。
    头部:将数据文件标识为数据库的一部分;存储了数据文件所属的表空间和最后执行的检查点等细节。
    每个oracle数据文件都只属于一个表空间,并且由若干操作系统块组成。
    1.2 操作系统块
    操作系统块是文件系统所使用的最小分配单位。
    操作系统块的容量最好与oracle数据块的容量相同。
    2、 逻辑存储结构
    2.1表空间
    表空间类型:SYSTEM类型和非SYSTEM类型
    SYSTEM类型包括SYSTEM和SYSAUX表空间;SYSTEM包含数据字典。
    表空间内容:永久段、临时段和撤销段。
    永久段:表和索引等
    临时段:排序段和临时表数据等
    撤销段:撤销数据
    2.2段
    段是数据库中要求存储的对象。
    视图不是段,因为视图不存储数据。
    查询段类型的方法:
    Select distinct segment_type from dba_segments;
    2.3区间
    区间是为某个段分配的若干临近数据块的集合。
    区间的管理:本地管理和字典管理
    本地管理:位图管理。此管理方式效率更高。
    字典管理:通过区间的分配和解除分配来更新数据字典中的一个表。工作量会很大。
    2.4数据块
    数据块是数据库内I/O最小单位。
    3、 创建与管理表空间
    3.1创建表空间
    Create tablespace demo
    Datafile ‘ O R A C L E B A S E / o r a d a t a / d e m o 0 1 d b f ’ s i z e 10 m ; 这 条 命 令 的 工 作 内 容 : 物 理 创 建 数 据 文 件 ; 创 建 表 空 间 ; 更 新 控 制 文 件 和 数 据 字 典 ; 为 新 的 表 空 间 设 置 默 认 值 。 如 果 创 建 表 空 间 时 , 数 据 文 件 存 在 的 话 , 则 使 用 r e u s e 选 项 。 3.2 修 改 表 空 间 A l t e r t a b l e s p a c e 3.3 删 除 表 空 间 D e l e t e t a b l e s p a c e d e m o i n c l u d i n g c o n t e n t s c a s c a d e c o n s t r a i n t s ; 然 后 手 动 删 除 数 据 文 件 。 4 、 查 看 表 空 间 的 信 息 数 据 字 典 : d b a t a b l e s p a c e s , d b a d a t a f i l e s , d b a t e m p f i l e s 动 态 视 图 : v ORACLE_BASE/oradata/demo01_dbf’ size 10m; 这条命令的工作内容:物理创建数据文件;创建表空间;更新控制文件和数据字典;为新的表空间设置默认值。 如果创建表空间时,数据文件存在的话,则使用reuse选项。 3.2修改表空间 Alter tablespace 3.3删除表空间 Delete tablespace demo including contents cascade constraints; 然后手动删除数据文件。 4、 查看表空间的信息 数据字典:dba_tablespaces,dba_data_files,dba_temp_files 动态视图:v ORACLEBASE/oradata/demo01dbfsize10m;使reuse3.2Altertablespace3.3Deletetablespacedemoincludingcontentscascadeconstraints;4dbatablespaces,dbadatafiles,dbatempfilesvtablespace,v d a t a f i l e , v datafile,v datafile,vtempfile
    查询如下:
    select a.name, b.name, c.name
    from v t a b l e s p a c e a , v tablespace a, v tablespacea,vdatafile b, v$tempfile c
    where a.ts#=b.ts# or a.ts#=c.ts#;

    展开全文
  • oracle逻辑存储结构

    千次阅读 2019-06-14 15:12:56
    一、定义二、数据块二、区(extent)2.1 区的分配2.2 区的释放三 段3.1段的分类3.2 段相关的视图四、表空间4.1 表空间...oracle的逻辑结构包括表空间(tablespace),段(segment),扩展区(extent),数据块(data block)...

    一、定义

    oracle的逻辑结构包括表空间(tablespace),段(segment),扩展区(extent),数据块(data block)
    oracle数据库在逻辑上是由多个表间组成的,表空间中存储的对象叫段,比如数据段,索引段,和回退段。段由区组成,区是磁盘分配的最小单位。段的增大是通过增加区的个数来实现的。每个区的大小是数据块大小的整数倍,区的大小可以不相同;数据块是数据库中最小的I/O单位,同时也是内存数据缓冲区的单位,及数据文件存储空间单位。块的大小由参数DB_BLOCK_SIZE设置,其值应设置为操作系统块大小的整数倍。
    结构图如下
    在这里插入图片描述

    二、数据块

    数据块是数据中最小的数据组织单位与管理单位, 数据库中最小的逻辑存储单元,是数据文件磁盘存储空间单位,也是数据库I/O 的最小单位(读一个数据块,产生一次IO),数据块大小由DB_BLOCK_SIZE参数决定。
    oracle 每次请求数据的时候,都是以块为单位。也就是说,oracle每次请求的数据是块的整数吧。
    数据块结构如下图所示
    在这里插入图片描述
    块头:存放块的基本信息,如块的物理地址、块所属的段类型(是数据段还是索引段)
    表目录:存放表的信息,即:如果一些表的数据被存放在这个块中,那么,这些表的相关信息将被存放在表目录中。
    行数据:真正存放表数据和索引数据的地方。这部分空间也被数据行占用空间。
    空余空间:空余空间是一个块中未使用的区域,这片区域用于新行的插入和已经存在的行更新。
    头部信息区:我们把块头、表目录、行目录这三部分合称为头部信息区,头部信息区不存放数据,它存放的是整个块的信息。头部信息区的大小是可变的。一般来说 头部信息区 大小介于84字节和107字节。
    当往数据库中插入数据的时候,块中的自由空间会减少;当对块中已经存在的行进行修改(update)的时候(使记录长度增加),块中的自由空间也会减少。
    当使用delete或者update使行记录变小的时候,oracle会释放部分自由空间,释放的自由空间并不是连续的。
    通常情况下oracle不会对块中不连续的自由空间进行合并。只有当用户进行数据插入或者更新操作,却找不到连续的自由空间的时候,oracle才会合并数据块中的不连续自由空间。
    对于块中的自由空间,oracle提供两种管理方式:自动管理和手动管理。
    1.1获取数据块编号

    SELECT dbms_rowid.rowid_block_number(ROWID) BLOCK, --返回输入ROWID的数据块号 
           COUNT(1)
      FROM emp t
     GROUP BY dbms_rowid.rowid_block_number(ROWID);
    

    在这里插入图片描述

    看到表emp 数据全部分布在一个数据块上

    二、区(extent)

    区是磁盘空间分配的最小单位。磁盘按区划分,每次至少分配一个区。区存储于段中,它由连续的数据块组成。区的分配过程中,每次至分配5个区。如果所剩的空闲空间不够5个区,就会出现错误:ORA-01653。可以通过字典dba_tablespaces查询表空间中区的信息。可以通过字典user_tables查询段中区的信息。可以通过字典user_extents查询区的分配状况。我们可以通过以下SQL语句分别查询表空间、段、区中区的分配信息
    一个或多个块组成区,一个或多个区组成段。
    一个区只能属于一个数据文件。

     SELECT t.segment_name    区名称,
           t.segment_type    区类型,
           t.tablespace_name 表空间,
           t.extent_id       区id,
           t.bytes           区大小,
           t.blocks          块数目
      FROM user_extents t;
    

    在这里插入图片描述

    2.1 区的分配

    当创建一个表时,oracle会给这个表的数据段分配一个初始区(initial extent),即使没有数据的插入,oracle还是会分配这个初始区。伴随着数据的插入,这个初始区的空间被填满数据,oracle会再分配一个新的区给这个数据段,这样的区,我们把它叫做递增区,如果第一个递增区用完,oracle还会分配另外的递增区,周而复始地这样循环下去。
    出于管理的需要,段的头部含有区的一个目录。

    2.2 区的释放

    通常分配给一个段的区所占用的空间不会释放。除非我们把和这些段相关的对象给删除(drop table或drop cluster) 但是我们可以通过下面的方式回收分配给一个段的区。

    truncate …… drop storage 命令会回收分配给一个段的区。

    alter table …… deallocate unused 命令会回收已经分配给一个段,但还没使用的区。

    三 段

    段是由一个或多个连续或不连续的区组成的逻辑存储单元,用于存储特定的、具有独立存储结构的数据库对象。根据存储对象类型不同,分为: 数据段(表段)、索引段、临时段和回退段4类。
    表由段组成,一个表由一个或者多个段组成。普通表由一个段组成,分区表由多个段组成。
    创建表的时候,其实质就是创建一个或者多个段。
    在这里插入图片描述

    3.1段的分类

    表段:又称数据段,用来存储表或簇的数据,可以细分为普通表段、分区表段、簇段、索引化表段
    创建数据段的时候,可以指定数据段的存储参数。
    索引段:用来存放索引数据,包括 ROWID 和索引值,每个非分区索引有一个单独的索引段。
    创建索引时,实质就是创建一个或者多个索引段
    回退段:用于保存数据库的回退信息,包含当前未提交事务所修改的数据的原始版本。利用回退段中保存的回退信息,可以实现事务回滚、数据库恢复、数据的读一致性和闪回查询

    数据段用来存储用户的数据,每个表都有一个对应的回滚段,其名称和数据表的名字相同。
    索引段用来存储系统、用户的索引信息。
    回滚段用来存储用户数据修改前的值

    3.2 段相关的视图

    通过视图 dba_segment或者 user_segments;可以知道 段名称与数据库对象名称一致 ;

    select t.owner 用户,t.segment_name 段名称 ,t.tablespace_name 表空间名称 ,T.segment_type 段类型  from  dba_segments t
      where t.owner='SCOTT';--查看scott 用户下的段
    

    –查询结果中除了有表外还有索引
    查看段、区、块的关系

    SELECT t.segment_name    段名称,
           t.segment_type    段类型,
           t.tablespace_name 表空间名称,
           t.bytes           字节数,
           t.blocks          块数目,
           t.extents         区数目
      FROM user_segments t;
    

    在这里插入图片描述

    四、表空间

    是Oracle数据库最大的逻辑结构,一个Oracle数据库在逻辑上由多个表空间组成,一个表空间只隶属于一个数据库。Oracle中有一个称为SYSTEM的表空间,这个表空间是在创建或安装数据库时自动创建的。主要用于存储系统的数据字典,过程,函数,触发器等;也可以存储用户的表,索引等。这些对象实际上是存放在数据文件中,数据文件是数据的物理载体。一个表空间可以有多数据文件,但是一个数据文件只能属于一个表空间。一个表空间就是一片磁盘区域,他由一个或者多个磁盘文件组成,一个表空间可以容纳许多表、索引或者簇等。每个表空间有一个预制的磁盘区域称为初始区间(initial extent)用完这个区间后再用下一个,直到用完表空间,这时候需要对表空间进行扩展,增加数据文件或者扩大已经存在的数据文件;每个数据库都拥有一个系统表空间(SYSTEM tablespace)和一个辅助表空间(SYSAUX tablespace)

    4.1 表空间分类

    表空间根据存储数据类型的不同,分为系统表空间非系统表空间两类。
    系统表空间主要存放数据库的系统信息,如数据字典、数据库对象定义信息,数据库组件信息等。
    非系统表空间又分为撤销表空间、临时表空间和用户表空间等。其中撤销表空间用于自动管理数据库的回退信息,临时表空间用于管理数据库的临时信息,用户表空间用于存储业务数据。

    4.1.1 大文件表空间

    大文件表空间是由一个很大的数据文件组成。大表空间使用oralce能够使用和管理超级大的文件 。
    默认情况下,系统默认创建的是小文件表空间,小文件表空间是传统的表空间类型,oracle创建的system表空间和sysaux表空间都是小文件表空间

    使用大文件表空间的优点:
    1、使表空间的容量更大
    2、在超大型数据库中,简化数据文件的管理,使用大文件表空间,可以减少SGA的需求,同时还可以控制文件尺寸。
    3、简化整个数据库的管理

    4.1.2 系統表空間

    每个数据库都有一个叫system的表空间,一旦打开数据库,系统表空间必须在线(online)数据字典的数据被存放在系统表空间中。

    4.1.3 辅助表空间

    辅助表空间是对系统表空间的补充,许多数据库组件(components)的信息不存放在系统表空间中,而是存储放在辅助表空间中,创建数据库的过程中,oracle会自动创建辅助表空间,通常情况下,oracle不允许删除和重命名辅助表空间。Oracle也不支持传输辅助表空间

    4.1.4 回滚表空间

    undo tablespace 回滚表空间是一种类型的表空间,用于存放回滚数据。回滚段表空间是一个特殊的表空间,回滚段表空间只能用于存放回滚段。不能在回滚段表空间创建其他数据库对象(如表、索引)。每个数据库可有零个或者多个回滚表空间。但是只能有一个活动的回滚表空间。system回滚段是特殊的回滚段,它存在于system表空间,system回滚段用于回滚系统事务。非系统事务只能交由非系统回滚段来处理。因此,除了系统回滚段表空间外,每个数据库应该另外创建一个回滚段表空间

    4.1.5 临时表空间

    临时表空间是临时存放数据的地方。临时表空间中含有排序段,临时数据都放在排序段中,临时数据是进行排序时用到的一些数据,这些数据暂时存放在临时段中,一个sql语句可能会使用一个或者多个临时表空间。临时表空间中不能创建永久性的数据对象(如表、索引)一个排序段可以被多个排序操作所共享。当执行第一次排序的时候,oracle在临时表空间中创建排序段,这个排序段不断扩展,直到能够容纳所有的排序数据。创建用户的时候,应该给用户指定一个临时表空间,用户的排序段存放在这个表空间中,如果没有给用户指定临时表空间,oracle会自动给这个用户指定一个临时表空间,这个临时表空间叫默认临时表空间。如果系统表空间是本地管理的,则必须定义一个默认临时表空间system表空间不能作为默认临时表空间;如果系统表空间是字典管理的,则不必定义一个默认临时表空间,sytem表空间可以作为默认临时表空间,但是一旦用户使用系统表空间进行排序,oracle会发出警告。从性能的角度考虑,不应该把sytem表空间作为临时表空间。创建数据库的时候。可以指定默认临时表空间,数据库完成以后,我们也可以使用alter database default
    temporary tablespace 名令指定默认临时表空间。

    查看临时表空间

         SELECT tablespace_name,
                 file_name,
                 bytes / 1024 / 1024 file_size,
                 autoextensible
            FROM dba_temp_files;
    --默认临时表空间
    select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';
    
    展开全文
  • 3、逻辑存储结构、物理存储结构

    千次阅读 2020-10-20 09:59:14
    逻辑存储结构:从逻辑的角度分析数据库的构成。 oracle存储结构是一种层次结构包括表空间、数据段、数据区、数据块。 数据块 data block:由块头、表目录、行目录、空余空间、行数据组成。 数据区 extent:由一组...

    逻辑存储结构:从逻辑的角度分析数据库的构成。
    oracle存储结构是一种层次结构包括表空间、数据段、数据区、数据块


    数据块 data block:由块头、表目录、行目录、空余空间、行数据组成。

    --查询标准数据块大小,一个数据块=4个操作系统块
    select value from v$parameter where name = 'db_block_size';
    

    数据区 extent:由一组连续的oracle数据块构成,一个或多个数据块组成一个数据区、一个或多个数据区组成一个段。
    数据区是oracle 存储分配的最小单位。一个Oracle对象只少包含一个数据区。
    段 segment:用于存储表、索引、簇等占用空间的数据对象。
    数据段、索引段、回滚段、临时段。
    表空间 tablespace:将相关逻辑结构(段、数据区)组合在一起,数据库最大的逻辑划分区域,通常用来存放数据表、索引、回滚段等数据对象(即segment),任何数据对象的创建必须制定在某个表空间中。
    表空间(逻辑结构)与数据文件(物理结构)对应,一个表空间由一个或多个数据文件组成,一个数据文件只属于一个表空间。


    物理存储结构:描述oracle数据在磁盘上的物理组成情况。
    oracle物理存储结构由多种物理文件组成,主要有数据文件、控制文件、重做日志文件、归档日志文件、参数文件、密码文件、警告文件等。

    --通过查询 dba_data_files或v$datafile数据字典了解Oracle系统的数据文件信息。
    select file_name,tablespace_name from dba_data_files;
    select * from v$datafile;--name
    
    --查询数据字典v$controlfile数据字典查看oracle 控制文件信息。
    select name from v$controlfile;
    
    --查询v$logfile视图查询日志文件信息,重做日志文件redo log file,归档日志文件 archive log file 
    --每个Oracle实例都启用一个日志线程来记录数据库的变化,日志线程由若干‘日志组’构成,而每个日志组又由一个或多个日志文件构成。
    select member from v$logfile; 
    
    --查询v$parameter动态性能视图确定参数文件是否被改动过 服务器参数文件,以及是否可用alter system 和 alter session 命令修改
    select name value,ismodified from v$parameter;
    --使用sqp&plus 的show parameter 显示服务器参数
    show parameter;
    --修改服务器参数,OEM企业管理器修改或alter system命令
    --例
    alter system set db_block_size = 4096;
    
    展开全文
  • Oracle数据库存储结构:逻辑存储结构数据块(data blocks)区(extents)段(segments)表空间(tablespaces) 本文所讨论的内容涉及的数据库版本为 Oracle 19c。 数据块(data blocks) 区(extents) 段(segments...
  • Oracle的逻辑存储结构

    千次阅读 2019-08-07 05:32:17
    逻辑存储结构主要描述Oracle数据库的内部存储结构,即从技术概念上描述在Oracle数据库种如何组织、管理数据. Oracle的逻辑存储结构如下图所示: 图4 逻辑结构 从逻辑上来看:  1> 数据库是由一个或者多...
  • Oracle逻辑存储结构培训.pptx
  • Oracle 数据库逻辑存储结构管理 Oracle 数据库逻辑存储结构管理 Oracle 数据库逻辑存储结构管理 实验目的: (1)掌握 Oracle 数据库表空间的管理 (2)掌握数据库表空间不同状态时对数据操作的影响 (3)分别创建永久性表...
  • chap8Oracle逻辑存储结构;本章内容;本章要求;8.1项目导入规划人力资源管理系统数据库逻辑存储结构 ;8.2 逻辑存储结构概述;8.3表空间;8.3.1 表空间概述;1表空间概念;2表空间的分类;3表空间的管理方式;4表空间管理策略...
  • Oracle 数据库逻辑存储结构介绍

    千次阅读 2019-08-02 15:19:34
    Oracle 数据库的存储结构分为逻辑存储结构和物理存储结构。 逻辑存储结构用来描述Oracle 内部组织和管理数据的方式。 物理存储结构用来描述Oracle 数据库在操作系统中的物理文件的组成方式。 Oracle数据库的逻辑存储...
  • 第8章 逻辑存储结构;本章内容;本章要求;8.1项目导入规划人力资源管理系统数据库逻辑存储结构 ;8.2 逻辑存储结构概述;8.3表空间;8.3.1 表空间概述;1表空间概念;2表空间的分类;3表空间的管理方式;4表空间管理策略;...
  • Oracle第6章逻辑存储结构.pptx
  • Oracle 10g数据库逻辑存储结构
  • 引入:逻辑存储结构是Oracle数据库存储结构的核心内容。逻辑存储结构是从逻辑的角度分析数据的构成,是对数据存储结构在逻辑概念上的划分。逻辑结构是面向用户的,当用户使用Oracle设计数据库时,其使用的就是逻辑...
  • SMSE08_管理数据库逻辑存储结构
  • 第6章 逻辑存储结构;本章内容;本章要求;6.1 逻辑存储结构概述;6.2表空间;7.2.1 表空间概述;1表空间概念;2表空间的分类;3表空间的管理方式;4表空间管理策略;7.2.2表空间的管理本地管理方式;1创建表空间 ;创建永久表...
  • Oracle-10g数据库基础教程之逻辑存储结构.pptx
  • Oracle数据库应用教程-逻辑存储结构.pptx
  • 第6章逻辑存储结构.ppt
  • Mysql之InnoDB存储引擎的逻辑存储结构

    千次阅读 2020-01-27 08:52:34
    参考 下面的Mysql InnoDB 磁盘存储结构中对表空间的介绍 https://blog.csdn.net/u014636209/article/details/103989376 3.segment [段] 1. 创建一个索引会创建两个段,一个是索引段:leaf node segment,一个...
  • Oracle数据库逻辑存储结构

    千次阅读 2018-02-01 18:05:36
    数据块是Oracle逻辑存储结构中最小的逻辑单位,也是执行数据库输入输出的最小 存储单位。Oracle数据存放在Oracle数据块中,而不是操作系统块中。通常Oracle 数据块是操作系统的整数倍,Oracle数据块有标准大小,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 872,141
精华内容 348,856
关键字:

逻辑存储结构

友情链接: 广义S变换及逆.rar