ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Physical Storage Structures

Physical Storage Structures

原创 Linux操作系统 作者:fywocp 时间:2013-11-19 16:28:40 0 删除 编辑

Physical Storage Structures

Mechanisms for Storing Database Files

Oracle asm

Oracle 自动存储管理

Operating system file system

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

Raw device

裸设备。没有被格式化为一个文件系统,它由应用程序负责对它进行读写操作。不经过文件系统的缓冲。I/O效率更高。

Cluster file system

集群文件系统。使多台计算机共享文件存储,同时保持一致的空间分配和文件内容的软件。

Oracle Automatic Storage Management (Oracle ASM)

简化了与存储相关的任务

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

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

Oracle asm disks

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

Oracle ASM 磁盘,可以当数据库正在运行时,被添加到磁盘组,或从磁盘组中删除。当你向磁盘组中添加一个磁盘时,您可以为磁盘指定一个名称,否则会自动被赋予一个 Oracle ASM 磁盘名称。

Oracle asm disk groups

Oracle ASM磁盘组是一组Oracle ASM 磁盘的集合,被作为一个逻辑单元来管理。在磁盘组中的数据结构是自包含的,并会在磁盘组中消耗一些磁盘空间。

在一个磁盘组内, Oracle ASM 为数据库文件提供了一个文件系统接口。存储在磁盘组中的文件的内容被均匀分布或条带化,以消除热点,并为所有磁盘提供均匀的性能。其性能与裸设备的性能相差无几。

Oracle asm files

Oracle ASM 文件是一个存储在Oracle ASM 磁盘组中的文件。Oracle 数据库按文件与 Oracle ASM 进行通信。数据库可以将数据文件、 控制文件、 联机重做日志文件、和其他类型的文件存储为Oracle ASM 文件。当数据库要创建一个文件时, Oracle ASM 创建一个 Oracle ASM 文件,并分配一个以加号 (+)和磁盘组名称开头(如+ DISK1)的完全限定名称。

Oracle asm extents

Oracle ASM extents是用于容纳 Oracle ASM 文件内容的原始存储。一个 Oracle ASM 文件包含一个或多个文件扩展区。每个 Oracle ASM 扩展区是由特定的磁盘上的一个或多个分配单元组成的。

Oracle asm allocation units

分配单元是磁盘组中空间分配的基本单位。分配单元是由Oracle ASM 分配的最小连续磁盘空间。由一个或多个分配单元形成一个 Oracle ASM 扩展区。

Oracle ASM Instances

Oracle ASM 实例是一个专门用于管理 Oracle ASM 磁盘的Oracle 实例。ASM 实例管理磁盘组的元数据,并提供对数据库实例的文件布局信息。数据库实例直接与 ASM 磁盘进行I/O ,而不需要通过 ASM 实例。

 

Oracle Managed Files and User-Managed Files

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

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

Data Files

Oracle 数据库将表空间中的数据在物理上存储为数据文件。每个数据库必须至少有一个数据文件。

每个表空间包含一个或多个数据文件

数据库数据被集中地存储在位于每个数据库表空间的数据文件中

段可以跨越一个或多个数据文件,但它不能跨多个表空间。

数据库必须有SYSTEM表空间和SYSAUX表空间。Oracle 数据库自动在数据库创建过程中为SYSTEM表空间分配数据库的第一个数据文件。

Permanent and Temporary Data Files

permanent tablespace永久表空间中包含持久性的模式对象。永久表空间中的对象存储在数据文件中。

temporary tablespace临时表空间中仅包含用于会话期间的模式对象。本地管理的临时表空间具有临时文件,它是被设计用于存储在哈希、 排序、和其他操作使用的数据的特殊文件。临时文件还用于存储在内存中的空间不足时的结果集数据。

注意:

永久性数据库对象(如表)绝不会存储在临时文件中。

临时文件始终被设置为NOLOGGING模式,这意味着永远不会为其生成重做。介质恢复不识别临时文件。

你不能将临时文件置为只读模式。

你无法使用 ALTER DATABASE 语句来创建一个临时文件。

当你创建临时文件或调整其大小时,并不能始终保证会为他们分配指定文件大小的磁盘空间。在 Linux UNIX 等的文件系统上,临时文件被创建为稀疏文件。在这种情况下,磁盘块并不是在文件的创建或调整大小时分配的,而是在块第一次被访问时分配的。

Online and Offline Data Files

每个数据文件可能是联机的(可用) 或脱机的(不可用)。可以通过让单个数据文件或临时文件脱机或联机,来改变其可用性。脱机的数据文件不能被访问,直至他们恢复联机状态。包括执行脱机备份、重命名数据文件、或数据块破坏。如果数据库无法写入数据文件,则数据库自动将其脱机。

与数据文件类似,表空间本身也可以是脱机的或联机的。当你将一个联机表空间中的数据文件脱机时,表空间本身将仍保持联机状态。您可以将整个表空间脱机,来使该表空间中的所有数据文件暂时不可用。

Data File Structure

Oracle 数据库通过分配指定数量的磁盘空间,加上数据文件头开销,来为表空间创建数据文件。

数据文件头包含数据文件的元数据,例如数据文件大小和检查点SCN每个文件头包含一个绝对文件号和一个相对文件号。绝对文件号唯一地标识数据库内的数据文件。相对文件号唯一地标识表空间内的数据文件。

Control Files

数据库控制文件是一个小的二进制文件,仅与一个数据库相关联。每个数据库有一个唯一的控制文件,但是他可能有多个相同的拷贝。

控制文件包含以下信息:

数据库名称和数据库唯一标识符

