配置数据库归档模式
目标:
说明 ARCHIVELOG 与 NOARCHIVELOG 模式之间的区别
将数据库配置为 ARCHIVELOG 模式
启用自动归档
执行手动日志归档说明 ARCHIVELOG 与 NOARCHIVELOG 模式之间的区别
将数据库配置为 ARCHIVELOG 模式
启用自动归档
执行手动日志归档
要点:
1.NOARCHIVELOG 模式
缺省情况下,数据库是以 NOARCHIVELOG 模式创建的。在 NOARCHIVELOG 模式下操作数据库时有以下特性:
重做日志文件以循环的方式使用。
重做日志文件可以在检查点发生之后立即重新使用。
重做日志被覆盖后,介质恢复将只能恢复到上一次完全备份。
NOARCHIVELOG 模式的含义
如果某个表空间由于故障而不可用,将无法继续对数据库进行操作,除非删除了该表空间或从备份还原了整个数据库。
只能在数据库关闭时对数据库执行操作系统备份。而且,必须使用 NORMAL、IMMEDIATE 或 TRANSACTIONAL 选项关闭数据库。
必须在每次备份时完整备份所有的数据文件和控制文件。尽管也可以备份联机重做日志文件,但这是不必要的。
如果联机重做日志文件已被覆盖,则将丢失上次完全备份后的所有数据。
2.ARCHIVELOG 模式
在发生检查点并且已经通过 ARCn 后台进程备份重做日志文件之前,不能重新使用填满的重做日志文件。控制文件中将有一个条目记录归档日志文件的日志序列号。
对数据库的最新更改在任何时候均可用于例程恢复,而归档重做日志文件可以用于介质恢复。
归档要求
数据库必须处于 ARCHIVELOG 模式。通过发出命令将数据库置于 ARCHIVELOG 模式可以更新控制文件。可以启用 ARCn 后台进程来实现自动归档。
应该有足够的资源来存放生成的归档重做日志文件。
将数据库设置为 ARCHIVELOG 模式的含义
出现介质故障时,可以防止数据库丢失数据。
可以在数据库联机时对其进行备份。
由于介质故障导致表空间(非 SYSTEM)脱机时,数据库的其余部分仍可用,因为表空间(非 SYSTEM)可以在数据库打开时恢复。
介质恢复选项
无论数据文件处于联机或脱机状态,都可以还原损坏文件的备份副本,并使用归档日志文件将数据文件更新为当前的版本。
可以将数据库恢复至特定的时间点。
可以将数据库恢复至指定归档日志文件的末尾。
可以将数据库恢复至特定的系统更改号 (SCN)。
3.更改归档模式
在数据库处于装载状态时使用 ALTER DATABASE 命令更改 ARCHIVELOG 模式。
SQL> ALTER DATABASE [ archivelog | noarchivelog ]
注:将数据库模式从 NOARCHIVELOG 模式更改为 ARCHIVELOG 模式后,必须备份所有数据库文件和控制文件。
将数据库置于 ARCHIVELOG 模式之后进行的新备份,将由所有以后的归档重做日志文件应用。
将数据库设置为 ARCHIVELOG 模式并不 启用归档程序 (ARCn) 进程。
4.自动和手动归档
在自动归档过程中,将启用 ARCn 后台进程,该进程在重做日志文件填满后复制这些文件。
在手动归档过程中,必须使用 SQL*Plus 或 Oracle Enterprise Manager 复制文件。
原则
在决定归档模式(自动或手动)之前,必须将数据库设置为 ARCHIVELOG 模式。
如果未切换到 ARCHIVELOG 模式,将导致 ARCn 无法复制重做日志文件。
启用归档进程之前,应彻底关闭数据库(使用正常、立即或事务处理选项)。
注:如果由于某种原因导致归档进程 (ARCn) 失败,一旦事务处理活动填满了所有重做日志,Oracle 服务器就会停止。
将数据库设置为 ARCHIVELOG 模式将通知 Oracle 服务器不要覆盖联机重做日志,除非这些日志已经归档。
因此,联机重做日志的归档必须与系统中的事务处理活动(生成重做日志)保持同步。
启用自动归档:设置初始化参数LOG_ARCHIVE_START=TRUE
例程启动后启用自动归档:ALTER SYSTEM ARCHIVE LOG START;
禁用自动归档:设置初始化参数LOG_ARCHIVE_START=FALSE
例程启动后禁用自动归档:ALTER SYSTEM ARCHIVE LOG STOP;
指定多个 ARCn 进程
动态参数 LOG_ARCHIVE_MAX_PROCESSES 用于控制在例程启动时启动的归档进程数。
最多可指定十个 ARCn 进程。
ARCn 进程数可通过 ALTER SYSTEM 命令进行更改。
停止或启动附加归档进程:修改参数 LOG_ARCHIVE_MAX_PROCESSES 的值
手动归档联机重做日志文件
ALTER SYSTEM ARCHIVE LOG CURRENT;
手动归档联机重做日志文件时,可以在 ALTER SYSTEM ARCHIVE LOG 命令中使用以下选项:
THREAD 指定包含要归档的重做日志文件组的线程(用于Oracle Parallel Server)
SEQUENCE 归档由日志序列号标识的联机重做日志文件组
CHANGE 基于SCN进行归档
GROUP 归档联机重做日志文件组
CURRENT 归档指定线程的当前重做日志文件组
LOGFILE 归档包含有由文件名标识的成员的重做日志文件组
NEXT 将尚未归档的最旧的联机重做日志文件组进行归档
ALL 对指定线程的已满但尚未归档的所有联机重做日志文件组进行归档
START 启用重做日志文件组的自动归档
TO 指定重做日志文件组归档的目标位置
STOP 禁用重做日志文件组的自动归档
4.指定归档日志目标
使用 LOG_ARCHIVE_DEST_n 最多可指定十个归档目标。该参数仅在安装了 Oracle 企业版后才有效。
对于 Oracle 企业版用户,建议不要使用 LOG_ARCHIVE_DEST 参数,而支持使用 LOG_ARCHIVE_DEST_n 参数。
使用 LOG_ARCHIVE_FORMAT 可在文件名中包括日志序列号和线程号。
LOG_ARCHIVE_DEST_n 是动态参数,可以在系统级或会话级对其进行修改。目标可以是:
本地文件系统位置,由关键字 LOCATION 定义。指定的位置必须是有效的,并且不能是一个 NFS 装载的目录。
远程目标的 Oracle Net 别名,由关键字 SERVICE 指定。指定的服务名通过使用本地的 tnsnames.ora 文件进行解析,以标识远程数据库。Oracle9i 支持使用 IPC 或 TCP/IP 协议将归档日志文件发送到远程节点。只能为每个远程数据库指定一个归档目标。
注:配置归档日志目标时,确保根据所用的操作系统环境来设置路径名。必须为至少一个目标指定 LOCATION 参数。
使用 LOG_ARCHIVE_DEST_n 参数时,可以将目标指定为强制 (mandatory) 或可选 (optional),如下所示:
MANDATORY 表示必须成功完成归档到该目标的操作才可以覆盖联机重做日志文件。
OPTIONAL 表示即使联机重做日志文件尚未成功地归档到该目标,也可以重新使用。这是缺省设置。
REOPEN 属性
REOPEN 属性定义发生故障时是否必须重新尝试归档到目标。如果为关键字 REOPEN 指定了值,
如 REOPEN=600,则若发生故障,在经过指定时间(以秒计)后,归档程序将尝试写入该目标。
缺省值为 300 秒。归档到目标的尝试次数没有限制。归档中的所有错误将在主站点的警报文件中报告。
如果未指定 REOPEN,则可选目标上的错误将被记录并忽略。不再将重做日志发送到这些目标。
在归档成功之前,强制目标上的错误将导致无法重新使用联机重做日志。
只要归档不成功,归档目标的状态就设置为 ERROR。
几个示例:
本地磁盘
log_archive_dest_1 = "LOCATION=/archive1"
远程备用数据库
log_archive_dest_2 = "SERVICE=standby_db1"
MANDATORY
log_archive_dest_2="SERVICE=standby_db1 MANDATORY REOPEN=600"
OPTIONAL
log_archive_dest_3="LOCATION=/archive2/ OPTIONAL"
指定成功归档位置的最小数量
定义为 MANDATORY 的目标的数量
LOG_ARCHIVE_MIN_SUCCEED_DEST 参数的值
只有在下列情况下才能重新使用联机重做日志组:
已归档到所有强制位置
已归档的本地位置数大于或等于LOG_ARCHIVE_MIN_SUCCEED_DEST 参数的值
假定 LOG_ARCHIVE_MIN_SUCCEED_DEST 设置为 2 。如果强制本地目标的数量为 3,则必须归档这 3 个位置,
才可以重新使用联机重做日志文件。相反,如果强制本地归档目标的数量为 1,则必须至少归档 1 个可选本地归档目标,
才可以重新使用联机重做日志文件。也就是说,LOG_ARCHIVE_MIN_SUCCEED_DEST 可以用于归档到一个或多个可选强制目标,但反过来不行。
5.控制归档到目标
可以使用动态初始化参数 LOG_ARCHIVE_DEST_STATE_n 禁用归档目标。
ALTER SYSTEM SET log_archive_dest_state_3 = DEFER; --禁用
ALTER SYSTEM SET log_archive_dest_state_3 = ENABLE; --启用
6.指定文件名格式
LOG_ARCHIVE_FORMAT = extension 其中,extension 应包括日志序列号变量 %s 或 %S。缺省值是根据操作系统而定的。
文件名选项
%s 或 %S:包括日志序列号,作为文件名的一部分。
%t 或 %T:包括线程号,作为文件名的一部分。
使用 %S 可通过在值的左侧用 0 来填补空位使该值长度保持固定。
示例
UNIX:LOG_ARCHIVE_FORMAT=arch%s.arc
Windows NT:LOG_ARCHIVE_FORMAT = %%ORACLE_SID%%T%TS%S.ARC
7.获取归档日志信息
V$ARCHIVED_LOG:显示控制文件中的归档日志信息
V$ARCHIVE_DEST:对于当前例程,说明所有归档日志目标、当前值、模式和状态。
V$LOG_HISTORY:包含控制文件中的日志文件信息。
V$DATABASE:归档的当前状态。
V$ARCHIVE_PROCESSES:提供有关例程的各种 ARCH 进程的状态的信息。
ARCHIVE LOG LIST 命令向 DBA 提供数据库的日志模式和归档状态的信息