Oracle 体系结构四 逻辑和物理存储结构之间的关系

时间:2022-01-30 18:21:42

Oracle数据库从物理存储中完全抽象出逻辑存储。逻辑数据存储采用“段”的形式。段的类型有很多种:典型的段是“表”。这些段以物理形式存储在数据文件中。通过表空间将逻辑存储从物理存储中抽象出来。逻辑结构和物理结构及其定义之间的关联在数据字典中定义。

物理数据库结构

Oracle数据库包括三类文件,以及其他几种数据库之外(或者说是可选的)的文件。必需的文件是控制文件(control file)、联机重做日志文件(online redo

log file)和数据文件(data file)。通常所说的外部文件(还有一些事高级选项需要的)是初始化文件、口令文件、归档重做日志文件以及日志和追踪文件。

控制文件

控制文件包含指向数据库其余部分的指针:联机重做日志文件和数据文件的位置,以及更新的归档日志文件(如果数据库处于归档日志模式)的位置。它还存储这维护数据库完整性所需的信息:例如各种重要的序列号和时间戳。例如,如果将恢复管理器工具用于备份,则控制文件也将存储这些备份的详细信息。控制文件的大小通常不过数MB,却起着至关重要的作用。

不必考虑使控制文件的多路副本保持同步,Oracle将做好这一切。维护工作将自动完成,只需要控制要制作多少副本,以及要将副本放于何处即可。如果创建数据库时设置的副本数量或位置有误,就可以在后期添加或删除副本,或移动它们,但要注意,执行任何此类工作都需要停机,因此,最好还是一开始就设置好。如果任何控制文件副本受损,数据库实例将立即终止。Oracle不允许使用控制文件数量低于要求的数据库。

联机重做日志文件

重做日志按时间顺序存储应用于数据库的一连串的变更向量。其中仅包含重建(或重做)所有已完成工作的最少限度的信息。如果数据文件(或整个数据库)受损,则可以将这些变更向量应用于数据文件备份来重做工作,将它们恢复到发生故障的那一刻前的状态。重做日志包含两类文件:联机重做日志文件(必需的)和归档日志文件(可选的)。

每个数据库至少有两个联机重做日志文件,但与控制文件一样,优秀的DBA总是为每个联机重做日志文件创建多个副本。联机重做日志包含多组联机重做日志文件,每个文件都称为一个成员。Oracle数据库至少需要两个组,其中每个组知道有一个成员在运行。处于性能考虑,可以创建两个以上的组,出于安全起见,每组要有多个成员。

其中一个组是当前组:LGWR将更改写入当前联机重做日志文件。当用户会话更新数据库缓冲区缓存中的数据时,也将尽可能少的变更向量写出到重做日志缓冲区。LGWR将此缓冲区不断转储到当前联机重做日志文件组中的文件。日志文件的大小固定不变,因此,当前组中文件最终会被写满。此时,LGWR将执行称为“日志切换”的操作。这使第二个组称为当前组,并开始执行写入。如果数据库配置得当ARCn进程将归档(实际上是备份)第一个组中的日志文件成员。当第二个组变满时,LGWR将再切换回第一个组,使第一个组成为当前组,并重写其内容。ARCn将接着归档第二个组。这样,联机重做日志文件组(及其成员)将被循环使用,而每次日志切换将生成归档重做日志文件。

与控制文件一样,如果每组具有多个成员(事实也应当如此),那么仍然不必担心保持这些成员同步的问题。LGWR能够确保对所有成员进程并行写操作,从而使这些成员完全相同。如果丢失某个组的一个成员,只要还存在其他成员,数据库仍然能够继续运行。

