Oracle数据库体系结构(二)_物理结构

目录

1  概述

2  物理结构

2.1  数据文件

2.2  控制文件

2.4  归档日志文件

2.5  参数文件

2.6  警报文件

2.7  跟踪文件

2.8备份文件

3  总结


1  概述

        存储结构是Oracle数据库的体系结构之一,是Oracle管理的基础。Oracle存储结构可分为物理结构和逻辑结构。  一个数据库的物理结构可包括数据文件、联机日志文件和控制文件及其他的一些文件,如归档日志文件、参数文件等。逻辑结构可由数据块、区、段和表空间组成。

物理结构与逻辑结构关系图如下

Oracle数据库体系结构(二)_物理结构_第1张图片

通过本文的学习可把握Oracle数据库存储结构中关于物理结构的来龙去脉。

2  物理结构

       Oracle物理结构:主要用于描述在 oracle  数据库外部数据的存储,即在操作系统层面中如何组织和管理数据,与具体的操作系统有关

 一个数据库的物理结构可包括数据文件(Datafiles)、联机日志文件(Online Redo Logs)和控制文件(Control Files)组成,如图一,这是严格意义上的物理结构组成。除此之外,组成Oracle的还有一些其他额外的数据文件,如归档日志文件(Archive Log Files)、参数文件(Paramter Files)、警报文件(Alert Files)、跟踪文件(Trace Files)等 

Oracle数据库体系结构(二)_物理结构_第2张图片

2.1  数据文件

        一个数据库有多个数据文件,每个数据文件都是操作系统的一个文件。数据文件正在存储的是数据库的数据。常用的数据库的表数据、索引数据在物理上都是存放在数据文件中的

Oracle数据库体系结构(二)_物理结构_第3张图片

        数据文件具有以下特征:

  1. 一个数据文件只能属于一个数据库
  2. 数据文件可以被设置成自动扩展
  3. 一个或多个数据文件形成一个表空间
  4. 一个数据文件只能属于一个表空间

2.2  控制文件

       在一个数据库中至少应该有一个控制文件,一个控制文件只属于一个数据库。用于存放数据库的物理结构信息,它是一个很小的二进制数据文件,在创建数据库时创建。当数据库的物理结构发生改变时,Oracle会自动更新控制文件,用户不可修改该文件。

       在数据库启动时,Oracle会从初始化参数文件中获取控制文件的名称和存放位置,打开控制文件,然后从控制文件中读取数据文件和联机日志文件信息,最后打开数据库;在运行时,Oracle会修改控制文件,所以数据库的启动和运行都离不开控制文件,一旦控制文件损坏,数据库也将无法正常运行

       控制文件主要记录以下数据库相关的信息

  1. 数据库名称
  2. 创建数据库的时间戳
  3. 数据文件、联机日志文件的名称和位置
  4. 表空间信息
  5. 日志历史文件
  6. 归档日志信息
  7. 备份信息
  8. 当前的日志序列号
  9. 校验点信息

       控制文件的参数及Oracle11G官方文档额限定值

序号 参数 用途 最小值   最大值
1 MAXLOGFILES 用于指定oracle数据库的最大日志组个数 16 225
2 MAXLOGMEMBERS 用于指定每个日志组的最大日志成员个数 2 5
3 MAXLOGHISTORY 用于指定控制文件可记载日志历史的最大个数 100 65534
4 MAXDATAFILES 用于指定oracle数据库的最大数据文件个数 30 65534
5 MAXINSTANCES 用于指定可以同时访问数据库的最大例程个数 1 63

2.3  联机日志文件

        联机日志文件是数据库的物理结构之一,用于记录用户对数据库的改变,防止数据丢失,主要用于对数据的恢复。如数据库由于发生意外,导致内存中的数据未及时写入到数据文件中,当下一次数据库启动时,Oracle数据库会从联机日志文件中获取丢失的数据,然后将获得的数据写入到数据文件中的。

       一个数据库实例中有一组或多组联机日志组(Redo Log Group),每个联机日志组中有一个或多个联机日志文件。每一个数据库实例至少需要两个联机日志组,同一组中每个联机日志文件的内容完全相同