? 创建数据库的时间戳

? 有关数据文件、 联机重做日志文件、和归档重做日志文件的信息

? 表空间信息

? RMAN备份

在数据库使用期间, Oracle 数据库不断读取和写入控制文件,并且只要数据库处于打开状态,控制文件就必须是可用的,以便可以写入。

Multiple Control Files

Oracle 数据库对同一数据库启用多个完全相同的控制文件,并同时打开和写入。通过在不同的磁盘上多路复用控制文件,数据库可以实现冗余,从而避免单点故障。

Control File Structure

有关数据库的信息存储在控制文件的各个不同部分中。每个部分是有关数据库的某个方面的一组记录。。例如,控制文件中有一个部分跟踪数据文件,并包含一个记录集合,每一个数据文件有一条记录。每个部分存储在多个逻辑控制文件块中。同一部分的记录可以跨越块。

控制文件中包含以下类型的记录:

? 循环重用记录

这些记录包含必要时可以被覆盖的非关键信息。当所有可用的记录槽用完时,数据库要么会扩展控制文件,以便为新记录腾出空间,要么会覆盖最旧的记录。其示例包括有关归档重做日志文件和 RMAN 备份的记录。

? 非循环重用记录

这些记录包含不经常更改且不能被覆盖的关键信息。其示例包括表空间、 数据文件、 联机重做日志文件、和重做线程。Oracle 数据库绝不会重用这些记录,除非从表空间中删除相应的对象。

控制文件块的读取和写入不同于数据块的读取和写入。对控制文件,Oracle数据库直接从磁盘读取并写入到程序全局区(PGA)。每个进程为控制文件块分配一定的 PGA 内存。

Online Redo Log

用于恢复的最关键结构是联机重做日志,它由两个或多个预分配文件组成,用于存储数据库发生的更改。联机重做日志用于记录对数据文件的更改。

Oracle 数据库将每个事务同步地写入重做日志缓冲区,然后将其写入到联机重做日志。日志的内容包括未提交的事务、撤消数据、和模式和对象管理语句。

一个联机重做日志包含两个或更多联机重做日志文件。Oracle 数据库要求最少两个文件,以保证当另一个正在被归档时,总有一个始终可供写入(如果数据库是在归档模式下)。

Oracle 数据库一次只使用一个联机重做日志文件来存储从重做日志缓冲区写入的记录。正在由日志写入器(LGWR) 进程写入的联机重做日志文件称为当前联机重做日志文件。

Online Redo Log Switches

当数据库停止向一个联机重做日志文件写入,并开始向另一个写入时,发生日志切换。通常,切换发生在当前联机重做日志文件已满,且必须继续写入时。但是,您可以配置定期日志切换,而不论当前联机重做日志文件是否已满,或者也可以手动强制日志切换。

日志写入器以循环方式写入联机重做日志文件。当日志写入器填满最后一个可用的联机重做日志文件时,该进程又向第一个日志文件写入,如此等等,周而复始。

当发生日志切换时,数据库为每个文件分配一个新的日志序列号,然后日志写入器便开始向新的日志写入。当数据库重复使用一个联机重做日志文件时,此文件接收下一个可用的日志序列号。

已填充的联机重做日志文件的可重用性取决于归档模式:

如果禁用了归档,这意味着数据库处于NOARCHIVELOG模式下,则填充的联机重做日志文件,在数据库写入器 (DBWn) 已对该日志中的更改记录执行过检查点操作并写入到磁盘后,该日志即是可重新使用的。

如果启用了归档,这意味着数据库是在ARCHIVELOG模式下,则填充的联机重做日志文件,只有在该日志中所包含的更改记录被写入数据文件,且该日志已被归档后,该日志才是可重新使用的。

在某些情况下,日志写入器可能无法重新使用某个现有的联机重做日志文件。例如,联机重做日志文件可能处于活动状态(实例恢复需要它),而不是非活动状态 (实例恢复不需要它)。另外,一个联机重做日志文件可能正处于被清除过程中。

Multiple Copies of Online Redo Log Files

Oracle 数据库可以在不同的位置自动维护两个或更多联机重做日志的相同副本。一个联机重做日志组包括一个联机重做日志文件及其冗余副本。每个完全相同的副本是联机重做日志组的一个成员。每个组由一个数字来定义,如组 1、 组 2等等。

在图 中, A_LOG1 B_LOG1 是组 1的两个相同的成员,A_LOG2 B_LOG2 是组2的两个相同的成员。每个组中的所有成员必须具有相同的大小。LGWR 同时写入组 1 (成员 A_LOG1 B_LOG1),然后同时写入组 2 (成员 A_LOG2 B_LOG2),然后又重新写入到组 1,如此等等。LGWR 永远不会同时写入不同组的成员。

Structure of the Online Redo Log

联机重做日志文件包含重做记录。重做记录由一组更改向量组成,每个向量描述对某数据块的一个更改。

重做记录记录了与更改相关的所有元数据,包括如下:

? 更改的SCN和时间戳

? 变更事务的事务ID

? 事务提交时的SCN和时间戳(如果它已提交)

? 所做更改的操作类型

? 被修改的数据段的名称和类型

Archived Redo Log Files

归档重做日志文件是联机重做日志组的已填充成员的副本。此文件不是该数据库的一部分,而是由该数据库生成、并被写到用户指定位置的联机重做日志文件脱机副本。一个归档重做日志文件包括重做条目和联机重做日志组的相同成员的日志序列号。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25427762/viewspace-777001/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2013-11-19

  • 博文量
    16
  • 访问量
    110688