15.1.2 什么是日志文件
日志文件在Oralce数据库中分为重做日志文件和归档日志文件两种。其中,重做日志文件是Oracle数据库正常运行不可缺少的文件。重做日志文件(Redo Log File)主要记录了数据库操作的过程。在需要恢复数据库时,重做日志文件可以将日志从备份还原的数据库上再执行一遍,以达到数据库的最新状态。
Oracle系统在运行时有归档模式和非归档模式两种模式。在非归档模式下,所有的日志文件都写在重做日志文件中,如果重做日志文件写满了,那么就把前面的日志文件覆盖了。例如,一共有a、b、c三个日志文件,在非归档模式下,如果a文件写满了,就开始写b文件,如果b文件也写满了,就开始写c文件,如果三个文件都写满了,就把a文件中的内容覆盖掉重新写入。在归档模式下,如果重做日志文件全部写满后,就把第一个重做日志文件写入归档日志文件中,再把日志写到第一个重做日志文件中,使用归档日志的方式就可以方便以后做恢复操作。
那么,日志文件究竟是什么样的呢?使用下面的语句就可在数据字典中查看日志文件的信息:
desc v$logfile
【示例2】查看日志文件数据字典的描述
查看数据字典的结果如图15.2所示。
图 15.2 数据字典v$logfile
由于在归档模式下,Oracle的性能会受到一定的影响,所以Oracle默认情况采用的是非归档模式。获取当前Oracle的归档模式可以从v$database数据字典中查看。先看一下v$database数据字典中都描述了哪些内容。
desc v$database
【示例3】查看数据库数据字典的描述
数据字典v$database结构如图15.3所示。
图 15.3 数据字典v$database
在图15.3所示数据字典v$database内容中,name描述的是数据库的名字,log_mode描述的就是当前数据的日志模式。如果要查看当前数据库的模式,只需要查询当前数据库的log_mode的值。查询方法如下:
select name,log_mode from v$database;
【示例4】查询数据库中日志状态
查询当前所有数据库的日志状态结果如图15.4所示。
图 15.4 查询数据库的日志状态
说明 日志的状态NOARCHIVELOG指的是非归档模式,而ARCHIVELOG指的是归档模式。