• Oracle数据库的逻辑结构


    目录

    一、概述

     二、几个逻辑组成的概念

    (一)Oracle数据块Block

    (二)区Extent

    (三)段(Segment)

     (四)表空间(Tablespace)


    一、概述

    Oracle中逻辑结构包括表空间、段、区、块

    数据库由表空间构成

    而表空间又是由段构成

    而段又是由区构成

    而区又是由Oracle数据块构成

    如下图:

     网上找找了一个更直观的图

     二、几个逻辑组成的概念

    (一)Oracle数据块Block

    块是用来管理存储空间的最基本的单位,也是最小的逻辑存储单位。块的大小由初始化参数 db_block_size 来决定,不同的 Oracle 版本的大小是不同的,但是数据库一旦创建,其大小便不可更改。虽然每个数据块可以存储不同类型的数据,但是每个数据块都具有一个相同的结构。

     数据块结构包括5部分:

    1. 块头 包含了该数据块一般的属性信息,如数据块的物理地址、所属段类型等
    2. 表目录 如果数据块中存储的数据是某个表的数据,则这里存放该表的信息
    3. 行目录 用来存储数据块中有效的行信息
    4. 空余空间 指数据块还没有使用的存储空间
    5. 行空间 表或者索引的数据存储在行空间中,所以行空间是数据块中已经使用的存储空间

    (二)区Extent

    区是 Oracle 存储分配的最小单位,它是由一个或多个数据块组成的。一个或多个区组成一个段,也就是说段的大小都是由区的个数来决定。当一个段的空间使用完之后,Oracle 会自动为该段分配成一个新的区。

    用户还能够通过执行下面的命令来回收表、索引等对象中未使用的区:

    alter table table_name deallocate unused;

    区中的 Oracle 数据块在逻辑上是相邻的,但在物理上可以分布在磁盘上的不同位置(RAID 条带化和文件系统实施会导致此现象)

    (三)段(Segment)

     段是一组盘区,它是一个独立的逻辑存储结构,用于存储具有独立存储结构对象的全部数据。段一般是数据库终端用户处理最小的存储单位,当段的数据区已满,Oracle 为其分配另一个数据区,段的数据区在磁盘上可能是不连续的。

    1. 数据段 用来存储表中所有数据;
    2. 索引段 用来存储表中索引的所有数据;
    3. 临时段 用于存储表排序或汇总时产生的临时数据
    4. LOB 段 LOB 用来存储表中大型数据对象,例如 CLOB 与 BLOB
    5. 回退段 用于存储用户数据被修改之前的位置和值; 当要对用户的数据进行回退操作时,就要使用回退段。

     (四)表空间(Tablespace)

    表空间是 Oracle 最大的逻辑存储结构,与物理上的数据文件相对应,但是一个表空间可以拥有多个数据文件。

    1. 数据表空间 用于存储用户数据的普通表空间。
    2. 系统表空间 默认的表空间,用于保存数据字典(一组保存数据库自身信息的内部系统表和视图,及用于 Oracle 内部使用的其他一些对象),保存所有的 PL/SQL 程序的源代码和解析代码,包括存储过程和函数、包、数据库触发器等,保存数据库对象(表、视图、序列)的定义。
    3. 回滚表空间 用于存放回滚段,每个实例最多只能使用一个撤销表空间
    4. 临时表空间 存储 SQL 执行过程中产生的临时数据

    本文部分文字图片来源于网络。

  • 相关阅读:
    服务器硬盘HDD与SSD的优缺点是什么
    炫酷的宇宙空间
    当输入 npm run xxx后发生了什么
    cpp-stub使用教程
    代码随想录训练营第32天|LeetCode 122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II
    jar解压修改后,如果再打成jar包
    python使用mitmproxy和mitmdump抓包在手机上抓包(三)
    怎么使用零代码平台,在线搭建一套应用系统—敲敲云免费
    mysql面试题(史上最全面试题,精心整理100家互联网企业,面试必过)
    为什么用葫芦儿派盘取代U盘?
  • 原文地址:https://blog.csdn.net/hongdi/article/details/125904608