联机重做日志文件组的大小与数量涉及调整问题。通常,我们应当选择与预期活动数相适应的大小。至少为50MB,但某些活动数特别多的数据库需要将此数值提高到数GB,否则,每过几分钟,文件就会变慢。就十分忙碌的数据库而言,每秒钟可生成数MB的重做数据,就基本处于静态的数据库而言,每小时也不过生成数MB的重做数据。每个联机重做日志组的成员数量取决于适当的容错级别,也依照住址标准中的文档记录而定。不过,不必再数据库创建阶段担心这个问题。在稍后的任意时间,都能够移动、添加或删除联机重做日志文件,并且可以任意创建不同大小的联机重做日志文件。上述操作都可以在不停机的情况下“联机”执行,因此对于最终用户来说是透明的。

数据文件

在数据库创建阶段,至少必须创建两个数据文件。一个用于SYSTEM表空间(存储数据字典),一个用于SYSAUX表空间(存储数据字典的辅助数据),一个用于UNDO表空间(存储保护事务所需的撤销段)。

数据文件是数据的存储仓库。数据文件的大小与数量实际上是不受限制。其大小只受操作系统和硬件功能的限制。

数据文件是系统管理员可以看见的物理结构。从逻辑上讲,它们是段(包含编程人员可以看到的用户数据的段,以及构成数据字典的段)的储存库。“段(segment)”是数据的存储结构,典型的段是表和索引。在数据库的生命周期内,可以随时重命名、移动、添加或删除数据文件,也可以重设其大小。对某些数据文件执行某些操作时,将产生停机时间。

在操作系统级别看,数据文件由多个操作系统块组成。在内部,将数据文件的格式设置为Oracle“块(block)”。在每个数据文件中,这些块连续编号。在创建数据文件时,块大小固定不变,在大多数环境中,整个数据库的块大小都是一样的。块大小设计调整问题,大小范围是2KB到32KB(收到平台的限制)。Oracle块大小与操作系统的块大小不存在任何关联。

Oracle 体系结构四 逻辑和物理存储结构之间的关系

块中存在头部分和数据区域,还可能有一些空闲空间。头部分包含诸如行目录的信息,行目录列出块中行数据区域中的位置(如果将相应的块用于表段),还包含行锁定信息(如果有事务或几个事务正在处理块中的行)。数据区域包含行本身,如行(如果是表段的一部分)或索引键(如果块是索引段的一部分)。

服务器进程对数据文件执行读操作,而DBWn对数据文件执行写操作。

其他数据库文件

这些文件位于数据库之外。在实际中,它们都是必需的,但雅阁地将,它们并不是数据库的一部分。

  • 实例参数文件(Instance Parameter File)当启动Oracle实例时,SGA结构会根据此参数文件的设置内置到内存,后台进程会据此启动。这是启动实例所需的唯一文件。其中的参数有数百个,但只有一个是必需的,它就是DB_NAME参数。其他多有参数都有默认值。因此说,此参数文件可以很小,但必须存在。
  • 口令文件(Password File)用户用过提交用户名和口令来建立对话。Oracle服务器根据存储在数据字典的用户定义对用户名和口令进行验证。数据字典是数据库中的一组表,如果未打开数据库,将无法对其进行访问。有时,需要在使用数据字典前对用户进行身份验证:在需要启动数据库时或创建数据库时。外部口令文件是完成此任务的一种方式。它包含存在于数据字典之外的少量用户名和口令(通常少于6个),这些用于在使用数据字典前连接到实例。
  • 归档重做日志文件(Archive Redo Log Files)当联机重做日志文件变满时,ARCn进程会将联机重做日志文件从数据库复制到归档日志文件中。在完成后,归档日志就不再是数据库的一部分,因为它不是连续的数据库操作所必需的。但是,如果需要还原数据文件备份,它将起到重要的作用。Oracle提供了用于管理归档重做日志文件的功能。
  • 警报日志和跟踪文件(Alert Log and Trace Files)警报日志是影响视力和数据库的某些重要操作的相关消息的连续流。并非所有事项都予以记录:只记录认为确实重要的事件,例如启动和关闭、更改数据库的物理结构和更改控制实例的参数。后台进程会在检测到错误条件时生成跟踪文件,有时也用于报告特定事件。

逻辑数据库结构

