Oracle数据库:重做日志与归档日志管理及RMAN清理策略
在Oracle数据库中,归档日志和重做日志协同工作,确保数据修改操作被有效记录。以下将详细介绍这些概念及其管理方法。
重做日志(Redo Log)
- 重做日志记录所有对数据库的更改,如插入、更新和删除,以确保数据持久性和事务一致性。
- LGWR进程定期将内存中的重做日志缓冲区内容写入磁盘上的重做日志文件。
- 重做日志文件是循环使用的,在非归档模式下旧的日志信息会被覆盖;而在归档模式下则会被保存为归档日志。
归档日志(Archivelog)
- 在归档模式下,当一个重做日志文件组满时,其内容会被复制到归档日志文件中,这一过程称为归档。
- 归档日志提供了历史数据变化的完整记录,支持数据库恢复和时间点恢复。
- ARCn进程自动完成归档,管理员需配置归档路径并保证足够的存储空间。
开启归档日志模式
在数据库装载模式下执行以下命令开启归档模式:
ALTER DATABASE FORCE LOGGING;
ALTER DATABASE ARCHIVELOG;
查询归档日志状态及路径
使用SQL*Plus查询归档日志的状态和存储位置:
sqlplus / as sysdba
SQL> archive log list;
示例输出:
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /data/app/oracle/product/12.2.0/db_1/dbs/arch
Oldest online log sequence 711
Next log sequence to archive 713
Current log sequence 713
归档日志清理
使用RMAN删除归档日志
可以通过RMAN直接删除指定日期之前的归档日志:
rman target /
RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
此命令会删除7天前的所有归档日志。
手动删除归档日志文件后清除记录
步骤如下:
- 删除不需要的归档日志文件:
rm -f /data/app/oracle/product/12.2.0/db_1/dbs/arch/*.arc
- 进入RMAN:
rman target /
- 清除过期记录:
RMAN> CROSSCHECK ARCHIVELOG ALL;
RMAN> DELETE EXPIRED ARCHIVELOG ALL;
重做日志扩展阅读
重做日志以循环方式工作,确保所有数据修改都被记录。以下是详细说明:
- 作用:
- 记录所有数据库修改,包括插入、更新和删除。
- 支持物理恢复,用于回滚未提交事务和重放已提交事务。
- 循环写入机制:
- 数据库配置多个重做日志组,LGWR进程依次写入。
- 当所有组满后,LGWR重新开始写第一个组。
- 日志切换:
- 日志组满或发出
switch logfile指令时触发切换。 - 在归档模式下,ARCH进程将当前重做日志写入归档日志。
- 检查点操作:
- 切换时发生检查点操作,同步数据文件头信息和控制文件,确保一致性。
- 查询重做日志状态:
- 查询
v$log视图获取重做日志组状态信息。