归档日志文件:是处于非活动(INACTIVE)的状态的重做日志文件的备份。它对ORACLE数据库的备份和恢复起至关重要的作用。是联机重做日志文件的一个副本,与被复制的成员完成一样,即重做记录相同,日志序列号相同。
一、数据库的归档与非归档模式:
1.当数据库处于NOACRCHIVELOG模式时,不对重做日志文件进行归档,直接覆盖旧的重做日志文件,此时数据库只能从例程失败中进行恢复。
特点:
a.发生日志切换时(alter system switch logfile),LGWR后台进程可以无条件覆盖原来的已经变为非活动的(INACTIVE)重做日志文件的内容。
b.进行数据库备份时,必须先使用SHUTDOWN或者SHUTDOWN IMMEDIATE命令先关闭数据库,然后才能通过操作系统备份所有的物理文件。即冷备份。不能进行联机的热备份。
c.NOACRCHIVELOG模式时,只能保护数据库免于例程失败,但不能保护数据库免于介质失败。
d.NOACRCHIVELOG模式不需要考虑存储空间的问题。
2.当数据库处于ACRCHIVELOG模式时候,系统通过后台进程ARCn来帮助DBA自动完成对重做日志文件进行归档,归档之后才覆盖旧的重做日志文件,并将其复制到一个指定的位置,成为归档日志文件,此时数据库还能进一步从介质失败中恢复。即可将数据的损失减少到最小,可用性提高到最高。
特点:
a.当ACRCHIVELOG模式时。可以对数据库进行联机的热备份。
b.当出现数据文件损坏时,除了SYSTEM表空间的数据文件,其他表空间都可以在数据库处于OPEN时恢复。
c.执行数据库备份时,不仅可以进行完成恢复,也可以指定恢复到某个特定的时间点。
一、数据库归档参数
通过ARCHIVE LOG LIST查看数据库的归档模式;
1.LOG_ARCHIVE_DUPLIEX_DEST与LOG_ARCHIVE_DEST_n
LOG_ARCHIVE_DEST用于指定第一个归档目标位置(主归档目标),n表示复本数量。如果只设置一个复本,当这个复本错误时候,则可以通过其他复本备用。(1<=n<=10)
LOG_ARCHIVE_DUPLIEX_DEST用于指定第二个归档目标位置(次归档目标),
这两个参数的相排斥的,不能同时存在。
2.启动和禁用自动归档的参数
LOG_ARCHIVE_START(静态参数):当数据库从初始参数文件中读取到这个参数的设置,系统自动启动ARCn进程。
SHOW PARAMETER LOG_ARCHIVE_START:
ALTER SYSTEM SET LOG_ARCHIVE_START=TRUE SCOPE=SPFILE;
在数据库例程启动后启动或禁用自动归档功能。
ALTER SYSTEM ARCHIVE LOG START;
ALTER SYSTEM ARCHIVE LOG STOP;
1.执行手动归档:
(1)对所有没有归档的重做日志进行归档:
通过ALTER SYSTEM ARCHIVE LOG ALL;
(2)当前的重做日志文件进行归档:
ALTER SYSTEM ARCHIVE CURRENT
(3)指定日志序列号的重做日志文件进行归档
ALTER SYSTEM ARCHIVE LOG SEQUCNE 56;
(4)指定日志组编号的重做日志文件进行归档
ALTER SYSTEM ARCHIVE LOG GROUP 2
(5)指定联机的重做日志文件进行归档
ALTER SYSTEM ARCHIVE LOG
LOGFILE 'D:\oracle\oradata\work\REDO01.LOG '
(6)将下一个没有归档的重做日志文件组进行归档:
ALTER SYSTEM ARCHIVE LOG NEXT
2.自动归档:自动归档后在存档终点文件夹下有以下自动归档的文件
归档的日志文件可以通过LOGMNR进行分析。
1.ARCn后台进程的最大参数
LOG_ARCHIVE_MAX_PROCESSES(动态参数)最大10个后台进程:
可以通过SELECT * FROM V$ARCHIVE_PROCESSES视图查看
查询归档信息:
与归档信息相关的视图:
视图 | 作用 |
V$DATABASE | LOG_MODE字段归档模式 |
V$INSTANCE | ARCHIVER字段是否正在归档 |
V$ARCHIVED_LOG | 从控制文件中获取的所有历史归档日志文件信息 |
V$ARCHIVE_DEST | 归档目标位置的信息 |
V$ARCHIVE_PROCESSES | 归档进程的信息 |
V$BACKUP_REDOLOG | 所有已备份的归档日志文件的信息 |
V$LOG | 所有重做日志文件的信息,其中包含那些需要归档的重做日志文件 |
V$LOG_HISTORY | 重做日志文件的历史信息 |
a.查看数据库归档模式
b.查看数据库是否正在归档
c.查看那些重做日志需要归档
SELECT GROUP#,MEMBERS,SEQUENCE#,ARCHIVED,STATUS,FIRST_CHANGE#,
TO_CHAR(FIRST_TIME, 'YYYY-MM-DD HH24:MI:SS')FIRST_CHANGE_TIME
FROM V$LOG
d.查看归档目标位置的信息
SELECT DESTINATION,BINDING,TARGET,STATUS FROM V$ARCHIVE_DEST
e.查询已归档的日志文件信息(即是系统中存在的物理文件)
SELECT NAME,SEQUENCE#,ARCHIVED,STATUS,FIRST_CHANGE#,
TO_CHAR(FIRST_TIME, 'YYYY-MM-DD HH24:MI:SS')FIRST_CHANGE_TIME
FROM V$ARCHIVED_LOG