1. 概述
Oracle数据库系统由Oracle数据库和Oracle实例组成,分别对应着数据库的存储结构和软件结构。
- Oracle数据库:是固定的,基于磁盘的数据文件、控制文件、日志文件、参数文件、归档日志文件等。
- Oracle实例:是管理数据库的后台进程和内存结构的集合。
2. 存储结构
存储结构(Storage Structure)分为物理存储结构和逻辑存储结构两种,分别描述了在操作系统中和数据库系统内部数据的组织与管理方式。
Oracle数据库的物理存储结构与逻辑存储结构既相互独立又相互联系,一个数据库在物理上包含多个数据文件,在逻辑上包含多个表空间。
辅助理解记忆:
✔️ 一个表空间包含一个或多个数据文件,一个数据文件只能从属于某个表空间。
-- 创建表空间时可以指定所包含的数据文件 CREATE TABLESPACE my_tablespace DATAFILE '/path/to/mytablespace1.dbf' SIZE 100M, '/path/to/mytablespace2.dbf' SIZE 100M
✔️ 数据库的逻辑块由一个或多个操作系统块构成。
操作系统块是操作系统进行读写操作的最小单位,为了最大程度地利用磁盘存储空间,数据库块大小必须设置为操作系统块大小的整数倍。例如逻辑块大小是操作系统块大小的8.2倍,那么1个逻辑块需要9个操作系统块,剩余的0.8块大小的空间就被浪费了。
✔️ 一个逻辑区只能从属于某一个数据文件,而一个数据文件可包含一个或多个逻辑区。
逻辑区由物理上连续的数据块构成,是数据库存储分配的最小单位。每个数据文件被划分为一组逻辑区。一个逻辑区需要与特定的物理文件关联,以便数据库可以将其数据读取或写入到正确的文件中。
2.1 物理存储结构
Oracle数据库的物理结构就是由一系列操作系统物理文件组成。物理文件可分为三类:
主要包括以下这些文件,每种文件数量因文件类型不同而不同:
2.1.1 初始化参数文件
- 初始化参数文件是数据库启动过程所必需的文件,记录了数据库显式参数的设置。
- 数据库启动的第一步就是根据初始化参数文件中的设置,创建并启动实例,即分配内存空间、启动后台进程。
- 查看参数文件:SQL> show parameter spfile
2.1.2 数据文件
- 数据文件是数据库中所有数据的实际存储空间,所有数据文件大小的和构成了数据库的大小。
- 根据数据信息类型不同,数据文件分为永久性数据文件和临时数据文件两种。
- 查看数据文件:
- 方式1:SQL> select name from v$datafile;
- 方式2:SQL> select file_name from dba_data_files;
2.1.3 控制文件
- 控制文件是记录数据库结构信息的重要的二进制文件,由Oracle系统进行读写操作,DBA 不能直接操作控制文件。
- 控制文件记录的信息有:数据库建立日期、数据库名、数据库中所有数据文件和日志文件的文件名及路径、恢复数据库时所需的同步信息。
- 数据库启动的第二步,根据初始化参数文件中的CONTROL_FILES参数找到控制文件,第三步是根据控制文件中的信息,进行数据库数据文件和重做日志文件的加载,最后打开数据库。
- 一个数据库至少需要一个控制文件,如果控制文件损坏将导致数据库无法启动。
- 查看控制文件:
- 方式1:SQL> select name from v$controlfile;
- 方式2 :SQL> show parameter control_files
- 方式3 :SQL> show parameter control
2.1.4 重做日志文件
- 重做日志文件是以重做记录的形式记录、保存用户对数据库所进行的变更操作,是数据库中最重要的物理文件。
- 利用重做日志文件可以进行事务的重做(REDO)或回退(UNDO),是数据库实例恢复的基础。
- 每一个数据库至少包含两个日志文件组,每个日志文件组至少包括一个日志文件。日志文件组以循环方式进行写操作。每一个日志文件成员对应一个物理文件。
- 查看重做日志文件:SQL> select group#,member from v$logfile;
2.1.5 归档重做日志文件
- 归档重做日志文件是历史联机重做日志文件的集合,是联机重做日志文件被覆盖之前备份的副本。
- 如果数据库工作在归档模式,数据库归档进程会自动将写满的重做日志文件在覆盖之前复制到指定的位置。归档重做日志文件是数据库出现介质故障后实现数据库完全恢复的必要条件。
- 查看归档日志文件:SQL> show parameter recovery
2.1.6 跟踪文件
- 跟踪文件是数据库中重要的诊断文件。
- 跟踪文件中包含数据库系统运行过程中所发生的重大事件的有关信息,可以为数据库运行故障的解决提供重要信息。
- 查看跟踪文件:SQL> show parameter user_dump_dest
2.1.7 告警文件
- 告警文件也是数据库中重要的诊断文件,记录数据库在启动、关闭和运行期间后台进程的活动情况。
- 在数据库出现故障时,应首先查看该文件,但文件中的信息与任何错误状态没有必然的联系。
- 查看预警日志文件:SQL> show parameter background_dump_dest
2.2 逻辑结构
数据库的逻辑结构是从逻辑的角度分析数据库的构成,即创建数据库后形成的逻辑概念之间的关系。
注:在操作系统中,没有数据库逻辑存储结构信息,只有物理存储结构信息。数据库的逻辑结构存储概念存储在数据库的数据字典中,可以通过数据字典查询逻辑存储结构信息。
Oracle数据库的逻辑存储结构分为Oracle数据块、区、段和表空间。一个或多个连续的数据块构成区,一个或多个区构成段,一个或多个段构成表空间,所有表空间构成数据库。
2.2.1 Oracle数据块
- 数据库块(Database Block)是数据库使用的I/O最小单元,又称逻辑块或ORACLE块。
-
一个数据库块对应一个或多个物理块,块的大小由参数 DB_BLOCK_SIZE确定。
-
数据库的格式见下:
2.2.2 区
-
盘区(extent)是由一系列物理上 连续 存放的数据块所构成的Oracle存储结构。
-
盘区是Oracle 存储分配的最小单位 。
-
当一个段中的所有空间被使用完后,系统将自动为该段分配一个新的盘区。
2.2.3 段
- 段(segment)是由一系列区组成的,不是存储空间的分配单位,而是一个独立的逻辑存储结构。
- 对于具有独立存储结构的对象,它的数据全部存储在保存它的段中。
- 一个段只属于一个特定的数据库对象,每当创建一个具有独立段的数据库对象时,Oracle将自动为它创建一个段。
- 根据储存对象类型不同,分为数据段、索引段、临时段和回退段。
2.2.4 表空间
- 表空间是Oracle数据库最大的逻辑存储单元,数据库的大小从逻辑上看就是由表空间决定。
-
表空间与数据库文件直接关联,一个表空间包含一个或多个数据文件,一个数据文件只能从属于某一个表空间,数据库对象就是存储在表空间对应的一个或多个数据文件中。
-
表空间根据存储数据的类型不同,分为 系统表空间和非系统表空间 。非系统表空间又分为临时表空间、撤销表空间、用户表空间。
-
Oracle 12c数据库在创建时会自动创建6个表空间。
名称 | 类型 | 描述 |
---|---|---|
SYSTEM | 系统表空间 | 存放数据字典、数据库对象定义、PL/SQL程序源代码等系统信息 |
SYSAUX | 系统表空间 | 辅助系统表空间,存储数据库组件等信息 |
TEMP | 临时表空间 | 存放临时数据,用于排序等操作 |
UNDOTBS1 | 撤销表空间 | 存储、管理回退信息 |
USERS | 用户表空间 | 存放用户业务数据信息 |
EXAMPLE | 用户表空间 | 示例表空间,存放示例的数据库方案对象信息 |
其他文章: