曦烽社:归档日志文件(Archive Log Files)路径

来源:百度文库 编辑:中财网 时间:2024/05/06 15:09:36

16.1.4.2 归档日志文件(Archive Log Files)

  爱动脑筋的朋友可能会在想,既然联机重做日志文件中保存了数据库所做的修改,那么如果将产生的联机重做日志文件全部保存下来,不就拥有了所有数据库执行过的操作了嘛。

  关于这一点,Oracle早就想到并且实现了,这就是传说中的归档日志文件。

1.归档模式

  只有处于归档模式的数据库,才会产生归档日志文件。查看数据库是否处于归档模式,可以通过如下SQL命令实现:

    SQL>  ARCHIVE LOG LIST;

    Database log mode              No Archive Mode

    Automatic archival             Disabled

    Archive destination            F:\oracle\product\10.2.0\db_1\RDBMS

    Oldest online log sequence     25

    Current log sequence           27

  上述信息显示当前处于非归档模式。

  要将数据库置为归档,可以通过下列步骤操作:

    SQL>  ALTER SYSTEM SET LOG_ARCHIVE_DEST_1 = ' location=F:\oracle\oradata\jssbook\archive ' ;

    System altered.

    提示:

    本步操作的目的是修改归档路径,将归档文件存放在数据文件所在目录下的archive目录中。默认归档文件存放于Oracle软件安装路径下的RDBMS目录下,一般都建议归档文件单独存放。

  关闭数据库,并重新启用到 MOUNT 状态:

    SQL>  SHUTDOWN IMMEDIATE

    Database closed.

    Database dismounted.

    ORACLE instance shut down.

    SQL>  STARTUP MOUNT

    ORACLE instance started.

    Total System Global Area  314572800 bytes

    Fixed Size                  1248720 bytes

    Variable Size              67109424 bytes

    Database Buffers          239075328 bytes

    Redo Buffers                7139328 bytes

    Database mounted.

  通过 ALTER DATABASE 命令将数据库置为归档:

    SQL>   ALTER DATABASE ARCHIVELOG;

    Database altered.

  提示:如果想将数据库改为非归档模式,只需要执行 ALTER DATABASE NOARCHIVELOG 即可。

  打开数据库:

    SQL>  ALTER DATABASE OPEN;

    Database altered.

  再次查看归档状态:

    SQL>   ARCHIVE LOG LIST;

    Database log mode              Archive Mode

    Automatic archival             Enabled

    Archive destination            F:\oracle\oradata\jssbook\archive

    Oldest online log sequence     25

    Next log sequence to archive   27

    Current log sequence           27

  返回的信息显示当前数据库已被置为归档模式。

    提示:

    LOG_ARCHIVE_START 曾经很重要!

    对于10g之前的版本,还有一个初始化参数LOG_ARCHIVE_START会对归档操作造成影响,该参数用来指定是否自动进行归档,默认值为FALSE。也就是说在默认情况下,如果打开了归档模式,数据库并不会自动对联机重做日志文件进行归档,当联机重做日志文件被写满,或者DBA手动触发归档操作时,数据库就会停在那里等待归档操作,表现如同宕机。

    10g 中该参数被废弃,是否设置均已不再影响归档的进行,只要DBA启动了归档模式,Oracle就会自动进行归档。实际上10g版本中如果DBA强制在初始化文件中指定LOG_ARCHIVE_START参数,那么启动Oracle数据库时还有可能遇到ORA-32004的错误提示。
2.归档操作

  只有在归档模式下,才会触发归档操作。是否是归档模式将影响联机重做日志文件的重用。在归档模式下,当联机重做日志文件被重用前,Oracle首先需要确认该重做日志是否已经被归档,如果没有,那么必须首先对该重做日志进行归档,而后才能重用该联机重做日志文件。

  所谓归档,就是Oracle自动将写满(或被切换)的联机重做日志文件复制一份到指定路径下,并按照相应规则重新命名。

提示:虽然每个联机重做日志文件组中可以有多个成员,不过归档时,每组仅会生成一个归档文件。

  在默认情况下Oracle会等一组联机重做日志文件被写满之后再触发归档操作,当然DBA也可以通过执行命令,手动进行归档。例如,对所有未归档的重做日志进行归档:

    SQL>  ALTER SYSTEM ARCHIVE LOG ALL;

  正是由于重做日志文件的自身特性,因此Oracle中的多项特性都是借助重做日志文件实现(含联机重做日志文件和归档重做日志文件),比如:

  • 系统崩溃后执行实例恢复。
  • 通过备份文件修复数据文件之后,执行介质恢复。
  • Standby 数据库应用。
  • Streams 同步数据。
  • LogMiner 分析日志,查看数据库曾经执行过的操作等。