- 数据库存储体系结构
构成Oracle DB 的文件可划分为以下类别:
•
控制文件:包含与数据库本身相关的数据,即物理数据库结构信息。这些文件对数据库至关重要。没有这些文件,就无法打开数据文件以访问数据库中的数据。
•
数据文件:包含数据库的用户或应用程序数据,以及元数据和数据字典
•
联机重做日志文件:用于进行数据库的实例恢复。如果数据库服务器发生崩溃,但未丢失任何数据文件,那么实例便可使用这些文件中的信息恢复数据库。
下列附加文件对成功运行数据库非常重要:
•
参数文件:用于定义实例启动时的配置
•
口令文件:允许sysdba、sysoper和sysasm远程连接到实例并执行管理任务
•
备份文件:用于进行数据库恢复。如果原始文件在发生介质故障或用户错误时被损坏或删除,通常要还原备份文件。
•
归档重做日志文件:包含实例发生的数据更改(重做)的实时历史记录。使用这些文件和数据库备份,可以恢复丢失的数据文件。也就是说,归档日志能够恢复还原的数据文件。
•
跟踪文件:每个服务器和后台进程都可以写入关联的跟踪文件。当进程检测到内部错误时,进程会将有关该错误的信息转储到相应的跟踪文件中。写入跟踪文件的一些信息是为数据库管理员提供的,而其它信息是为Oracle Support Services 提供的。
•
预警日志文件:这些文件包含特殊的跟踪条目。数据库的预警日志是按时间顺序列出的消息日志和错误日志。Oracle 建议定期查看预警日志。
- 逻辑和物理数据库结构
数据库具有逻辑结构和物理结构。
方案Schema
“方案”是数据库用户拥有的数据库对象的集合。方案对象是直接引用数据库数据的逻辑结构。方案对象包括诸如表、视图、序列、存储过程、同义词、索引、集群和数据库链接等结构。通常,方案对象包括应用程序在数据库中创建的所有内容。
数据库、表空间和数据文件
数据库、表空间和数据文件之间的关系:
每个数据库在逻辑上都分为一个或多个表空间。对每个表空间均显式创建一个或多个数据文件,以在物理上将所有逻辑结构的数据都存储在表空间中。如果是TEMPORARY表空间,那么表空间将具有临时文件,而不是数据文件。
表空间
数据库分为多个逻辑存储单元,这些单元称为“表空间”,用于将相关逻辑结构组合在一起。例如,表空间一般会将应用程序的所有对象分成一组,以简化一些管理操作。可以使用一个表空间存放应用程序数据,使用另一个存放应用程序索引。
数据块
从最底层来看,Oracle DB 的数据存储在“数据块”中。一个数据块与磁盘中特定字节数的物理数据库空间相对应。每个表空间的数据块大小是在表空间创建时指定的。数据库使用和分配Oracle 数据块中的空闲数据库空间。
区
下一层逻辑数据库空间是“区”。区是特定数量的相邻数据块(通过一次分配获得),用于存储特定类型的信息。
段
区之上的逻辑数据库存储层称为“段”。段是为某个逻辑结构分配的一组区。
例如:
•
数据段:每个非集群的、不按索引组织的表都有一个数据段,但外部表、全局临时表和分区表除外,这些表中的每个表都有一个或多个段。表中的所有数据都存储在相应数据段的区中。对于分区表,每个分区都有一个数据段。每个集群也都有一个数据段。集群中每个表的数据都存储在集群的数据段中。
• 索引段:每个索引都有一个索引段,存储其所有数据。对于分区索引,每个分区都有一个索引段。
•
还原段:为每个数据库实例创建一个UNDO表空间。该表空间包含大量用于临时存储还原信息的还原段。还原段中的信息用于生成读一致性数据库信息,并且在数据库恢复过程中,用于为用户回滚未提交的事务处理。
•
临时段:临时段是在需要临时工作区来执行SQL 语句时,由Oracle DB 创建的。语句完成执行后,临时段的区将返回到实例以备将来使用。为每个用户指定一个默认临时表空间,或指定一个在数据库范围内使用的默认临时表空间。
Oracle DB 对空间进行动态分配。如果段中的现有区都已满,将会再增加一些区。因为区是根据需要进行分配的,因此段中的区在磁盘中可能是相邻的,也可能是不相邻的。这些区可以来自属于同一个表空间的不同数据文件。
- 表空间和数据文件
数据库被划分为多个“表空间”,表空间是可用于将相关逻辑结构组合在一起的逻辑存储单元。每个数据库在逻辑上都分为一个或多个表空间。
对每个表空间均显式创建一个或多
个数据文件,每个数据文件只属于一个表空间,表空间在物理上将所有逻辑结构的数据都存储在表空间中。
注:还可以创建大文件表空间,这种表空间只有一个文件。此文件通常非常大,其大小可达到行ID 体系结构允许的最大大小。此最大大小是表空间的块大小乘以236,即,如果块大小为32 KB,则最大大小为128 TB。传统的小文件表空间(默认值)通常包含多个数据文件,但这些文件不能很大。
- SYSTEM和SYSAUX表空间
• SYSTEM 和SYSAUX 表空间是在创建数据库时创建的
必需存在的表空间。这些表空间必须联机。
• SYSTEM 表空间用于核心功能(例如数据字典表)。
• 辅助的SYSAUX 表空间用于附加的数据库组件
(如Oracle Enterprise Manager Repository)。
• 不建议使用SYSTEM 和SYSAUX 表空间来存储应用
程序的数据。
每个Oracle DB 必须包含一个SYSTEM表空间和一个SYSAUX表空间。
它们是在创建数据库时自动创建的。系统默认值是创建小文件表空间。还可以创建大文件表空间,Oracle DB 可通过该表空间管理超大文件。
表空间的状态可以是联机(可访问)或脱机(不可访问)。打开数据库时,SYSTEM表空间始终
处于联机状态。这个表空间
可存储支持数据库核心功能的表,如数据字典表。
SYSAUX表空间是SYSTEM表空间的辅助表空间。SYSAUX表空间可存储许多的数据库组件(例如EM),要使所有数据库组件正常运行,该表空间
必须处于联机状态。
注:SYSAUX表空间可以脱机以执行表空间恢复,而SYSTEM表空间则不能。这两种表空间都不能设置为只读。
- 段、区和块
•
段存在于表空间中
•
段是区的集合
•
区是数据库的集合
•
数据块映射到磁盘块
一部分数据库对象(例如表和索引)以段的形式存储在表空间中。
每个段都包含一个或多个区。
区由相邻的数据块组成,这意味着每个区只能存在于一个数据文件中。
数据块是数据库中最小的I/O 单元。
数据库从操作系统(OS) 请求数据块集时,OS 会将数据块集映射到存储设备上的实际文件系统或磁盘块。因此,可不必了解数据库中任何数据的物理地址。这还意味着可以在多个磁盘上条带化或镜像一个数据文件。
可以在创建数据库时设置数据块的大小。对大多数数据库而言,默认的8 KB 块大小是足够的。
当数据库支持拥有大型表和索引的数据仓库应用程序时,最好设置较大的块大小。
当数据库支持执行随机读写的事务处理应用程序时,最好指定较小的块大小。
块大小的最大值取决于OS。Oracle 块大小的最小值为2 KB,这个值很少使用。可以设置块大小不标准的表空间。
- 自动存储管理
• 是可移植的高性能集群
文件系统
• 管理Oracle DB 文件
• 通过ASM 集群文件系统
(ACFS) 管理应用程序
文件
• 将数据分布到各个磁盘中
以平衡负载
• 建立数据镜像以防范故障
• 解决存储管理挑战
自动存储管理(ASM) 为Oracle DB 文件提供文件系统与卷管理器纵向集成。ASM 可管理
单个对称多处理(SMP) 计算机,或管理集群的多个节点来支持Oracle Real Application
Clusters (RAC)。
Oracle ASM 集群文件系统(ACFS) 是一种多平台、可伸缩的文件系统和存储管理技术,该
技术扩展了ASM 的功能,可支持 Oracle DB 外部的应用程序文件,如可执行文件、报表、
BFILE 、视频、音频、文本、图像以及其它一般用途的应用程序文件数据。
ASM 在所有可用资源中分布输入/ 输出(I/O) 负载,既免除了手动优化I/O 又优化了性能。
ASM 帮助DBA 管理动态数据库环境,让DBA 在不关闭数据库的情况下,通过增加数据
库的大小来调整存储分配。
ASM 可以维护数据的冗余副本来提供容错能力,也可以构建在供应商提供的存储机制
之上。数据管理是通过为各类数据选择所需的可靠性和性能指标来实现的,而不是逐个
文件地进行人工交互。
通过使手动完成的存储工作自动化,ASM 功能节省了 DBA 的时间,从而提高了管理员的
能力,使其可以管理更多和更大的数据库,而且效率也更高。
- ASM 存储组件
ASM 不会妨碍任何现有的数据库功能。现有数据库能够像平常一样工作。新文件可以被
创建为ASM 文件,而现有文件既可以按原有方式进行管理,也可以移植至 ASM。
上图说明了Oracle DB 数据文件与ASM 存储组件之间的关系。鸦脚标记代表一对多关系。
Oracle DB 数据文件与存储在操作系统的文件系统中的文件或ASM 文件之间是一对一
关系。
Oracle ASM 磁盘组是作为一个逻辑单元进行管理的一个或多个Oracle ASM 磁盘的集合。
磁盘组中的数据结构是自包含的,使用部分空间来满足元数据需求。Oracle ASM 磁盘是
为Oracle ASM 磁盘组预配的存储设备,可以是物理磁盘,也可以是分区、存储阵列中的
逻辑单元号(LUN) 、逻辑卷(LV) 或连接到网络的文件。每个ASM 磁盘被分成许多ASM
分配单元(AU),该单元是 ASM 可以分配的最小相邻磁盘空间量。在创建ASM 磁盘组时,
可以将ASM 分配单元的大小设置为 1、2、4、8、16、32 或64 MB ,具体取决于磁盘组
的兼容级别。一个或多个ASM 分配单元即形成一个 ASM 区。Oracle ASM 区是用于存放
Oracle ASM 文件内容的裸存储。Oracle ASM 文件由一个或多个文件区组成。为了支持
非常大的ASM 文件,可以使用可变大小区,区大小可等于 AU 大小的1 倍、4 倍和16 倍。
- 与Oracle DB 交互:内存、进程和存储
以下示例在最基本的层面上描述了Oracle DB 的操作。在该示例展示的Oracle DB 配置中,
用户和关联服务器进程在不同计算机上运行,这些计算机通过网络连接。
1. 在安装了Oracle DB 的节点(通常称为“主机”或“数据库服务器”)上启动了一个
实例。
2. 用户启动一个应用程序,从而衍生了一个用户进程。该应用程序尝试与服务器建立
一个连接。(此连接可以是本地连接、客户机/ 服务器连接或来自中间层的三层连接)。
3. 服务器运行一个具有相应Oracle Net 服务处理程序的监听程序。监听程序检测到应用
程序发出的连接请求,并创建一个代表用户进程的专用服务器进程。
4. 用户运行一条DML 类型的SQL 语句并提交事务处理。例如,用户更改表中的客户
地址并提交更改。
5. 服务器进程接收该语句,并检查共享池(一个SGA 组件)中是否有包含相同 SQL
语句的共享SQL 区域。如果找到共享SQL 区域,服务器进程将检查用户对于所请求
数据的访问权限,然后使用现有的共享SQL 区域处理该语句。如果未找到共享SQL
区域,则为该语句分配一个新的共享SQL 区域,以便对该语句进行语法分析和处理。
6. 服务器进程从实际数据文件(表)或数据库缓冲区高速缓存中存储的值中检索任何
必需的数据值。
7. 服务器进程修改SGA 中的数据。因为已提交事务处理,所以日志写进程(LGWR) 会
立即在重做日志文件中记录该事务处理。数据库写进程(DBW n) 在一个高效的时机将
修改后的块永久写入磁盘。
8. 如果事务处理成功,服务器进程将通过网络向应用程序发送一条消息。如果事务处理
不成功,则传送一条错误消息。
9. 在整个过程中,其它后台进程也在运行,监视是否有需要干预的情况。此外,数据库
服务器管理其他用户的事务处理,并防止请求相同数据的事务处理之间发生争用。