--====================
-- Oracle 归档日志
--====================
Oracle可以将联机日志文件保存到多个不同的位置,将联机日志转换为归档日志的过程称之为归档。相应的日志被称为归档日志。
一、归档日志
是联机重做日志组文件的一个副本
包含redo记录以及一个唯一的log sequence number
对日志组中的一个日志文件进行归档,如果该组其中一个损坏,则另一个可用的日志将会被归档
对于归档模式的日志切换,当日志归档完成后,下一个日志才能被覆盖或重新使用
自动归档功能如开启,则后台进程arcn在日志切换时自动完成归档,否则需要手动归档
归档日志用途
恢复数据库
更新standby数据库
使用LogMiner 提取历史日志的相关信息
二、日志的两种模式
1.非归档模式
不适用与生产数据库
创建数据库时,缺省的日志管理模式为非归档模式
当日志切换,检查点产生后,联机重做日志文件即可被重新使用
联机日志被覆盖后,介质恢复仅仅支持到最近的完整备份
不支持联机备份表空间,一个表空间损坏将导致整个数据库不可用,需要删除掉损坏的表空间或从备份恢复
对于操作系统级别的数据库备份需要将数据库一致性关闭
应当备份所有的数据文件、控制文件(单个)、参数文件、密码文件、联机日志文件(可选)
2.归档模式
能够对联机日志文件进行归档,生产数据库强烈建议归档
在日志切换时,下一个即将被写入日志组必须归档完成之后,日志组才可以使用
归档日志的Log sequence number信息会记录到控制文件之中
必须有足够的磁盘空间用于存放归档日志
Oracle 9i 需要设置参数log_archive_start=true 才能够进行自动归档
备份与恢复
支持热备份,且当某个非系统表空间损坏,数据库仍然处于可用状态,且支持在线恢复
使用归档日志能够实现联机或脱机时点恢复(即可以恢复到指定的时间点、指定的归档日志或指定的SCN)
三、两种模式的切换设置及手动归档
1.非归档到归档模式
a.一致性关闭数据库(shutdown [immediate | transactional |normal])
b.启动到mount阶段(startup mount)
c.切换到归档模式(alter database archivelog [manual])
d.切换到open阶段(alter database open)
e.对数据做一个完整备份(full backup)
--演示非归档到归档模式
SQL> ARCHIVE LOG LIST --查看数据库是否处于归档模式
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 14
Current log sequence 16
SQL> SELECT log_mode FROM v$database; --查看数据库是否处于归档模式
LOG_MODE
------------
NOARCHIVELOG
SQL> SHUTDOWN IMMEDIATE; --一致性关闭数据库
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> STARTUP MOUNT; --启动到mount状态
ORACLE instance started.
Total System Global Area 251658240 bytes
Fixed Size 1218796 bytes
Variable Size 75499284 bytes
Database Buffers 171966464 bytes
Redo Buffers 2973696 bytes
Database mounted.
SQL> ALTER DATABASE ARCHIVELOG; --切换到自动归档模式
Database altered.
SQL> ALTER DATABASE OPEN; --切换到open状态
Database altered.
SQL> ARCHIVE LOG LIST; --查看数据库的归档状态
Database log mode Archive Mode --已置为归档模式
Automatic archival Enabled --对日志进行自动归档
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 14
Next log sequence to archive 16
Current log sequence 16
--备份数据库步骤省略
2.归档模式切换到非归档模式(步骤同非归档到归档模式仅仅是c步骤使用alter database noarchivelog,演示省略)
a.一致性关闭数据库(shutdown [immediate | transactional |normal])
b.启动到mount阶段(startup mount)
c.切换到归档模式(alter database noarchivelog )
d.切换到open阶段(alter database open)
e.对数据做一个完整备份(full backup)
3.手动归档
手动归档时需要将日志模式切换为alter database archivelog manual
再使用alter system archive log current | all 实现归档
更多手动归档命令:ALTER SYSTEM archive_log_clause
注意:
手动归档模式下不支持stanby数据库
在alter database archivelog模式下也可以实现对日志的归档
SQL> ALTER DATABASE ARCHIVELOG MANUAL; --将日志模式切换为手工归档模式
Database altered.
SQL> ALTER DATABASE OPEN; --打开数据库
Database altered.
SQL> ALTER SYSTEM ARCHIVE LOG CURRENT; --对当前的日志进行归档(建议在mount阶段完成)
System altered.
SQL> ALTER SYSTEM ARCHIVE LOG ALL; --对所有的日志进行归档
alter system archive log all
*
ERROR at line 1:
ORA-00271: there are no logs that need archiving --没有需要归档的日志