2.5 Oracle物理结构
Oracle数据库管理与维护实战
物理结构就是我们熟悉的一些物理文件,这些文件是数据库的载体,数据库中的所有数据,包括系统数据都存放在这些物理文件中,如图2-11所示。
2.5.1 数据文件
每一个Oracle数据库都有一个或多个物理的数据文件(Data File)。一个数据库的数据文件包含全部数据库数据。逻辑数据库结构(如表、索引)的数据也需要存储在数据库的数据文件中。数据文件有下列特征。
一个数据文件只与一个数据库联系。
一旦建立,数据文件不能改变大小。
数据文件中的数据在需要时可以读取并存储在Oracle内存中。例如,用户要存取数据库一表的某些数据,如果请求信息不在数据库的内存存储区内,则从相应的数据文件中读取并存储在内存。当修改和插入新数据时,系统不必立刻写入数据文件。为了减少磁盘输出的总数,提高性能,数据存储在内存,然后由Oracle后台进程DBWR决定如何将其写入到相应的数据文件。
2.5.2 控制文件
控制文件(Control File)控制数据库的物理结构。控制文件记录了数据库中所有文件的控制信息,维护数据库内部的一致性,并引导数据库恢复。控制文件是数据库的控制中心,对数据库至关重要,所以在一个Oracle数据中同时联机存储了多个复本。这些文件一般存储在各个不同的磁盘上,这样可以降低因磁盘损坏而引起数据库彻底崩溃的风险。创建数据库时,系统同时会创建与之对应的控制文件。控制文件中主要包含以下信息。
数据库名称
数据库数据文件和日志文件的名称和位置
数据库建立日期
表空间信息
归档日志信息
当前的日志序列号
检查点信息
数据库控制文件的名称通过初始化参数CONTROL_FILES确定。如果需要给数据库添加一个新的控制文件,用户需关闭实例,把已存在的一个控制文件复制到新的地址,把新的地址添加到CONTROL_FILES参数设置值上,然后重新启动这个实例,使新的控制文件生效。
2.5.3 重做日志文件
Oracle用重做日志文件来保存所有数据库事务的日志。当数据库被破坏时,用重做日志文件恢复数据库。
重做日志文件一般是以组形式存在的,每一个数据库有两个或多个重做日志文件(Redo Log File)组,每一组内都有多个镜像文件。如图2-12所示,一共有3组重做日志文件,每组内都有3个镜像文件。
Oracle以循环方式向重做日志文件写入:第一个日志文件被写满后,就向第二个日志文件写入,然后依次类推。当所有联机重做日志文件都被写满时,就再回到第一个日志文件,用新事务的数据重写第一个日志文件。如果数据库正以ARCHIVELOG模式运行,在重写联机重做日志文件前,数据库会先将其内容存入归档重做日志文件中,任何时候都可以用这些归档重做日志文件来恢复数据库。
为防止重做日志文件遭破坏,注意,尽量将重做日志文件镜像到不同磁盘上,当LGWR向日志文件写信息时,会同时将信息也写到镜像文件上。
2.5.4 参数文件
参数文件一般以Ora为扩展名,Ora为Oracle的前三个字母。Oracle 9i版本数据库之后系统有以下几类参数文件。
1.初始化参数文件
在启动一个实例时,Oracle必须读入一个初始化参数文件(Initialization Parameter File)。该参数文件中含有实例配置参数,这些参数值决定着数据库和实例的特性,如共享池、高速缓冲、重做日志缓冲分配、后台进程的自动启动、控制文件的读取、自动联机回滚段等。Oracle9i之前,该参数文件名为Init.ora,该参数文件中主要包含以下几点。
一个实例所启动的数据库名字
在SGA中存储结构配置
数据库控制文件的名字和位置
2.配置参数文件
配置参数文件,一般被命名为config.ora。配置参数文件一般由初始化参数文件调用,在初始化参数文件由ifile参数来指定配置参数文件的位置。
系统中如果一个数据库对应一个实例,则没有配置参数文件;配置参数文件只有在一个数据库对应多个实例时才有。
3.二进制参数文件Spfile
Oracle 9i之前,参数文件是文本文件,Oracle 9i之后采用了和以前版本不同的二进制的参数文件Spfile,同时保留了对原有文本参数文件的支持,所以Oracle 9i之后有两种参数文件:静态文本的Pfile参数文件和Spfile参数文件。后面的章节将会详细介绍这几种参数文件的区别和使用方法。参数文件Spfile不能直接修改,如果直接修改会导致数据库启动失败。
2.5.5 跟踪文件
跟踪文件是由后台进程和用户进程建立的,用于记载进程运行时出现故障的信息。在实例中运行的每一个后台进程都有一个跟踪文件与之相连。跟踪文件记载后台进程遇到的重大事件的信息。
后台进程的追踪文件被命名为PROC.trc,PROC是后台进程的名字。用户进程追踪文件命名为_ORA_XXX.trc,XXX是一连串用来唯一标识的数字。
后台进程追踪文件存在BACKGROUND_DUMP_DEST所指定的位置,用户进程追踪文件存储在由USER_DUMP_ DEST参数设置所指定的目录里。
用户可以在V$PARAMETER视图中获得BACKGROUND_DUMP_DEST和USER_DIMP_ DEST参数的当前设置。
2.5.6 警告日志文件
除了跟踪文件外,Oracle还有一个称作警告日志(alert log)的文件,警告日志文件记录数据库运行中发生的主要事件的命令及结果。例如,表空间的创建、重做日志的转换、操作系统的恢复、数据库的建立等信息都记录在警告日志中。警告日志是数据库每日管理的重要资源,应经常监控警告日志。因为警告日志记录了数据库操作期间遇到的任何问题,其中包括出现的任何内部错误。当调查数据库故障时,用户应首先查看该文件,关键的错误总是记录在这里。
为使警告日志便于使用,用户最好是每天对其重新命名。例如,如果警告日志称作alert_ orcl.log,用户可以重新命名将文件名包括当前日期。下次Oracle要写该警告日志时,找不到具有alert_orcl.log文件名的文件,数据库又会新创建一个。这样,除了有以前的警告日志,用户还有一个当前的警告日志(alert<_SID>.log)。这样有利于今后对数据库历史运行的追踪。
警告日志文件存在由初始化参数BACKGROUND_DUMP_DEST指定的位置。