Oracle 数据库归档模式详解
Oracle 数据库归档模式详解
适用版本:Oracle Database 10g / 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07
1. 概述
归档模式(ARCHIVELOG)保证数据可恢复[1]:
详细见:Oracle 数据库归档模式配置、Oracle 归档日志管理详解。
2. 归档模式
2.1 ARCHIVELOG
- Redo 日志归档
- 支持热备份
- 支持时间点恢复
- 生产推荐
2.2 NOARCHIVELOG
- 不归档
- 仅支持冷备份
- 无法时间点恢复
- 测试环境
3. 查看
SELECT log_mode FROM v$database;
-- ARCHIVELOG / NOARCHIVELOG
ARCHIVE LOG LIST;
4. 启用
4.1 关闭
SHUTDOWN IMMEDIATE;
4.2 启动 MOUNT
STARTUP MOUNT;
4.3 切换
ALTER DATABASE ARCHIVELOG;
-- 或 NOARCHIVELOG
4.4 打开
ALTER DATABASE OPEN;
5. 归档配置
5.1 LOG_ARCHIVE_DEST_n
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1 = 'LOCATION=/u01/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=prod';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2 = 'SERVICE=stby1 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=stby1';
5.2 FRA
ALTER SYSTEM SET db_recovery_file_dest = '/u01/fra';
ALTER SYSTEM SET db_recovery_file_dest_size = 50G;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1 = 'LOCATION=USE_DB_RECOVERY_FILE_DEST';
5.3 LOG_ARCHIVE_FORMAT
ALTER SYSTEM SET LOG_ARCHIVE_FORMAT = '%t_%s_%r.arc' SCOPE=SPFILE;
6. 归档进程
6.1 ARCn
- 归档进程
- 默认 4 个
- LOG_ARCHIVE_MAX_PROCESSES
6.2 LGWR
- 10g+ LGWR 直接归档
- 性能
6.3 调整
ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES = 4;
7. 强制归档
7.1 切换日志
ALTER SYSTEM SWITCH LOGFILE;
7.2 归档当前
ALTER SYSTEM ARCHIVE LOG CURRENT;
7.3 全部
ALTER SYSTEM ARCHIVE LOG ALL;
8. 查看
8.1 归档日志
SELECT name, sequence#, first_time, next_time, status
FROM v$archived_log
ORDER BY sequence# DESC;
SELECT dest_id, status, error
FROM v$archive_dest_status;
8.2 进程
SELECT process, status, sequence#, block#, blocks
FROM v$managed_standby;
8.3 FRA
SELECT name, space_limit, space_used, space_reclaimable
FROM v$recovery_file_dest;
SELECT file_type, percent_space_used
FROM v$flash_recovery_area_usage;
9. 归档管理
9.1 清理
RMAN> CROSSCHECK ARCHIVELOG ALL;
RMAN> DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
RMAN> DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
RMAN> DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7' BACKED UP 1 TIMES TO DEVICE TYPE DISK;
9.2 备份
RMAN> BACKUP ARCHIVELOG ALL DELETE INPUT;
RMAN> BACKUP ARCHIVELOG FROM TIME 'SYSDATE-1' DELETE INPUT;
9.3 保留
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
10. 空间问题
10.1 ORA-00257
- 归档空间满
- 清理
- 增大空间
10.2 ORA-19809
- FRA 满
- 清理
- 增大 FRA
10.3 处理
# 紧急清理
RMAN> CROSSCHECK ARCHIVELOG ALL;
RMAN> DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
RMAN> DELETE NOPROMPT ARCHIVELOG UNTIL TIME 'SYSDATE-3';
11. 热备份
11.1 需要 ARCHIVELOG
- 热备份必须 ARCHIVELOG 模式
- BEGIN BACKUP
- 复制文件
- END BACKUP
11.2 RMAN
RMAN> BACKUP DATABASE;
# 无需 BEGIN/END BACKUP
12. 时间点恢复
12.1 需要 ARCHIVELOG
- PITR 必须 ARCHIVELOG
- 归档日志完整
12.2 流程
RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP MOUNT;
RMAN> SET UNTIL TIME "...";
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;
RMAN> ALTER DATABASE OPEN RESETLOGS;
详细见:Oracle RMAN 不完全恢复详解。
13. Data Guard
13.1 需要 ARCHIVELOG
- Data Guard 必须 ARCHIVELOG
- 归档传输
13.2 传输
- ARCH 传输
- LGWR 传输(SYNC/ASYNC)
详细见:Oracle Data Guard Redo 传输详解。
14. 应用场景
14.1 生产
- ARCHIVELOG
- 热备份
- 时间点恢复
- Data Guard
14.2 测试
- NOARCHIVELOG
- 节省空间
- 简单
14.3 数据仓库
- 可 ARCHIVELOG 或 NOARCHIVELOG
- 取决于 RPO
15. 最佳实践
- 生产 ARCHIVELOG:必须
- FRA 充足:空间
- 多路归档:安全
- 定期清理:空间
- 监控:FRA 使用
- 告警:空间
- 备份归档:RMAN
- 测试:恢复
- 文档:配置
- 演练:定期
16. 参考资料
[1] Oracle Database Administrator’s Guide 19c, “Archived Redo Log Files” https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/