Oracle数据库体系结构(二)_物理结构_第4张图片

        由日志书写进程LGWR负责将日志条目(Redo Records/Redo Entry)写入到联机日志文件中。一个日志条目有一系列的改变因子组成,一个改变因子用于描述一次对某个数据块的改变

        日志条目用于重构对数据库的改变,在进行数据库实例恢复时,Oracle读取日志条目中的改变因子,然后把这些改变因子应用到对应的块。

联机日志文件写入方式

    后台 进程LGWR负责将日志缓冲区中的日志条目写入到联机日志文件中。当用户commit一个事务,LGWR就将这个事务的回滚条目写入联机日志文件,并赋予一个改变标识(System Change Number 即SCN)用于标识这个事务的日志条目。只有当这个事务的日志条目被成功写到磁盘上的联机日志文件中,这个事务的提交才算完成。

Oracle数据库体系结构(二)_物理结构_第5张图片

当满足以下条件时,LGWR进程会自动将日志缓冲区中的日志条目写入到联机日志文件中

  1. 每隔3秒钟
  2. 一个用户提交一个事务
  3. 日志缓冲区被填满1/3
  4. 日志缓冲区的日志大小接近1MB的日志数据
  5. 发生校验点

2.4  归档日志文件

        归档:即Oracle将填满的联机日志文件复制到一个或多个路径进行存储的过程称为归档,这样生成的文件也叫做归档日志文件。存放归档文件的路径叫归档路径,只有数据库是运行在归档模式的场景下才能进行归档,归档的过程通常情况下由归档进程自动完成。一个数据库可以有一个或多个归档进程,归档进程的数量有初始化参数LOG_ARCHIVE_MAX_PROCESSES进行控制

       归档日志文件的作用:用于数据库顶顶顶恢复

       数据库运行模式:非归档模式和归档模式

非归档模式

        若数据库运行在非归档模式下,则表示联机日志文件不需要归档

        非归档模式只保护数据库实例失败,不保护介质失败,当发生介质损坏时,则需要还原数据库的全备份,然后再执行恢复。在非归档模式下,一旦发生介质损坏,将会发生数据得到丢失。在此模式下数据库管理员不能执行数据库的热备份,但可以关闭数据库,执行数据库的冷备份

归档模式

         若数据库运行在归档模式下,数据库的控制文件将指示,如果联机日志文件没有归档,日志书写进程则不能覆盖联机日志文件。数据库管理员可以启动归档进程,让归档进程自动完成联机日志文件的归档,也可以进行手动归档

归档路径

       归档路径参数设置

       LOG_ARCHIVE_DEST= filepath :设置一个归档路径 

       LOG_ARCHIVE_DEST_n = path :设置多个归档路径,n的取值范围1-10,n参数选项LOCATION、SERVICE

       LOCATION:指定将联机日志文件归档到本地的文件系统,如:LOG_ARCHIVE_DEST_1='LOCATION=desk/xxx'

       SERVICE:指定将联机日志文件归档到远程服务器,如:LOG_ARCHIVE_DEST_1='SERVICE=desk_xxx'

        归档路径状态

        VALID:用户已初始化归档路径,归档路径有效,可用于文件归档

        INACTIVE:无效的归档路径

        ERROR:创建路径或往路径中写文件时发生错误

        FULL:路径已被填满,没有额外的磁盘存储空间

        DEFERRED:用户临时禁用该归档路径

        BAD PARAM:参数发生错误

        归档日志文件格式

2.5  参数文件

        参数文件也叫初始化参数文件,用于存放数据库和数据库实例的参数。这些参数用于指定控制文件的位置、联机日志文件的位置及控制内存分配。

         参数文件分为普通初始化参数文件(Initialization Parameter File 即PFILE)和服务器参数文件(Server Parameter File 即SPFILE),在数据库启动时,Oracle将加载这两个文件中的信息。

初始化参数文件(PFILE)

      初始化参数文件(PFILE)是本地文本参数文件,可以进行手工修改其中的内容,文件名通常为init.ora,oracle只在实例启动时读取该文件,因此所做的修改要在实例下次启动时才能起作用。

主要内容

  1. 实例名和该实例相关的数据库名
  2. 控制文件名和位置
  3. 系统全局区的配置
  4. 还原段(回滚段)的配置
  5. 该实例所能同时启动的进程数
  6. 标准数据块的大小
  7. 是否允许DBA远程登录

