Oracle物理存储结构概述

Oracle物理存储结构概述

物理存储结构简介

Oracle RDBMS 的特点之一是逻辑数据结构(如表、 视图和索引)与物理存储结构的独立性。

由于物理结构和逻辑结构是分开的,可以管理数据的物理数据存储,而不会影响对逻辑结构的访问。例如,重命名数据库文件并不会重命名存储在其中的表。

Oracle数据库的三大关键数据库文件

Oracle 数据库是在持久性的磁盘存储中存储的一组 Oracle 数据文件。

当我们使用 CREATE DATABASE 语句时生成的数据库文件:

1、数据文件和临时文件

数据文件是磁盘上的一个物理文件,由 Oracle 数据库创建,并包含如表和索引之类的数据结构。

临时文件是一个属于临时表空间的数据文件。

数据按 Oracle 专有格式写入这些文件,且不能由其他程序读取。

2、控制文件

控制文件是一个跟踪数据库的物理组件的根文件。

3、联机重做日志文件

在线重做日志是一组包含对数据所做的更改记录的文件。

数据库实例是一组管理数据库文件的内存结构,下图描述了实例和它所管理的文件之间的关系

Oracle数据库文件的存储方案(机制)

Oracle数据库提供几种方案可用于分配和管理这些文件的存储。

最常见的存储机制如下:

1、Oracle 自动存储管理(Oracle ASM)

Oracle ASM 被专门设计用来供 Oracle 数据库使用的文件系统。虽然ASM也可以用于存放其它文件,但它主要还是以存储Oracle相关产品的文件为主。

2、操作系统文件系统

大多数 Oracle 数据库在文件系统中存储文件,这是建立在一个连续的磁盘地址空间内的数据结构。所有操作系统都有文件管理器,用于在文件系统中为文件分配和释放磁盘空间。

文件系统可以将磁盘空间分配给多个文件。每个文件都有一个名称,并对应用程序(如 Oracle 数据库)显示为一个连续地址空间。数据库可以创建、 读取、 写入、 调整大小、和删除文件。

文件系统通常是由称为逻辑卷管理器 (LVM)的软件包创建,并建立在逻辑卷的基础上。LVM 使多个物理磁盘被合并到一个单一的连续地址空间,对上层软件显示为一块磁盘。

3、原始设备

原始设备是一些磁盘分区,或未使用文件系统格式化的逻辑卷。原始设备的主要好处是能够执行直接 I/O 操作,并按更大的缓冲区写入。对于直接 I/O, 应用程序直接向存储设备写入或从存储设备读取,绕过操作系统缓冲区高速缓存。

备注:现在许多文件系统都支持数据库和其他应用程序的直接 I/O,让它们自己管理自己的缓存。历史上,原始设备曾被作为实施直接 I/O 的唯一手段。

这类存储方式,已经越来越少使用,了解即可。

4、集群文件系统

集群文件系统是使多台计算机共享文件存储,同时保持一致的空间分配和文件内容的软件。在 Oracle RAC 环境中,集群文件系统使共享存储显示为在集群环境中由多台计算机共享的文件系统。

在集群文件系统中,单个集群中的计算机失败不会使文件系统不可用。而在操作系统文件系统中,倘若某个通过 NFS 或其他手段共享文件的计算机失败,则文件系统会变得不可用。

数据库可以采用前面的某些存储机制的组合。例如,数据库可以将控制文件和联机重做日志文件存储在传统的文件系统中,将某些用户数据文件存储在原始分区上,剩余的数据文件存储在 Oracle ASM 中,而归档重做日志文件存储到集群文件系统。

Oracle自动存储管理 (Oracle ASM)

Oracle ASM 是一个针对 Oracle 数据库文件的高性能、 易管理的存储解决方案。

Oracle ASM 是一个卷管理器,并提供一个专为数据库使用而设计的文件系统。

Oracle ASM 提供几个超越传统文件系统和存储管理器的优势,包括以下这些:

1、简化了与存储相关的任务,如创建数据库、规划数据库文件布局、和管理磁盘空间

2、跨物理磁盘分布数据,以消除热点,并提供均匀的磁盘性能

3、在存储配置更改后自动平衡数据

若要使用 Oracle ASM,需要为 Oracle 数据库分配磁盘分区,最好是经过条带化和镜像的。Oracle ASM 会管理磁盘空间,跨所有可用资源分配 I/O 负载,以优化性能,同时消除了手动优化 I/O 的需要。例如,你可以为数据库增加磁盘大小,或将数据库的某些部分移动到新设备,而不必关闭数据库。

Oracle ASM 存储组件

Oracle ASM磁盘组是一个磁盘(磁盘分区)的集合,被 Oracle ASM作为一个单元来管理。

在一个磁盘组内, Oracle ASM为数据库文件提供了一个文件系统接口。

Oracle 数据库可以将数据文件存储为一个 Oracle ASM磁盘组中的 Oracle ASM文件,

下图显示了一个使用 Oracle ASM的数据库中的存储组件之间的关系。虽然 Oracle ASM可以存储其他类型的文件,该图只描述了一个 Oracle ASM文件和数据文件之间的关系。

Oracle ASM磁盘

Oracle ASM 磁盘是提供给一个 Oracle ASM 磁盘组的存储设备。

Oracle ASM 磁盘可以是某个存储阵列的物理磁盘、分区、逻辑单元号 (LUN) , 或是一个逻辑卷或网络附加文件。

