Oracle 数据库之归档日志

1、归档日志基本概念

Oracle 重做日志(Redo Log)是数据库的核心机制,记录了所有数据变更操作。当数据库处于归档模式(ARCHIVELOG Mode)时,Oracle 在切换重做日志组之前,会将已写满的重做日志文件复制到指定的归档目标位置,生成的文件就是归档日志(Archive Log / Redo Log Archive)。

归档日志是数据库恢复的基石。没有归档日志,数据库只能恢复到最近一次备份的时间点;有了归档日志,可以将数据库恢复到任意时间点(Point-in-Time Recovery),实现零数据丢失。

2、归档模式 vs 非归档模式

|----------------|--------------------------------------|-------------------------|
| 特性 | 归档模式(ARCHIVELOG) | 非归档模式(NOARCHIVELOG) |
| 日志保留 | 已写满的重做日志被归档后才可覆盖 | 已写满的重做日志直接被覆盖 |
| 在线备份 | 支持热备份(ALTER TABLESPACE BEGIN BACKUP) | 仅支持冷备份(SHUTDOWN 后复制) |
| 时间点恢复 | 支持任意时间点恢复 | 仅支持恢复到备份时刻 |
| Data Guard | 支持 | 不支持 |
| 闪回数据库 | 支持 | 不支持 |
| RMAN 增量备份 | 支持 | 部分支持(无归档日志无法完全恢复) |
| 适用场景 | 生产环境(必须) | 开发/测试环境 |

3、归档日志命名与格式

归档日志文件名由 LOG_ARCHIVE_FORMAT 参数控制,支持以下占位符:

|---------|------------------------|
| 占位符 | 含义 |
| %t | 线程号(Thread Number) |
| %s | 日志序列号(Sequence Number) |
| %r | 重置日志 ID(Resetlogs ID) |
| %d | 数据库 ID(DBID) |
| %S | 日志序列号(固定宽度,不足补零) |
| %T | 年月日(YYYYMMDD) |

查看当前归档日志格式:

SELECT name, value FROM v$parameter WHERE name = 'log_archive_format';

设置归档日志格式(需重启生效):

ALTER SYSTEM SET log_archive_format = 'arch_%t_%s_%r.arc' SCOPE=SPFILE;

实例:归档日志命名格式不当导致文件覆盖

**S --- Situation(场景):**某企业 Oracle 数据库使用默认归档格式 arch_%s.arc(仅含序列号)。在一次 DBID 相同的数据库克隆操作后,两个库的归档日志写入同一目录,因序列号冲突导致归档日志相互覆盖,主库归档日志丢失。

**T --- Task(任务):**修改归档日志命名格式,确保唯一性,并建立归档目录隔离机制。

A --- Action(行动):

1、修改归档日志格式,加入线程号和重置日志 ID:

ALTER SYSTEM SET log_archive_format='arch_%t_%s_%r.arc' SCOPE=SPFILE;

2、为不同数据库配置独立的归档目标目录;

3、建立归档目录命名规范:/archive/<DB_UNIQUE_NAME>/

4、重启数据库使格式生效。

**R --- Result(结果):**归档日志文件名包含 %t(线程号)和 %r(Resetlogs ID),彻底避免了文件覆盖问题。后续克隆操作不再影响主库归档日志安全。

4、归档日志关键视图

**V$ARCHIVED_LOG:**显示所有已归档的日志信息,包括序列号、SCN、大小、归档目标等

**V$ARCHIVE_DEST:**显示所有归档目标位置及其状态

**V$ARCHIVE_DEST_STATUS:**显示归档目标的详细状态(传输延迟、错误信息等)

**V$LOG_HISTORY:**显示日志切换历史记录

**V$LOG:**显示当前在线重做日志组状态

**V$LOGFILE:**显示重做日志文件物理位置

**V$FLASH_RECOVERY_AREA_USAGE:**显示 FRA 空间使用情况(含归档日志)

**DBA_HIST_ARCHIVED_LOG:**AWR 中的归档日志历史(自动负载信息库)

相关推荐
土狗TuGou1 小时前
SQL内功笔记 · 第6篇:窗口函数的使用ROW_NUMBER等
java·数据库·后端·sql·mysql
川石课堂软件测试1 小时前
使用mock进行接口测试教程
数据库·python·功能测试·测试工具·华为·单元测试·appium
Solis程序员2 小时前
MongoDB 超全入门到实战:从原理、CRUD到高可用架构
数据库·mongodb·架构
yurenpai(27届找实习中)2 小时前
redis_点评(26.附近店铺——实现附近商家功能)
数据库·spring boot·redis
BullSmall2 小时前
异构数据库(通俗 + 核心知识点)
数据库
Rick19932 小时前
索引下推(ICP):在已经用到联合索引的前提下,减少回表次数,提升查询效率
数据库
金海境科技2 小时前
实践分享!虚拟化数据恢复前三标准
数据库
不剪发的Tony老师2 小时前
RedisME:一个现代化、轻量级Redis管理工具
数据库·redis
金海境科技2 小时前
实践分享!服务器数据恢复口碑榜
数据库