动态服务器参数文件(SPFILE)

        从Oracle 9i开始,提供的动态服务器初始化参数文件,是一个二进制参数文件,不可对其进行修改,在数据库实例运行时,Oracle可动态修改。文件名通常为spfile.ora,总是保存在服务器上,默认存储在$ORACLE_HOME\dbs下。

2.6  警报文件

        用于记录数据库的重大活动和发生得到错误,警报文件按照时间先后记录发生的事件。它除了记录数据库中发生的错误外,还记录记录数据库中发生的重大事件。

        警报文件的内容

  1. 每次数据库启动和关闭的详细信息
  2. 数据库管理员的某些管理操作,如Alter System、Alter DataBase、CREATE、DROP语句等
  3. 某些数据库错误,如Oracle的内部错误、空间错误等
  4. 共享服务器相关的信息和错误
  5. 值是非默认值的初始化参数信息
  6. 物化视图自动刷新产生的错误

        警报文件的名称格式通常为 alert_SID.log,不可修改,其中SID表示数据库的实例名,文件从存储位置有初始化参数BACKGROUND_DUMP_DEST指定。通常存储在%ORACLE_HOME%/diag/rdbms/chenmu/chenmu/trace目录下

可用以下命令获取该文件的具体位置

SQL> show parameter background_dump_dest

     NAME                   TYPE           VALUE
------------------------------------ ----------- ------------------------------
background_dump_dest         string      f:\app\diag\rdbms\lsxddb\lsxddb\trace


SQL> select * from v$diag_info;

   INST_ID NAME                     VALUE
---------- ------------------------------------------------------------
         1 Diag Enabled             TRUE
         1 ADR Base                 f:\app
         1 ADR Home                 f:\app\diag\rdbms\xddb\xddb
         1 Diag Trace               f:\app\diag\rdbms\xddb\xddb\trace
         1 Diag Alert               f:\app\diag\rdbms\xddb\xddb\alert
         1 Diag Incident            f:\app\diag\rdbms\xddb\xddb\incident
         1 Diag Cdump               f:\app\diag\rdbms\xddb\xddb\cdump
         1 Health Monitor           f:\app\diag\rdbms\xddb\xddb\hm
         1 Default Trace File       f:\app\diag\rdbms\xddb\xddb\trace\xddb_ora_1552.trc
         1 Active Problem Count                                             0
         1 Active Incident Count                                            0

11 rows selected

2.7  跟踪文件

        跟踪日志文件又叫做跟踪文件,每个服务器进程和后台进程都会写跟踪文件,当后台进程检测到错误时,Oracle会将错误信息写到跟踪文件中。Oracle跟踪文件中包含了大量而详细的诊断和调试信息,因此通过对跟踪文件的解读和分析,我们可以定位问题、分析问题和解决问题,可分析后台进程是否发生错误。

        跟踪文件又可以分为两类:一类是数据库的操作人员有意生成的;另一类则是由于出现了异常错误,由数据库自动生成的。对于后一类,只对Oracle内部的技术支持人员是有用的,但对于我们,则多半看不懂。前一类,则是我们经常用到的,帮助我们分析、调整和优化应用性能,处理并解决问题

        跟踪文件信息被写到两个数据目录中,与后台进程(Background Processes)相关的信息写到初始化参数BACKGROUND_DUMP_DEST指定的目录;与服务器进行(Server Processes)相关的信息写到初始化参数USER_DUMP_DEST指定的目录。

跟踪文件的命名规则

一个跟踪文件的名字一般由以下几部分组成:

  • 数据库实例名SID
  • 固定字符
  • 服务器的进程ID号
  • 文件后缀名 .trc
  • 各部分之间以下划线连接。 

     例如:xddb_cjq0_3852.trc,其中:“xddb" 是本环境下数据库的SID,"12210"为产生该跟踪文件会话所使用的服务器进程ID号

2.8备份文件

        所谓备份文件就是数据库备份生成的文件,当数据库发生介质损坏时,需要从这些文件中还原数据库,然后执行数据库恢复

3  总结

         通过本文了解了Oracle数据库的物理结构和逻辑结构的关系,详细总结了物理结构的组成,详细阐述了个组成部分的定义及作用。

你可能感兴趣的:(Oracle,oracle,数据库)