跳转到主内容
极星编程网:以代码为星,赴技术山海!

如何查看Oracle备份是否包含归档日志_使用RMAN的List Backup命令

应使用 LIST BACKUP OF ARCHIVELOG ALL; 专门查询归档日志备份,因其明确列出 SEQUENCE#、FIRST_TIME 和备份集号;而 LIST BACKUP 默认不区分类型,无法识别归档日志是否包含在备份集中。 直接看备份集内容,别只信“备份成功”四个字——rman的
list backup
默认不展开归档日志细节,必须加条件或换视图才能确认是否真包含。 如何用
LIST BACKUP
快速识别归档日志备份 RMAN 的
LIST BACKUP
命令本身不区分备份类型,输出全是“Backup Set”条目。归档日志备份和数据文件备份混在一起,靠肉眼很难分辨。 执行
LIST BACKUP;
只能看到备份集编号、时间、大小等概要信息,
TYPE
字段显示为
BACKUPSET
,无法判断里面是数据文件还是归档日志 真正能定位归档日志备份的是
LIST BACKUP OF ARCHIVELOG ALL;
——这个命令专查归档日志的备份记录,会列出每个归档日志的
SEQUENCE#
、
FIRST_TIME
和对应备份集号 如果想查某段时间内的归档日志是否被备份过,用
LIST BACKUP OF ARCHIVELOG FROM TIME 'SYSDATE-7' TO TIME 'SYSDATE';
为什么
LIST BACKUP
查不到归档日志?常见误解 很多人在 RMAN 中执行
LIST BACKUP;
后没看到“ARCHIVELOG”字样,就以为没备份归档日志。其实不是没备,而是没“显式归类”。 RMAN 把归档日志打包进备份集中,但备份集元数据里不标注“含归档”,只在
V$BACKUP_ARCHIVELOG
或
V$RMAN_BACKUP_JOB_DETAILS
里记录归属关系
LIST BACKUP
输出中的
PIECE
行若带
archivelog
在
HANDLE
路径里(比如
/backup/AL_1_12345_1234567890.arc.bkp
),大概率就是归档日志备份,但不能 100% 依赖路径命名 更可靠的方式是结合
LIST BACKUP OF ARCHIVELOG ALL;
和
LIST BACKUP SUMMARY;
对比:后者会按类型统计数量,
ARCHIVELOG
行非零才说明有归档日志被纳入备份 验证归档日志是否可恢复的关键检查点 光知道“有备份”不够,得确认这些归档日志能实际用于恢复——这取决于它们是否 still available 且 not expired。 oracle知识库 oracle知识库下载 下载 先运行
CROSSCHECK ARCHIVELOG ALL;
,再
DELETE EXPIRED ARCHIVELOG ALL;
,清理控制文件里已丢失的归档记录(否则
LIST BACKUP OF ARCHIVELOG
可能列出一堆“找不到文件”的假条目) 检查归档日志本身是否还在磁盘上:
SELECT NAME, STATUS FROM V$ARCHIVED_LOG WHERE BACKED_UP = 'N' AND DELETED = 'NO';
——结果非空说明有归档日志生成了但没被任何备份覆盖 用
LIST EXPIRED BACKUP;
看有没有备份集标记为
EXPIRED
;如果有,说明 RMAN 认为对应物理文件已不存在,即使
LIST BACKUP OF ARCHIVELOG
还显示它,也不能用于恢复 归档日志是否真正纳入备份,不能只扫一眼
LIST BACKUP
就下结论。最易被忽略的是
CROSSCHECK
步骤——很多 DBA 看到
LIST BACKUP OF ARCHIVELOG
有输出就认为万事大吉,结果恢复时才发现控制文件里存的是“幽灵记录”。

相关文章