OCP-042之:数据库逻辑机构

数据库逻辑结构

1 存储关系

Oracle数据库逻辑上是由一个或多个表空间组成的。
表空间物理上是由一个或多个数据文件组成的;而在逻辑上表空间又是由一个或多个段组成的。
数据库空间分配的逻辑单元是数据块,扩展区,段和表空间。在物理级别,数据存储在磁盘上的数据文件中。数据文件中的数据存储在操作系统块中。
在Oracle数据库中,通过为每种不同的数据对象分配不同的段,来保存数据。例如EMP表的所有数据会存放在EMP段中。在Oracle数据库中,段是由一个或多个区组成的,而区又是由连续存储的数据块所组成的。块则是数据库的I/O最小的单位。

1.1 存储结构

在这里插入图片描述

Oracle数据库将表空间数据存储在物理数据文件中。
每个非分区的模式对象和对象的每个分区都存储在它自己的段中,该段只属于一个表空间。例如,非分区表的数据存储在单个段中,而该段又存储在一个表空间中。表空间和数据文件密切相关,但有重要区别:
每个表空间由一个或多个数据文件组成,这些文件符合运行Oracle数据库的操作系统。数据库的数据共同存储在位于数据库的每个表空间中的数据文件中。段可以跨越一个或多个数据文件,但不能跨越多个表空间。数据库必须具有SYSTEM和SYSAUX表空间。SYSTEM在数据库创建期间,Oracle数据库会自动为表空间分配任何数据库的第一个数据文件。该SYSTEM表包含了数据字典,一组表包含数据库的元数据。通常,数据库还具有undo表空间和temp表空间(通常以其命名TEMP)。
数据库可划分为被称为表空间的逻辑存储单元。每一个表空间可以包含很多的Oracle逻辑数据块。
DB_BLOCK_SIZE参数指定了逻辑块的大小。逻辑块的大小范围为2KB至32KB,默认大小为8KB。特定数目的相邻逻辑块构成了一个区。为特定逻辑结构分配的一组区构成了一个段。Oracle数据块是逻辑I/O的最小单位。

SYS@orcl>show parameter db_block

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
db_block_buffers		     integer	 0
db_block_checking		     string	 FALSE
db_block_checksum		     string	 TYPICAL
db_block_size			     integer	 8192

1.2 如何存储表数据

创建表时,就会创建段来保存表数据。表空间包含一组段。从逻辑上讲,表包含由列值组成的行。行最终将以行片段的形式存储在数据库块中。之所以称为行片段,是因为某些情况下,不可以在一个位置存储一整行。当插入行由于太长而不适合单个块时,或者由于更新而导致现有行大小超出了行的当前空间时,就会发生这种情况。

2 表空间和数据文件

Oracle 数据库(tablespace)是由若干个表空间构成的。任何数据库对象在存储时都必须存储在某个表空间中。表空间对应于若干个磁盘文件,即表空间是由一个或多个磁盘文件构成的。表空间相当于操作系统中的文件夹,也是数据库逻辑结构与物理文件之间的一个映射。每个数据库至少有一个表空间,表空间的大小等于所有从属于它的数据文件大小的总和。

2.1 常用表空间

  1. 系统表空间

系统表空间(system tablespace)是每个Oracle数据库都必须具备的。其功能是在系统表空间中存放诸如表空间名称、表空间所含数据文件等数据库管理所需的信息。系统表空间的名称是不可更改的。系统表空间必须在任何时候都可以用,也是数据库运行的必要条件。因此,系统表空间是不能脱机的。

  1. SYSAUX表空间

SYSAUX表空间是随着数据库的创建而创建的,它充当SYSTEM的辅助表空间,主要存储除数据字典以外的其他对象。SYSAUX也是许多Oracle数据库的默认表空间,它减少了由数据库和DBA管理的表空间数量,降低了SYSTEM表空间的负荷。

  1. 临时表空间

相对于其他表空间而言,临时表空间(temp tablespace)主要用于存储Oracle数据库运行期间所产生的临时数据。数据库可以建立多个临时表空间。当数据库关闭后,临时表空间中所有数据将全部被清除。除临时表空间外,其他表空间都属于永久性表空间。
一个临时表空间中仅包含会话时间短暂的数据。永久模式对象不能驻留在临时表空间中。一个临时文件存储临时表空间的数据。临时表空间可以改善不适合内存的多个排序操作的并发性。这些表空间还提高了各种空间管理操作的效率。

  1. 撤销表空间

Oracle数据库使用撤消数据执行以下操作:回滚活动事务,恢复已终止的交易,提供读取一致性,执行一些逻辑闪回操作。

2.2 表空间和数据文件的关系

数据库、表空间和数据文件是紧密相关的,但它们之间又有着重要区别:

  • Oracle数据库由一个或多个称为表空间的逻辑存储单元组成,表空间作为一个整体存储数据库中的所有数据,并且一个表空间只能属于一个数据库。数据库的大小是该数据库中所表空间大小总和。
  • 从物理讲,Oracle数据库内的每个表空间由一个或多数据文件组成,并且一个数据文件只能属于一个表空间。表空间大是所有数据文件大小的总和。这些数据文件与Oracle运行所在的操作系统的文件有一样的物理结构。
  • 数据库的所有数据都存储在数据文件中,数据库的每个表空间都由这些数据文件组成。例如,最简单的Oracle数据库只有一个表空间和一个数据文件。

从Oracle Database 12c开始,您可以使用该ALTER DATABASE MOVE DATAFILE语句在数据库打开并访问该文件时将在线数据文件从一个物理文件移动到另一个物理文件。您可以使用此技术来实现以下目标:

  • 将表空间从一种存储移动到另一种存储
  • 将不经常访问的数据文件移动到较低成本的存储
  • 将表空间设置为只读并将其数据文件移动到一次写入存储,例如一次写入多次读取(WORM)驱动器
  • 将数据库移动到Oracle ASM

2.3 数据字典管理和本地管理方式

在表空间中区是最小的空间分配单位,对表空间的管理是以区为单位进行的。根据管理方式的不同,表空间分为本地管理表空间和字典管理表空间:

  1. 本地管理方式的表空间:在表空间内通过位图管理区。在本地管理的表空间中,每个数据文件内都维护一个位图,以了解该数据文件内块的空闲或使用状态。位图中的每个位对应于一个块或一组块。其特点是分配了的某个区或
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

-风中叮铃-

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值