Oracle日志系统之重做日志和归档日志
Oracle日志系统之重做日志和归档日志
- 重做日志
- 归档日志
本文讨论Oracle日志系统中对数据恢复非常重要的两个日志:重做日志和归档日志。
重做日志
重做日志,英文名Redo Log,顾名思义,是用来数据重做的,主要使用场景是事务恢复和崩溃恢复。
重做日志分为两种,在线重做日志(Online Redo Log)与归档重做日志(Archived Redo Log)。
在线重做日志:由若干个redo log group组成,同一时间只会有一个group处于使用状态(CURRENT),可通过SELECT * FROM V$LOG
查看;此外,多个Group还可以保障恢复一致性:每个 Group 在日志切换后会被顺序编号(SEQUENCE#),用于数据库恢复和归档排序。多个 Group 保证日志序列完整性,在崩溃恢复、RMAN 恢复、DataGuard 复制等场景中能完整回放事务日志。
每个Group下包含一个或多个LogFile,当一个LogFile写满后,组之间会发生日志切换(log switch);组内保持多个文件的目的是冗余,允许存储在不同磁盘下,防止日志出现单点损坏;
因为RedoLog是循环使用的,所以默认情况下,当LogFile全部写满时,就会发生RedoLog覆盖的现象,在生产环境下,为保证数据安全,我们不希望这种事情发生,所以就要开启归档日志。
归档日志
归档日志:即归档重做日志,主要作用是对重做日志进行归档,防止覆盖。开启归档日志后,系统会启动后台进程ARCn,当重做日志发生日志切换时,则切换出的redolog会被归档为归档日志,归档成功后可在 V$ARCHIVED_LOG 视图中查询到相关信息。
与RedoLog相比,归档日志不会主动清除,具有更强的数据恢复能力。(非归档模式只能恢复到最近一次冷备份,数据一旦丢失无法挽回)