--------归档日志文件介绍:
重做日志文件归档是指将写满了的重做日志文件保存到一个或多个指定的离线位置,这些被保存的历史重做日志文件的集合被称为归档日志文件。
根据是否对重做日志文件进行归档,数据库运行模式分为归档模式与非归档模式。只有当数据库运行在归档模式时,才会将重做日志文件归档。
归档方式可以采用自动归档,也可以采用手动归档。自动归档更加方便、高效,手动归档通常在进行特定的数据库维护操作时使用。
如下图:归档模式下数据库重做日志文件归档过程:
由于在归档模式下,数据库中历史重做日志文件全部被保存,即用户的所有操作都被记录下来,因此在数据库出现故障时,即使是介质故障,利用数据库
备份、归档日志文件和联机重做日志文件也可以完全恢复数据库。而在非归档模式下,由于没有保存过去的重做日志文件,数据库只能从实例崩溃中恢复,而
无法进行介质恢复。同时,在非归档模式下不能执行联机表空间备份操作,不能使用联机归档模式下建立的表空间备份进行恢复,而只能使用非归档模式下建
立的完全备份来对数据库进行恢复。
------------数据库归档模式的设置:
在数据库创建后,可以通过 alter database archivelog 或 alter database noarchivelog 语句来修改数据库的模式。基本步骤如下:
(1)、关闭数据库
SQL> shutdown immediate
(2)、设置归档目的地:
将数据库设置为归档模式之前,需要首先设置归档目的地,(详细过程看后面的内容)。
在oracle 11g 数据库中,默认归档目的地由初始化参数 DB_RECOVERY_FILE_DEST 指定。
SQL> select name , value from V$PARAMETER where name = 'DB_RECOVERY_FILE_DEST' ;
(3)、将数据库启动到加载状态
SQL> startup mount;
(4)、改变数据库归档模式:
SQL> alter database archivelog ;
或者修改数据库为非归档模式:
alter database noarchivelog;
(5)、打开数据库
SQL>alter database open;
--------------归档目标设置:
对重做日志文件归档之前,应该设置归档目标,即归档路径。
设置多个归档目标: 通过初始化参数 LOG_ARCHIVE_DEST_n
设置两个归档目标:通过初始化参数 LOG_ARCHIVE_DEST 和 LOG_ARCHIVE_DUPLEX_DEST
归档文件命名方式可以通过初始化参数 LOG_ARCHIVE_FORMAT 设置
1.设置初始化参数 LOG_ARCHIVE_DEST 和 LOG_ARCHIVE_DUPLEX_DEST
使用初始化参数 LOG_ARCHIVE_DEST 和 LOG_ARCHIVE_DUPLEX_DEST 只能设置两个本地的归档目标,一个主归档目标和一个辅助归档目标。
例如:
SQL> alter system set LOG_ARCHIVE_DEST = 'D:\BACKUP\ARCHIVE' ;
SQL>alter system set LOG_ARCHIVE_DUPLEX_DEST = 'E:\BACKUP\ARCHIVE' ;
2.设置初始化参数 LOG_ARCHIVE_DEST_n
初始化参数 LOG_ARCHIVE_DEST_n 最多可以设置31 个归档目标,即 n 取值范围为 1~31 。
其中1~10 可以用于指定本地的或远程的归档目标,11~31 只能用于指定远程的归档目标。
设置初始化参数 LOG_ARCHIVE_DEST_n 时,需要使用关键字 LOCATION 或 SERVICE 指明归档目标是本地的还是远程的。可以使用关键字
OPTIONAL (默认)或 MANDATORY 指定归档是可选归目标还是强制归档目标。
强制归档目标的归档必须成功进行,否则数据库将挂起。
例如:
SQL> alter system set LOG_ARCHIVE_DEST_1 = 'LOCATION = D:\BACKUP\ARCHIVE MANDATORY ' ;
SQL> alter system set LOG_ARCHIVE_DEST_2= 'LOCATION = E:\BACKUP\ARCHIVE MANDATORY ' ;
SQL> alter system set LOG_ARCHIVE_DEST_5 = ' SERVICE = STANDBY1 ' ;
3. 设置归档文件命名方式:
通过设置参数 LOG_ARCHIVE_FORMAT ,可以指定归档文件命令方式。例如:
SQL> alter system set LOG_ARCHIVE_FORMAT = 'arch_%t_%s_%r.arc' scope = spfile ;
在参数值中可以包含 %s , %S , %T , %t , %r , %R ,其含义如下:
》》%s :代表日志文件***(Log Sequences Number)
》》%S :代表日志文件***,不足 3 位的以 0 补齐
》》%t :代表线程号(Thread Number)
》》%T :代表线程号,不足 3 位的以 0 补齐
》》%r :代表重做日志的ID (Redologs ID)
》》%R : 代表重做日志的ID,不足 3 位的以 0 补齐
----------查询归档信息:
在oracle 11g中可以执行:
方法一:ARCHIVE LOG LIST
方法二:查询数据字典视图 V$DATABASE 、 V$ARCHIVED_LOG 、V$ARCHIVED_DEST 、 V$ARCHIVED_PROCESSES
等获取数据库归档信息。
《案例》
可以通过 ARCHIVE LOG LIST 命令查看当前数据库的归档设置情况。。例如:
SQL> ARCHIVE LOG LIST;
《案例》
查看当前所有归档重做日志文件的***,以及每个归档重做日志文件中 SCN 的范围。
SQL> select sequence# , first_change# , next_change# from V$ARCHIVED_LOG;