Oracle使用术语“段”来描述任何包含数据的结构。典型的段是包含数据行的表,但是Oracle数据库包含十多种段类型。其中最引人关注的表段、索引段和撤销段。Oracle通过表空间(tablespace)方式,将逻辑存储从物理存储中抽象出来。表空间在逻辑上是一个或多个段的集合,在物理上是一个或多个数据文件的集合。如果使用“关系分析”术语,则段和数据文件之间存在多对多关系:可以将一个表分布在多个数据文件中,而一个数据文件也可能包含多个表的一部分。Oracle通过在段和文件之间插入表空间实体,解决这种多对多关系的问题。

必须在创建数据库时创建SYSAUX表空间。如果未予指定,将创建默认的SYSAUX表空间。

段由多个块组成。数据文件的格式被设置为多个块,随着块的增加,这些块被分配给段。由于每次管理一个块的空间过于耗时,又将块分组为区间(extent)。区间是数据文件中编号连续的一系列块,通过为段新添区间,段将扩大。这些区间不必相邻,即使在同一数据文件中,也是如此。它们可以来自作为段所在表空间一部分的任何数据文件。

从逻辑上讲,一个表空间可以包含多个段,每个段可以包含多个区间。区间是一组Oracle块。从物理上界量,数据文件由多个操作系统块(由操作系统正在使用的文件系统所分配)组成。连接模型的两端的关系显示一个表空间可以包含多个数据文件,从最低级别看,一个Oracle块将包含多个操作系统块。

 数据字典

数据字典包含从逻辑上和物理上描述数据库及其内容的元数据。用户定义、安全信息、完整性约束和性能监视信息都是数据字典的一部分。元数据作为一组段存储在SYSTEM和SYSAUX表空间中。

从很多方面讲,构成数据字典的段与其他的段很相似。关键区别在于:数据字典表在创建数据库时生成,你无权直接访问它们。Oracle提供了一组视图来查询字典。视图有四种形式:带有前缀CDB_、DBA_、ALL_和USER_。任何带有前缀USER_的视图将描述查询视图的用户拥有的对象。任何带有前缀ALL_的视图将显示描述您有权访问的对象的行。因此ALL_TABLES将显示描述你的表的行,以及描述已经授权你查看的任何人的表的行。任何带有前缀DBA_的视图将显示数据库中每个对象的行,因此,DBA_TABLES拥有数据库中每个表对应的行。CDB视图与DBA视图相同,除非在多租户数据库中工作。在创建数据库的过程中,将创建这些视图,还会创建大量由Oracle提供的PL/SQL包来帮助数据库管理员管理数据库,帮助编程人员开发应用程序。PL/SQL代码也存储在数据字典中。

表空间和数据文件之间的关联在数据库控制文件中维护。其中列出多有数据文件,致命其所属的表空间。如果没有控制文件,实例就无法找到数据文件,然后识别组成SYSTEM表空间的文件。只有打开SYSTEM表空间时,实例才可能访问数据字典,才可能打开数据库。

