暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【Oracle】数据库物理结构

原创 西北第二DBA 2020-07-28
1651

Oracle存储结构概述

 存储结构是Oracle体系结构中比较好理解的一部分。既然是三大金刚之一,想然也是比较重要的部分。

 Oracle数据库物理结构由三类必须的物理文件和其他外部文件组成。三类必须的文件分别是:

  1. 控制文件
  2. 联机重做日志文件
  3. 数据文件

 所谓外部文件,指的是初始化参数文件、口令文件、归档重做日志文件、日志跟踪文件。一般是不必须的,或者可选的。比如数据库在归档模式下归档重做日志文件就是必须的。

1.1 控制文件

 控制文件独一份。很多人采用的说法是控制文件有很多份。没错,从数量上来说是可以有很多份,而且这是符合Oracle安全性最佳实践。但从内容上来看,他们都是一样的。所以,在这里需要说明,控制文件不管在哪里,有多少,它们的内容都是一样的。

 控制文件的内容通常不过数MB,但非常重要,它包含了很多文件的指针,包括:联机重做日志文件和数据文件的位置指针以及归档日志的位置指针。另外还存储着保证数据库完整性的所需信息,比如CKPT进程刷新的SCN和时间戳。

 数据库在startup时会检查所有控制文件包括多路复用控制文件的可用性与一致性,如果不可用或不一致,数据库将无法打开,因为控制文件损坏了,数据库将无法保证当前的SCN号是正确的,也就是说,数据库实例不知道当前在数据库里的数据是否为最新的正确数据。同理,如果在数据库运行过程中,某一位置的控制文件不可用,那么数据库实例会当场挂起。当然,每个数据库默认有一份控制文件,但是按照Oracle的最佳实践原则,优秀的DBA总是将控制文件做多路复用。我们不需要考虑多路复用的控制文件如何同步的问题,只需要设置它们的存放路径即可(考虑到磁盘的安全性,一般分开磁盘存放)。控制文件的数量最少是1,最大是8,根据实际需求做多路复用即可。

1.2 联机重做日志文件

 重做日志是按时间顺序记录数据库变更(官方说法叫变更向量)的文件。它最小限度地记录了重做所需的所有条目。重做日志的工作是在数据库恢复时能够提供从备份到故障点的重做条目,以使得数据库(或者数据文件)能够恢复到故障前,最大限度地保证不丢失数据(这里的不丢数据说的是commit的数据)。

 有两类重做日志:一类是必须的联机重做日志,另一类是可选的(但是一般都会选择)归档重做日志。

 每个数据库至少有两个联机重做日志文件。联机重做日志是联机重做日志组和联机重做日志组成员的统称。要保证数据库正常运行必须要有两个联机重做日志组,他们交换着被LGWR进程写入和被archiver进程归档。同样地,要保证数据库的数据安全性,每个联机重做日志组至少要有两个联机重做日志成员,同一个组中的成员。一般情况下说的联机重做日志文件指的是联机重做日志组成员。

 联机重做日志文件组成员的大小和数量可动态调整。一般设置为每个组至少50MB,有些活动比较频繁的数据库就需要设置地更大一些,有时候若干GB也不为过。

1.3 数据文件

 数据库数据库,你说数据文件重要不重要。在数据库创建时,必须的三种数据文件是:

  • SYSTEM表空间(存储数据字典)
  • SYSAUX表空间(存储数据字典的辅助数据)
  • UNDO表空间(存储撤销/回滚数据)
     数据文件的大小和数量在逻辑上不受控制,但是会受到物理影响。也就是说,数据库本身不限制数据文件的大小和数量,但是操作系统以及硬件可能会限制文件的大小和数量。数据文件的作用就是存储数据,它们是系统管理员可以看见的物理文件。相对应的概念,段、区、块都是系统管理员不可见的逻辑文件(结构)。

 对于表空间、段、区、块不在此细说,简单介绍一下。块(block)是数据库操作的最小单位,包括读写数据都是以块为单位读取。若干个块组成区,区是磁盘空间分配的最小单位,由连续的块组成。若干个区组成段。所谓段对应的就是我们看见的表。若干段组成表空间,也可以简单地理解为若干表组成表空间。

1.4 其他文件

  1. 初始化参数文件(Initialization Parameter File):简称为pfile(此处注意,《OCP认证考试指南全册 12C》中称为 Instance Parameter File,实例参数文件,这里采用官网的说法,初始化参数文件),Oracle启动时,会读取pfile的内容。pfile中有非常多的启动参数,只有一项需要特别关注,就是DB_NAME项。此项特殊在没有默认值,其他所有的参数都有默认值,也是就是说,pfile可以很小,只有DB_NAME一项,也可以很大,囊括所有参数配置。
  2. 口令文件(Password File):用户通过提交用户名和口令(俗称密码)建立与Oracle实例的会话。但是用户名和口令都存储在数据字典中,在数据库关闭的状态下,无法访问数据字典。在数据库实例未启动的状态下,如果想要登录数据库,使用外部口令文件是一种方式。口令文件中存储的用户民和口令一般少于6个。
  3. 归档重做日志文件(Archive Redo Log File):联机重做日志文件变满时,通过ARCn进程将目前的联机重做日志归档。归档重做日志文件不是数据库连续运行的必须文件,它是保证数据库数据安全的必须文件。
  4. 报警日志和跟踪文件(Alert Log / Trace File):报警日志和跟踪文件记录了数据库的状态信息。报警日志主要记录的是数据库的重大更改,比如更改数据库的参数/数据库的启动与关闭。跟踪文件记录数据库所有的错误日志。

1.5 数据字典

 数据字典包含了从逻辑和物理层面对数据库和数据库内容描述的元数据。例如用户定义、完整性约束和性能监视器。这些元数据作为段存储在SYSTEM和SYSAUX表空间内,在创建数据库时创建。数据字典和其他段如索引段类似,但是无法直接访问。一旦任何人更改了数据字典,就会造成无法修复的数据库错误,当然Oracle官方也不会给予任何支持(自《OCP认证考试指南》)。

 当然,我们可以间接访问数据字典。一般通过前缀为CDB_、DBA_、ALL_、USER_的视图来访问数据字典。

  • CDB_:多租户结构中的DBA_视图
  • DBA_:数据库中每个对象的所有描述,需要DBA权限
  • ALL_:显示有权访问的对象的所有描述
  • USER_:当前用户拥有的对象的所有描述

以上是Oracle体系结构中存储结构的概述。关于存储结构的详细介绍,会在后续的文章中更新。

最后修改时间:2020-09-02 15:32:12
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论