Oracle ASM 磁盘,可以当数据库正在运行时,被添加到磁盘组,或从磁盘组中删除。

当向磁盘组中添加一个磁盘时,可以为磁盘指定一个名称,否则会自动被赋予一个 Oracle ASM 磁盘名称。

Oracle ASM磁盘组

Oracle ASM 磁盘组是一组 Oracle ASM 磁盘的集合,被作为一个逻辑单元来管理。

在磁盘组中的数据结构是自包含的,并会在磁盘组中消耗一些磁盘空间。

在一个磁盘组内, Oracle ASM 为数据库文件提供了一个文件系统接口。

存储在磁盘组中的文件的内容被均匀分布或条带化,以消除热点,并为所有磁盘提供均匀的性能。其性能与原始设备的性能相差无几。

Oracle ASM文件

Oracle ASM 文件是一个存储在 Oracle ASM 磁盘组中的文件。

Oracle 数据库按文件与 Oracle ASM 进行通信。

数据库可以将数据文件、 控制文件、 联机重做日志文件、和其他类型的文件存储为Oracle ASM 文件。

当数据库要创建一个文件时, Oracle ASM 创建一个 Oracle ASM 文件,并分配一个以加号 (+)和磁盘组名称开头(如+ DISK1)的完全限定名称。

备注:Oracle ASM 文件可以与原始磁盘和第三方文件系统等其他存储管理选项共存。此功能简化了将 Oracle ASM 集成到现有环境的过程。

Oracle ASM扩展区

Oracle ASM 扩展区是用于容纳 Oracle ASM 文件内容的原始存储。

一个 Oracle ASM 文件包含一个或多个文件扩展区。

每个 Oracle ASM 扩展区是由特定的磁盘上的一个或多个分配单元组成的。

注意:Oracle ASM 扩展区与用于在段中存储数据的扩展区不同。

Oracle ASM分配单元

分配单元是磁盘组中空间分配的基本单位。

分配单元是由 Oracle ASM 分配的最小连续磁盘空间。

由一个或多个分配单元形成一个Oracle ASM 扩展区。

Oracle ASM 实例

Oracle ASM 实例是一个专门用于管理 Oracle ASM 磁盘的 Oracle 实例。

ASM 实例和数据库实例都需要对 ASM 磁盘组中的磁盘的共享访问。
ASM 实例管理磁盘组的元数据,并提供对数据库实例的文件布局信息。

数据库实例直接与 ASM 磁盘进行 I/O ,而不需要通过 ASM 实例。

ASM 实例与数据库实例建立在相同的技术架构之上。例如,与数据库实例类似, ASM 实例也有一个系统全局区域 (SGA) 和多个后台进程。但是,ASM 实例无法装载数据库,并且比数据库实例执行的任务更少。

下图显示了一个 Oracle ASM 实例和两个数据库实例的单节点配置,每个数据库实例与一个不同的单实例数据库相关联。ASM 实例管理元数据,并为用于这两个数据库存储数据的 ASM 文件提供空间分配。其中一个ASM 磁盘组有四个 ASM 磁盘,而另一个磁盘组有两个磁盘。这两个数据库实例可以访问所有磁盘组。

Oracle 管理的文件和用户管理的文件

用户管理的文件

可以使用用户管理的文件来直接管理数据库中的操作系统文件。由你来决定关于文件的结构和命名。例如,当创建表空间时,设置表空间数据文件的名称和路径。

Oracle管理的文件

Oracle 管理的文件是一种命名策略,能够按数据库对象而不是按文件名称来指定操作。例如,您可以创建一个表空间,而无需指定其数据文件的名称。这样一来,Oracle 管理的文件不需要管理员直接管理数据库中的操作系统文件。Oracle ASM 需要使用 Oracle 管理的文件。

备注:Oracle管理的文件不会影响诸如跟踪文件、审计文件、和警报日志等管理性文件的创建或命名。

通过初始化参数,可以指定一个特定类型文件的文件系统目录

Oracle 管理的文件特性可确保数据库能创建具有唯一名称的文件,并在不再需要时删除它。

数据库在内部使用标准文件系统接口来创建和删除文件,如数据文件、临时文件、 控制文件、和存储在快速恢复区中的与恢复相关的文件等。

同一个数据库中,可以混合使用 Oracle 管理的文件和用户管理的文件。

相关推荐
m0_463672201 小时前
Golang如何用火焰图分析性能_Golang火焰图教程【对比】
jvm·数据库·python
m0_591364731 小时前
Go语言怎么做链路追踪_Go语言分布式链路追踪教程【精选】
jvm·数据库·python
l1t1 小时前
DeepSeek总结的欢迎来到 ORDER BY 丛林
数据库·算法
m0_463672201 小时前
HTML函数工具是否支持雷蛇等游戏外设_RGB同步汇总【汇总】
jvm·数据库·python
黄昏晓x2 小时前
数据库----索引
数据库
志栋智能2 小时前
安全、稳定是超自动化运维的底座
网络·数据库·人工智能
iAm_Ike2 小时前
如何用 IndexedDB 存储从 API 获取的超大列表并实现二级索引
jvm·数据库·python
数据最前线2 小时前
亡羊补牢?Oracle 计划推出月度安全补丁
数据库·oracle
X56612 小时前
CSS Flex布局如何让特定子元素不参与缩放_设置flex-shrink- 0的实战技巧
jvm·数据库·python