【数据库】Oracle存储结构

Oracle存储结构

存储结构

数据库的主要功能是保存数据,所以可以将数据库看成是保存数据的容器。数据库的存储结构也就是数据库存储数据的结构或方式、方法、方案等。

oracle 数据库的存储结构分为物理存储结构逻辑存储结构两种。

  • 物理存储结构主要用于描述在 oracle 数据库外部数据的存储,即在操作系统层面中如何组织和管理数据,与具体的操作系统有关。
  • 逻辑存储结构主要描述oracle 数据库内部数据的组织和管理方式,即在数据库管理系统的层面中如何组织和管理数据,与操作系统没有关系。

两者的关系

oracle 数据库的物理存储结构与逻辑存储结构既相互独立又相互联系,如下图:

关系图

从上面图中可以看出数据库物理存储结构和逻辑存储结构的基本关系:

  1. 一个数据库在物理上包含多个数据文件,在逻辑上包含多个表空间
  2. 一个表空间包含一个或多个数据文件,一个数据文件只能从属于某个表空间
  3. 数据库的逻辑块由一个或多个操作系统块组成
  4. 一个逻辑区只能从属于一个数据文件,而一个数据文件可包括一个或多个逻辑区

逻辑存储结构

逻辑结构

是从逻辑的角度定义数据库的构成,比物理存储结构更高一层,许多初始化参数都是针对逻辑存储结构来定义的。

主要描述Oracle数据库的内部存储结构,即从技术概念上描述在Oracle数据库中如何组织、管理数据。

数据字典描述

在操作系统中无法找到逻辑存储结构,但通过查询Oracle数据库的数据字典,可以找到逻辑存储结构的描述。

包括表空间、段、区、块

  • 一个区只能在一个数据文件中
  • 一个段中的各个区可以分别在多个数据文件中
  • 组成区的块是连续的。

由于逻辑块对应磁盘空间中某个固定大小的尺寸(一般为操作系统数据块的整数倍),所以逻辑存储结构也是有大小的。

逻辑结构类型按照尺寸从小到大分可分为:块(block)–>区(extent)–>段(segment)–>表空间(tablespace),下边依次阐述:

表空间(tablespace)

表空间组织数据和分配空间的逻辑结构,是最大的逻辑单位。数据库的大小从逻辑上看就是由表空间决定的,所有表空间大小的和就是数据库的大小。表空间与数据库文件直接关联,在 oracle 数据库中,存储结构管理主要就是通过对表空间的管理来实现的。

表空间
  1. 一个数据库可以有多个表空间
  2. 一个表空间只属于一个数据库。
  3. 一个表空间必须有一个数据文件。
  4. 一个表空间的大小等于其中所有数据文件的大小之和。数据库的大小等于其中所有表空间的大小之和。
  5. 表空间可以被联机和脱机。
  6. SYSTEM表空间不能被脱机。
  7. 表空间可以在读写、只读状态之间切换。
  8. 每个表空间由一个或多个物理存在的操作系统的数据文件组成。这种数据文件可以具有固定的大小,或允许其自动变大。可以在表空间中添加、删除数据文件。
  9. 方案、对象、表、索引的数据都被存储在表空间的数据文件中。一个数据文件存储不下,就存储在另一个数据文件中,只要该数据文件是本表空间中的就行。
  10. 一个用户默认使用一个表空间,但他的不同方案对象的数据可以被存储在不同表空间中。
  11. 一个用户使用的表空间的数量是有一定配额的,不能超出这个配额。
  12. 可以根据使用目的,创建不同类型的表空间,如永久表空间、临时表空间、撤销表空间、大表空间等。不同类型的表空间的格式、使用方式及目的是不同的。

表空间又根据存储数据类型的不同,分为系统表空间非系统表空间两类。

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

段用于存储表空间中表一种特定的、具有独立存储结构的数据库对象的数据,它由一个或多个连续分区组成。当创建表、索引、簇等对象时,Oracle就会为这些对象分配存储空间(即段),以便存储它们的数据。按照段中所存储的数据的特征、用途不同,可以将段分成以下几种类型:

Table

