目录
1 概述
2 物理结构
2.1 数据文件
2.2 控制文件
2.4 归档日志文件
2.5 参数文件
2.6 警报文件
2.7 跟踪文件
2.8备份文件
3 总结
存储结构是Oracle数据库的体系结构之一,是Oracle管理的基础。Oracle存储结构可分为物理结构和逻辑结构。 一个数据库的物理结构可包括数据文件、联机日志文件和控制文件及其他的一些文件,如归档日志文件、参数文件等。逻辑结构可由数据块、区、段和表空间组成。
物理结构与逻辑结构关系图如下
通过本文的学习可把握Oracle数据库存储结构中关于物理结构的来龙去脉。
Oracle物理结构:主要用于描述在 oracle 数据库外部数据的存储,即在操作系统层面中如何组织和管理数据,与具体的操作系统有关
一个数据库的物理结构可包括数据文件(Datafiles)、联机日志文件(Online Redo Logs)和控制文件(Control Files)组成,如图一,这是严格意义上的物理结构组成。除此之外,组成Oracle的还有一些其他额外的数据文件,如归档日志文件(Archive Log Files)、参数文件(Paramter Files)、警报文件(Alert Files)、跟踪文件(Trace Files)等
一个数据库有多个数据文件,每个数据文件都是操作系统的一个文件。数据文件正在存储的是数据库的数据。常用的数据库的表数据、索引数据在物理上都是存放在数据文件中的
数据文件具有以下特征:
在一个数据库中至少应该有一个控制文件,一个控制文件只属于一个数据库。用于存放数据库的物理结构信息,它是一个很小的二进制数据文件,在创建数据库时创建。当数据库的物理结构发生改变时,Oracle会自动更新控制文件,用户不可修改该文件。
在数据库启动时,Oracle会从初始化参数文件中获取控制文件的名称和存放位置,打开控制文件,然后从控制文件中读取数据文件和联机日志文件信息,最后打开数据库;在运行时,Oracle会修改控制文件,所以数据库的启动和运行都离不开控制文件,一旦控制文件损坏,数据库也将无法正常运行
控制文件主要记录以下数据库相关的信息
控制文件的参数及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),每个联机日志组中有一个或多个联机日志文件。每一个数据库实例至少需要两个联机日志组,同一组中每个联机日志文件的内容完全相同
由日志书写进程LGWR负责将日志条目(Redo Records/Redo Entry)写入到联机日志文件中。一个日志条目有一系列的改变因子组成,一个改变因子用于描述一次对某个数据块的改变
日志条目用于重构对数据库的改变,在进行数据库实例恢复时,Oracle读取日志条目中的改变因子,然后把这些改变因子应用到对应的块。
联机日志文件写入方式
后台 进程LGWR负责将日志缓冲区中的日志条目写入到联机日志文件中。当用户commit一个事务,LGWR就将这个事务的回滚条目写入联机日志文件,并赋予一个改变标识(System Change Number 即SCN)用于标识这个事务的日志条目。只有当这个事务的日志条目被成功写到磁盘上的联机日志文件中,这个事务的提交才算完成。
当满足以下条件时,LGWR进程会自动将日志缓冲区中的日志条目写入到联机日志文件中
归档:即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:参数发生错误
归档日志文件格式
参数文件也叫初始化参数文件,用于存放数据库和数据库实例的参数。这些参数用于指定控制文件的位置、联机日志文件的位置及控制内存分配。
参数文件分为普通初始化参数文件(Initialization Parameter File 即PFILE)和服务器参数文件(Server Parameter File 即SPFILE),在数据库启动时,Oracle将加载这两个文件中的信息。
初始化参数文件(PFILE)
初始化参数文件(PFILE)是本地的文本参数文件,可以进行手工修改其中的内容,文件名通常为init
oracle只在实例启动时读取该文件,因此所做的修改要在实例下次启动时才能起作用。
主要内容
动态服务器参数文件(SPFILE)
从Oracle 9i开始,提供的动态服务器初始化参数文件,是一个二进制参数文件,不可对其进行修改,在数据库实例运行时,Oracle可动态修改。文件名通常为spfile
总是保存在服务器上,默认存储在$ORACLE_HOME\dbs
下。
用于记录数据库的重大活动和发生得到错误,警报文件按照时间先后记录发生的事件。它除了记录数据库中发生的错误外,还记录记录数据库中发生的重大事件。
警报文件的内容
警报文件的名称格式通常为 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
跟踪日志文件又叫做跟踪文件,每个服务器进程和后台进程都会写跟踪文件,当后台进程检测到错误时,Oracle会将错误信息写到跟踪文件中。Oracle跟踪文件中包含了大量而详细的诊断和调试信息,因此通过对跟踪文件的解读和分析,我们可以定位问题、分析问题和解决问题,可分析后台进程是否发生错误。
跟踪文件又可以分为两类:一类是数据库的操作人员有意生成的;另一类则是由于出现了异常错误,由数据库自动生成的。对于后一类,只对Oracle内部的技术支持人员是有用的,但对于我们,则多半看不懂。前一类,则是我们经常用到的,帮助我们分析、调整和优化应用性能,处理并解决问题
跟踪文件信息被写到两个数据目录中,与后台进程(Background Processes)相关的信息写到初始化参数BACKGROUND_DUMP_DEST指定的目录;与服务器进行(Server Processes)相关的信息写到初始化参数USER_DUMP_DEST指定的目录。
跟踪文件的命名规则
一个跟踪文件的名字一般由以下几部分组成:
例如:xddb_cjq0_3852.trc,其中:“xddb" 是本环境下数据库的SID,"12210"为产生该跟踪文件会话所使用的服务器进程ID号
所谓备份文件就是数据库备份生成的文件,当数据库发生介质损坏时,需要从这些文件中还原数据库,然后执行数据库恢复
通过本文了解了Oracle数据库的物理结构和逻辑结构的关系,详细总结了物理结构的组成,详细阐述了个组成部分的定义及作用。