重做日志管理:DBA 最容易忽略的恢复命脉

很多 DBA 对 Oracle 的印象停留在表空间、索引和 SQL 调优,遇到数据库崩溃、丢数据时,才意识到 redo log 有多重要。redo 日志负责记录所有修改,前滚恢复靠它,实时应用备库靠它,log file sync 等待也与它相关。可日常工作中,很多人只是会看 alert 日志里有沒有 ORA-00312、ORA-00313,对 redo 文件怎么组织、LGWR 什么时候写、日志组怎么配才合理,往往是模糊的。这门课就是专门把重做日志从原理到操作、再到图形化工具使用补齐的实战内容,不是泛泛讲概念,而是直接对着数据库做给你看。

先弄清三件事:原理、操作、工具

建议不要把时间平均花在每一节上,而是按能力缺口来选看。如果你的问题在于“不知道日志切换为什么频繁”“redo log buffer 设多大合适”,先看课程前半部分的原理和机制。这里会解释 redo 记录的产生过程、日志组轮流写入的方式、检查点与日志切换的关系,这些是判断问题的底层依据。看完后你应该能回答:为什么日志文件不宜过大也不宜过小?为什么有时要强制切换?为什么事务提交慢要查 log file sync?

如果你的问题在于“不敢动日志文件”,那就重点看基本操作部分。这部分会演示如何新增日志组、删除日志组、手动切换、查询日志文件状态,以及处理日志文件丢失或损坏时的常见操作。建议你边看边在测试库上跟着敲,注意区分当前日志组和非当前日志组,别在生产库上直接练。操作部分能让你独立完成 redo 日志的日常维护,比如给核心业务库增加一组日志来缓解切换压力,或者清理卡住的归档目录。

如果你平时习惯用图形工具管理 Oracle,最后一部分值得看。它演示用 Toad 管理 redo 的新增、删除、切换和监控,省去背命令行的负担。但要注意:图形工具的底层就是动态视图和命令,如果你不了解前面讲的原理,用 Toad 点按钮可能不知道风险在哪里。所以这个部分建议在命令行操作练熟之后再看,用来提升效率,而不是替代理解。

学完能做什么,以及怎么练才算会

学完这门课,独立完成这些事才算过关:第一,能解释 redo 日志组的循环覆盖机制,并推断日志切换频繁是不是因为日志文件太小或 checkpoint 跟不上。第二,能在不重启数据库的前提下,安全地新增、删除、移动 redo 日志组,并处理 v$log 中状态为 ACTIVE/CURRENT/

课程目录

1 第1课-重做日志文件原理和机制-1 (07:16)
2 第2课-重做日志文件原理和机制-2 (11:35)
3 第3课-重做日志文件基本操作-1 (06:51)
4 第4课-重做日志文件基本操作-2 (07:56)
5 第5课-使用Toad管理redo (06:07)