Oracle的物理存储结构就是指的Oracle数据库在硬盘上存储的各种文件,包括:数据文件、联机日志文件、控制文件、归档日志文件、参数文件、告警日志文件、跟踪文件和备份文件等。
视频讲解如下:
下面分别介绍这些文件以及它们的作用。
- 数据文件(Data File)
一个数据库由多个表空间组成,而表空间可以由多个数据文件组成的,数据文件是真正存放数据库数据的。一个数据文件就是一个硬盘上的文件。表和索引中的数据在物理上是被存放在数据文件中的。当查询表中数据的时候,如果内存中没有该表的数据,那么Oracle数据库的服务器进程将读取该表所在的数据文件,然后把数据存放到内存中。
- 联机重做日志文件(Online Redo Log File)
一个数据库可以有多个联机重做日志文件,它记录了数据库的变化。例如,当Oracle数据库产生异常时,导致对数据的改变没有及时写入到数据文件中。这时Oracle数据库就会根据联机重做日志文件中的信息来获得数据库的变化信息,并根据这些信息把这些改变写到数据文件中。换句话来说,联机重做日志文件中记录的重做日志可以用来进行数据库实例的恢复。
- 控制文件(Control File)
一个数据库至少要有一个控制文件,控制文件中存放了Oracle数据库的物理结构信息。这些物理结构信息就包括:
(1)数据库的名字。
(2)数据文件和联机日志文件的名字及位置。
(3)创建数据库时的时间戳。
(4)RMAN备份的元信息。
Oracle数据库在启动过程中,会根据控制文件中记录的数据文件和联机重做日志文件的位置信息来打开数据库。由于控制文件非常重要,为了更好的保护数据库,通常在执行数据库备份时是需要备份控制文件的。
- 归档日志文件
归档日志文件是联机重做日志文件的副本,它也记录了对数据库改变的历史。下面的语句将查看当前数据库的日志模式。
SQL> archive log list; # 输出的信息如下: Database log mode No Archive Mode Automatic archival Disabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 1 Current log sequence 3
- 参数文件
参数文件在通常情况下指的就是初始化参数文件(Initialization Parameter File)。在参数文件中包括了初始化参数文件和服务器端参数文件。在Oracle数据库启动的时候就会读取参数文件,然后根据参数文件中的参数值来分配内存和启动一系列的后台进程。
Oracle的参数文件有两种不同的类型。在Oracle 9i版本之前,Oracle采用的PFile类型的参数文件,该文件是一个文本类型的文件;而从Oracle 9i版本之后,采用了SPFile类型的参数文件,该文件是一个二进制类型的文件。可以通过执行下面的语句查看当前的参数文件信息。
SQL> show parameter pfile # 输出的信息如下: NAME TYPE VALUE ------------ ------- --------------------------------------------------- spfile string /u01/app/oracle/dbs/spfileorcl.ora
- 告警日志文件
告警日志文件按照时间的先后顺序,记录了数据库的重大活动和所发生的错误信息以及警告信息。因此,当Oracle数据库出现任何问题的时候,首先就应当检查告警日志文件。警报文件的名字的格式是alert_SID.log。警报文件的位置可以通过查询数据字典v$diag_info得到,例如:
SQL> select name,value from v$diag_info;
- 跟踪文件
跟踪文件是每个Oracle数据库服务器进程都有的日志文件。当数据库运行中出现问题时,通过查看跟踪文件中的内容可以帮助诊断Oracle数据库的问题。因为每个服务器进程都会将错误信息写到跟踪文件中。因此,数据库管理员DBA就可以根据跟踪文件的信息来查看进程中所发生的错误。在默认情况下,Oracle数据库的跟踪文件的位置跟告警日志文件在同一个目录下。例如:
[oracle@oraclevm trace]$ pwd /u01/app/oracle/diag/rdbms/orcl/orcl/trace [oracle@oraclevm trace]$ ls *.trc orcl_d000_69512.trc orcl_s003_72483.trc orcl_dbrm_69459.trc orcl_s004_72485.trc orcl_dia0_69470_base_1.trc orcl_s005_72487.trc orcl_s000_69521.trc orcl_vktm_69428.trc orcl_s001_72472.trc orcl_w001_69525.trc orcl_s002_72481.trc orcl_w004_69741.trc [oracle@oraclevm trace]$
- 备份文件
备份文件就是在数据库发生介质损坏的时候用来还原(Restore)数据库并执行恢复(Recover)数据的文件。