表段存储表的所有数据。当用户创建表时,就会在该用户的默认表空间中为该表分配一个与表名相同的表段,以便将来存储该表的所有数据。显然,在一个表空间中创建了几个表,在该表空间中就有几个表段。

Table partition

表分区段用于存储分区表的所有数据。当用户创建分区表时,就会在该用户的默认表空间中为该表的每个分区分配一个表分区段。通过将一个大表的数据分散到不同的表分区段中,能降低I/O次数,提高性能。

Cluster

簇段把几张表组织在一起,放在一个物理段中。

Index

索引段存储索引的所有数据。当用户创建索引或定义约束而自动创建索引时,就会在该用户的默认表空间中为该索引分配一个与索引名相同的索引段,以便将来存储该索引的所有数据。

Index

Index-organized table按照索引的顺序来存储的表。数据是有序存放的。按照索引的键值升序或降序排序。

Index

Index partition用于大的索引,物理上放置在不同的段中。如果为分区表创建分区索引,则会为每个分区索引分配一个索引分区段,其功能与表分区段相同。

Index

Undo segment是有序的、循环的使用。用来存放oracle运行过程中发生数据改变时,存放数据的old value。帮助完成加滚和恢复。撤销段存储数据修改之前的位置和值。利用这些信息,可以回退未提交的事务,维护数据库的读一致性,并能从例程的崩溃中进行恢复。

Index

临时段支持排序。临时段存储排序操作所产生的临时数据。临时数据首先会被暂存到排序区(属于PGA区)中,当排序区(其大小由SORT_AREA_SIZE初始化参数决定)不足以暂存这些临时数据时,则会在该用户的临时表空间中自动创建一个临时段,用于暂存这些临时数据,排序结束时,临时段自动消除。

Index

二进制大对象段用于存储LOB数据类型列中的数据,如文档、图像、音频、视频数据。创建表时,可以定义LOB数据类型(包括CLOB,BLOB,NCLOB,BFILE)的列,Oracle会为此自动分配对应的二进制大对象段。对于LOB列来说,如果数据长度少于4000字节,则与其他列的数据会一起存放在表段中;否则数据就会被存储到二进制大对象段中。

Index

Bootstrap segment:初始化实例的。创建数据库时自动创建,用过后自动释放。

Index
区(extent)

区由物理上连续存放的块构成,是Oracle存储分配的最小单位,由一个或多个块组成区,由一个或多个分区组成段.
一个分区只能属于一个数据文件
当在数据库中创建带有实际存储结构的方案对象(如表、索引、簇)时,Oracle将为该方案对象分配若干个分区(视该方案对象的初始大小而定),以便组成一个对应的段,来为该方案对象提供初始的存储空间。当段中已分配的区都写满后,Oracle就要在该方案对象所在的表空间中为该段分配下一个新的空白区,以便容纳更多的数据。

分区
块(block)
数据块内容

是最小的数据管理单位,即数据管理中I/O的最小单位
其大小是OS块大小的整数倍
块大小是表空间的一个属性

物理存储结构

oracle 数据库的物理存储结构是由一系列操作系统文件组成的,存放于物理磁盘上,是数据库的实际存储单元。这些文件主要包括数据文件、控制文件、重做日志文件、归档文件、初始化参数文件、跟踪文件、告警文件等。每种文件都存储特定内容的信息,其数量也因文件类型不同而不同。

数据文件:是数据库所有数据的实际存储空间,所有数据文件的大小和构成了数据库的大小。
控制文件:记录数据库结构信息的重要的二进制文件,由oracle 系统进行读 / 写操作。
重做日志文件:是以重做记录的形式记录、保存用户对数据库所进行的变更操作,是数据库中最重要的物理文件。
归档日志文件:是历史联机重做日志文件的集合,是联机重做日志文件被覆盖之前备份的副本。
初始化参数文件:是数据库启动过程所必需的文件,记录了数据库显式参数的设置。数据库启动的第一步是根据初始化参数文件中的设置,

创建并启动实例,即分配内存空间、启动后台进程。

跟踪文件:是数据库中重要的诊断文件,是获取数据库信息的重要工具,对管理数据库的实例起着至关重要的作用。跟踪文件中包含数据库系统运行过程中所发生的重大事件的有关信息,可以为数据库运行故障的解决提供重要信息。
告警文件:是数据库中重要的诊断文件,记录数据库在启动、关闭和运行期间后台进程的活动情况。