Oracle 体系结构四 逻辑和物理存储结构之间的关系的更多相关文章

  1. 学习笔记:oracle学习一:oracle11g体系结构之物理存储结构

    目录 1.物理存储结构 1.1 数据文件 1.2 控制文件 1.3 日志文件 1.3.1 重做日志文件 1.3.2 归档日志文件 1.4 服务器参数文件 1.4.1 查看服务器参数 1.4.2 修改服 ...

  2. 学习笔记:oracle学习一:oracle11g体系结构之体系结构概述和逻辑存储结构

    目录 1.oracle 11g体系结构概述 1.1 三个重要概念 1.2 oracle数据库存储结构 2 逻辑存储结构 2.1 数据块(Data Blocks) 2.2 数据区(Extent) 2.3 ...

  3. Oracle 11g 物理存储结构

    Oracle 系统的物理存储结构比较具体和直观,它用来描述 Oracle 数据在磁盘上的物理组成情况.Oracle 系统的数据在逻辑上存储在表空间中,而在物理上存储在表空间所包含的物理文件(即数据文件 ...

  4. (1.3)学习笔记之mysql体系结构(C/S整体架构、内存结构、物理存储结构、逻辑结构)

    目录 1.学习笔记之mysql体系结构(C/S架构) 2.mysql整体架构 3.存储引擎 4.sql语句处理--SQL层(内存层) 5.服务器内存结构 6.mysql如何使用磁盘空间 7.mysql ...

  5. 算法与数据结构(四) 图的物理存储结构与深搜、广搜(Swift版)

    开门见山,本篇博客就介绍图相关的东西.图其实就是树结构的升级版.上篇博客我们聊了树的一种,在后边的博客中我们还会介绍其他类型的树,比如红黑树,B树等等,以及这些树结构的应用.本篇博客我们就讲图的存储结 ...

  6. Atitit.数据库表的物理存储结构原理与架构设计与实践

    Atitit.数据库表的物理存储结构原理与架构设计与实践 1. Oracle和DB2数据库的存储模型如图: 1 1.1. 2. 表数据在块中的存储以及RowId信息3 2. 数据表的物理存储结构 自然 ...

  7. InnoDB的表类型,逻辑存储结构,物理存储结构

    表类型 对比Oracle支持的各种表类型,InnoDB存储引擎表更像是Oracle中的索引组织表(index organized table).在InnoDB存储引擎表中,每张表都有个主键,如果在创建 ...

  8. MongoDB【第二篇】MongoDB逻辑与物理存储结构

    基本的操作 一.常用的命令和基础知识 1.进入MongoDB sehll 首先我们进入到MongoDB所在目录执行 cd /work/app/mongodb/bin/ #启动 ./mongo 为了方便 ...

  9. Innodb物理存储结构系列1

    本篇先介绍 下Innodb表空间,文件相关的内存数据结构. 1. 数据结构 Innodb的tablespace和文件的关系,是一对多的关系,先来看三个结构体 1. fil_system_struct: ...

随机推荐

  1. asp.net将sql语句封装在类库中

    将sql语句封装在cs中,通过类库的引用使用他的select.update.insert 源代码(cs): using System; using System.Collections.Generic ...

  2. dom例子

    //凡是html标签中的属性和值是一样的,那么在js中用true或者false 1,阅读协议倒计时 <input type="button" name="name& ...

  3. XAMPP下重置mysql密码

    安装XAMPP后,mysql默认是没有密码的,安全起见一般我们都会修改密码. 密码太多,经常会忘记密码,那么,我们可以通过通过以下步骤可以重置mysql密码. 步骤如下: 1. 停止mysql 2.  ...

  4. js:关于IE6&sol;7下new Date&lpar;值&rpar;输出为NaN的解决方案

    不得不再次说,万恶的IE,你太守旧了吧,这里出错的原因是IE的时间格式,不是2012-01-23(很多人喜欢用这样的格式) 而是2012/01/23(怎么感觉像是在用VB6和access啊) 搞了好久 ...

  5. 开源Math&period;NET基础数学类库使用&lpar;17&rpar;C&num;计算矩阵条件数

    原文:[原创]开源Math.NET基础数学类库使用(17)C#计算矩阵条件数                本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p ...

  6. NYOJ 105 其余9个

    九的余数 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描写叙述 如今给你一个自然数n,它的位数小于等于一百万,如今你要做的就是求出这个数整除九之后的余数. 输入 第一行有一 ...

  7. MYSQL数据库-约束

    约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性.唯一性. MYSQL中,常用的几种约束: 约束类型: 主键 默认值 唯一 外键 非空 关键字: PRIMARY KEY DEF ...

  8. 201521145048《java程序设计》第10周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 本次PTA作业题集异常.多线程 Q1.finally 题目4-2 1.1 截图你的提交结果( ...

  9. Codeforces 862A Mahmoud and Ehab and the MEX

    传送门:CF-862A A. Mahmoud and Ehab and the MEX time limit per test 2 seconds memory limit per test 256 ...

  10. 阿里云linux yum源配置

    1.备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2.下载新的CentOS-Base ...