
Oracle 19c: V$BACKUP_ARCHIVELOG_DETAILS 动态性能视图详解
核心作用:提供已备份归档日志的详细元数据信息,包括备份时间、SCN范围、大小等关键属性,是数据库备份恢复管理的关键视图。
1. 视图核心作用
- 备份审计:精确跟踪归档日志备份历史
- 恢复规划:提供时间点恢复所需的SCN范围
- 完整性验证:确保所有必需归档日志已备份
- 空间管理:分析备份归档日志的存储消耗
- 故障诊断:识别备份遗漏或损坏的归档日志
- 合规报告:生成归档日志备份合规性证明
📌 注意:此视图仅显示通过RMAN成功备份的归档日志信息,不包含用户手动复制的日志。
2. 关键使用场景
- 恢复验证:确认特定时间点的归档日志可用性
- 备份审计:验证归档日志备份策略执行情况
- 存储优化:分析备份归档日志的存储模式
- 故障排查:诊断恢复时缺失归档日志的问题
- 性能调优:优化归档日志备份过程
- 跨平台迁移:规划数据迁移的日志连续性
3. 字段详解 (Oracle 19c)
| 字段名 | 数据类型 | 说明 |
|---|---|---|
RECID | NUMBER | 恢复目录记录ID(使用恢复目录时有效) |
STAMP | NUMBER | 时间戳标识 |
DB_KEY | NUMBER | 数据库唯一键 |
SESSION_KEY | NUMBER | RMAN会话标识符 |
SESSION_RECID | NUMBER | 会话记录ID |
SESSION_STAMP | NUMBER | 会话时间戳 |
BACKUP_TYPE | VARCHAR2(1) | 备份类型:L=归档日志 |
CONTROLFILE_INCLUDED | VARCHAR2(3) | 是否包含控制文件:YES/NO |
SPFILE_INCLUDED | VARCHAR2(3) | 是否包含SPFILE:YES/NO |
DEVICE_TYPE | VARCHAR2(32) | 设备类型:DISK/SBT_TAPE |
ELAPSED_SECONDS | NUMBER | 备份耗时(秒) |
COMPRESSED | VARCHAR2(3) | 是否压缩:YES/NO |
PIECES | NUMBER | 备份片数量 |
THREAD# | NUMBER | 重做线程号 |
SEQUENCE# | NUMBER | 归档日志序列号 |
RESETLOGS_ID | NUMBER | RESETLOGS SCN标识 |
RESETLOGS_TIME | DATE | RESETLOGS时间 |
FIRST_CHANGE# | NUMBER | 起始SCN |
NEXT_CHANGE# | NUMBER | 结束SCN |
BYTES | NUMBER | 备份字节数 |
BLOCKS | NUMBER | 备份块数 |
CREATION_TIME | DATE | 归档日志创建时间 |
COMPLETION_TIME | DATE | 备份完成时间 |
DEST_ID | NUMBER | 归档目标ID |
HANDLE | VARCHAR2(513) | 备份片路径/句柄 |
TAG | VARCHAR2(32) | 备份标签 |
CON_ID | NUMBER | 容器ID(CDB环境) |
4. 相关视图与基表
关联视图
GV$BACKUP_ARCHIVELOG_DETAILS:集群所有实例的归档日志备份V$ARCHIVED_LOG:归档日志基本信息V$BACKUP_SET:备份集元数据V$BACKUP_PIECE:备份片详细信息RC_BACKUP_ARCHIVELOG_DETAILS:恢复目录视图
底层基表
X$KCCAL:归档日志控制结构X$KCCBF:备份文件控制结构SYS.BACKUP_ARCHIVELOG_DETAILS:备份归档日志元数据表SYS.BACKUP_SET:备份集元数据表
5. 核心原理
归档日志备份流程
关键机制
- SCN连续性:
- 通过
FIRST_CHANGE#和NEXT_CHANGE#保证日志连续性 - 恢复时验证:
NEXT_CHANGE#必须等于下一日志的FIRST_CHANGE#
- 通过
- 备份筛选:
BACKUP ARCHIVELOG FROM SEQUENCE 100 UNTIL SEQUENCE 200; - 删除策略:
BACKUP ARCHIVELOG ALL DELETE INPUT; -- 备份后删除源文件 - 加密支持:
CONFIGURE ENCRYPTION ALGORITHM 'AES256';
6. 常用操作SQL
查看最近的归档备份
SELECT
sequence# AS seq,
thread#,
TO_CHAR(creation_time, 'YYYY-MM-DD HH24:MI') AS created,
TO_CHAR(completion_time, 'YYYY-MM-DD HH24:MI') AS backed_up,
ROUND(bytes/1024/1024) AS size_mb,
handle AS backup_location
FROM V$BACKUP_ARCHIVELOG_DETAILS
ORDER BY completion_time DESC
FETCH FIRST 10 ROWS ONLY;
验证恢复连续性
SELECT
thread#,
sequence#,
first_change#,
next_change#,
next_change# - first_change# AS scn_range
FROM V$BACKUP_ARCHIVELOG_DETAILS
WHERE first_change# > &start_scn
AND next_change# <= &end_scn
ORDER BY thread#, sequence#;
识别备份遗漏
SELECT
al.sequence#,
al.thread#,
al.first_change#,
al.next_change#
FROM V$ARCHIVED_LOG al
WHERE al.archived = 'YES'
AND NOT EXISTS (
SELECT 1
FROM V$BACKUP_ARCHIVELOG_DETAILS b
WHERE b.sequence# = al.sequence#
AND b.thread# = al.thread#
);
分析备份存储趋势
SELECT
TRUNC(completion_time) AS backup_date,
device_type,
COUNT(*) AS log_count,
SUM(bytes/1024/1024) AS total_mb,
AVG(bytes/1024/1024) AS avg_mb_per_log
FROM V$BACKUP_ARCHIVELOG_DETAILS
GROUP BY TRUNC(completion_time), device_type
ORDER BY backup_date DESC;
定位特定时间点备份
SELECT
sequence#,
thread#,
first_change#,
next_change#,
completion_time
FROM V$BACKUP_ARCHIVELOG_DETAILS
WHERE TO_DATE('2023-10-01 14:00', 'YYYY-MM-DD HH24:MI')
BETWEEN creation_time AND completion_time;
恢复所需备份信息
SELECT
handle,
tag,
sequence#,
thread#,
first_change#,
next_change#
FROM V$BACKUP_ARCHIVELOG_DETAILS
WHERE sequence# BETWEEN &start_seq AND &end_seq
AND thread# = &thread_id
ORDER BY sequence#;
注意事项
-
数据保留策略:
- 默认在控制文件保留365天
- 使用恢复目录长期保存:
CONFIGURE CONTROLFILE AUTOBACKUP ON; - 调整保留时间:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 30 DAYS;
-
关键恢复参数:
参数 视图字段 恢复命令示例 备份位置 HANDLESET ARCHIVELOG SOURCE TO '<handle>';SCN范围 FIRST_CHANGE#/NEXT_CHANGE#RECOVER DATABASE UNTIL CHANGE <next_change#>;序列范围 SEQUENCE#RECOVER DATABASE UNTIL SEQUENCE <seq> THREAD <thread>; -
最佳实践:
- 定期验证备份完整性:
RESTORE ARCHIVELOG FROM SEQUENCE 100 VALIDATE; - 监控备份延迟:
SELECT MAX(al.sequence#) - MAX(b.sequence#) AS backup_lag FROM V$ARCHIVED_LOG al LEFT JOIN V$BACKUP_ARCHIVELOG_DETAILS b ON al.sequence# = b.sequence# AND al.thread# = b.thread#; - 设置归档备份警报:
BEGIN DBMS_SERVER_ALERT.SET_THRESHOLD( metrics_id => DBMS_SERVER_ALERT.ARCHIVELOG_BACKUP_LAG, warning_operator => DBMS_SERVER_ALERT.OPERATOR_GT, warning_value => '5', -- 5个日志未备份 critical_operator => DBMS_SERVER_ALERT.OPERATOR_GT, critical_value => '20'); END;
- 定期验证备份完整性:
-
故障诊断:
- 缺失日志恢复:
-- 查找断档点 SELECT thread#, sequence# + 1 AS missing_seq FROM ( SELECT thread#, sequence#, LEAD(sequence#) OVER (PARTITION BY thread# ORDER BY sequence#) next_seq FROM V$BACKUP_ARCHIVELOG_DETAILS ) WHERE next_seq != sequence# + 1; - 损坏备份恢复:
CROSSCHECK BACKUP; DELETE EXPIRED BACKUP;
- 缺失日志恢复:
-
RAC环境:
- 使用
GV$BACKUP_ARCHIVELOG_DETAILS全局视图 - 确保所有实例归档到共享位置
- 备份时指定所有线程:
BACKUP ARCHIVELOG THREAD 1, 2 ALL;
- 使用
-
存储优化:
- 启用压缩减少空间占用:
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK COMPRESSED; - 使用备份集代替镜像副本:
CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET;
- 启用压缩减少空间占用:
💡 关键恢复命令:
-- 基于时间点恢复 RECOVER DATABASE UNTIL TIME '2023-10-01 14:00:00'; -- 基于SCN恢复 RECOVER DATABASE UNTIL CHANGE 12345678; -- 自动应用备份日志 RECOVER AUTOMATIC DATABASE;
通过V$BACKUP_ARCHIVELOG_DETAILS,DBA可以精确管理归档日志备份的生命周期,确保恢复连续性和数据完整性,为关键业务系统提供可靠的时间点恢复能力。
欢迎关注我的公众号《IT小Chen》
1583

被折叠的 条评论
为什么被折叠?