获得存储信息

使用数据字典

DBA_TABLESPACES
DBA_DATA_FILES
DBA_SEGMENTS
DBA_EXTENTS
DBA_FREE_SPACE

数据库的三级模式、二级映像结构

三级模式

模式

也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有应用程序的公共的数据结构。
在信息世界中描述了现实世界中的实现及其联系。

特点:

  • 一个数据库只有一个模式,它统一地、综合地考虑了所有用户的需求,并将这些需求有机地结合成一个逻辑整体。不同的应用程序可能只使用模式中的一部分;
  • 模式是逻辑的,即它与具体珠应用程序无关或不属于某个应用程序。它描述的是一个数据库的总体结构,是装配数据的一个框架;
  • 模式是以某种数据模型为基础的。定义模式时不仅要定义数据的逻辑结构(如表有哪些数据项,每个数据项的名字、类型、取值范围等),而且还要定义这些数据项之间的联系(如外键),定义与数据项有关的安全性、完整性(如约束、主键)要求等;
  • 模式用模式描述语言(如DDL)来定义。模式设计是数据库设计的重要任务。

外模式

也称用户模式,是数据库用户(应用程序、终端用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是用户所用的数据库结构。

特点:

  • 一个数据库可以有多个外模式,分别对应于每个用户。由于各个用户在应用需求、看待数据的方式、对数据的保密程度等方面存在差异,所以其外模式可能不一样。如,即使对模式中同一个数据,在外模式中的结构、类型、长度、保密程度等都有可能不一样
  • 外模式是保证数据库安全性的一个有力措施。每个用户只能看见和访问所对应的外模式中的数据,而看不见其他数据
  • 可以通过授权等方式,使一个用户可以使用另一个用户的外模式
  • 外模式是外模式描述语言(一般也归类到DDL)来定义。

内模式

也称为存储模式,是对数据的物理结构和存储方式的描述,是数据在数据库内部的表示方式,是整个数据库底层结构的表示,是数据库在物理存储方面的描述。

特点:

  • 一个数据库只有一个内模式
  • 一个数据库由多个文件组成
  • 内模式对用户是透明的,即在用DML操纵数据库时不涉及内模式
  • 内模式不同于物理层(或独立于物理设备)。它只是一个描述(如,数据是否压缩、加密;存储方式是按顺序、B树结构,还是Hash方法;按照什么方式组织索引;记录的结构有何规定等)
  • 内模式由内模式描述语言(一般也归类到DDL)来定义。因为内模式的设计直接影响到数据库的性能,所以必须要对其有充分的了解,才能合理、有效地优化数据库的性能

二级映像

数据独立性(逻辑独立性、物理独立性)是由二级映像功能来保证的。

  • 逻辑独立性是指应用程序与数据的逻辑结构之间是相互独立的。即,当模式(即逻辑结构)发生改变(如,增加新的关系或表、增加新的数据项或字段、更改数据项的名称或数据类型)时,只要数据库管理员对相应的外模式/模式映像做相应的修改,就可以使外模式保持不变,从而应用程序不需要改变。
  • 物理独立性是指应用程序与存储在磁盘上的数据库中的数据是相互独立的。即,数据在磁盘上的数据库中如何存储完全由DBMS来管理,应用程序不需要了解,它只需要了解数据的逻辑结构就可以了。这样,当数据的存储格式和组织方式改变时,应用程序不需要改变。

外模式/模式映像

  • 由模式生成外模式的规则,定义了各个外模式和模式之间的对应关系

  • 一个数据库可以有多个外模式/模式映像。对应于一个模式可以有多个外模式,所以对于每一个外模式都有一个外模式/模式映像

  • 给数据库提供了逻辑独立性。

指模式在物理设备中的存储结构,定义了模式和内模式之间的对应关系

  • 一个数据库只有一个模式/内模式映像。因为数据库只有一个模式和一个内模式,所以只有一个模式/内模式映像
  • 给数据库提供了物理独立性。
各级模式与各类用户、关系数据库管理系统之间的关系
  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

欧恩意

如有帮助,感谢打赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值