搜索结果

×

搜索结果将在这里显示。

✨ 3.3 Oracle备份检查

Oracle 数据库备份检查是确保数据可恢复性的核心环节。以下是系统的备份检查方法,涵盖 RMAN、数据泵(expdp)、归档日志及备份验证等方面。

一、RMAN 备份检查

1. 检查最近的备份记录

-- 查询最近的备份集(全库、数据文件、归档日志等)
SELECT session_key, input_type, status, start_time, end_time, 
       ROUND(elapsed_seconds/60,2) AS duration_min, 
       input_bytes/1024/1024/1024 AS input_gb, 
       output_bytes/1024/1024/1024 AS output_gb
 FROM v$rman_backup_job_details
 WHERE start_time > SYSDATE - 7
 ORDER BY start_time DESC;
  • status​:COMPLETED​ 表示成功,FAILED 表示失败。
  • input_type​:DB FULL​(全库)、DATAFILE FULL​(数据文件全备)、ARCHIVELOG(归档日志备份)。

2. 检查备份集中是否包含必要的文件

-- 查看备份集中的数据文件、控制文件、参数文件
SELECT recid, bs_key, bp_key, handle, media, file_type, 
       ROUND(bytes/1024/1024,2) AS mb
FROM v$backup_piece
ORDER BY recid DESC;

3. 检查备份是否完整

-- 查看最后一次全库备份的SCN
SELECT MAX(completion_time) AS last_full_backup, 
       checkpoint_change# AS scn
 FROM v$backup_set
 WHERE input_type = 'DB FULL'
  AND status = 'A'
 GROUP BY checkpoint_change#;

4. 检查控制文件和参数文件的自动备份

-- 查询控制文件自动备份记录
SELECT name, status, completion_time
 FROM v$autobackup
 ORDER BY completion_time DESC;

5. 验证备份集是否可用(不实际恢复)

# 使用 RMAN 验证备份
RMAN> RESTORE DATABASE PREVIEW;
RMAN> VALIDATE BACKUPSET <backupset_key>;

二、数据泵(expdp)备份检查

1. 检查数据泵导出作业日志

-- 查看最近的导出作业
SELECT job_name, operation, job_mode, state, 
       attached_sessions, start_time, end_time
FROM dba_datapump_jobs
ORDER BY start_time DESC;

2. 检查导出文件是否存在及大小

# 在操作系统层面查看文件
ls -lh /backup/expdp/*.dmp

3. 验证导出文件完整性

# 使用 impdp 的 SQLFILE 参数验证(不实际导入)
impdp directory=DATA_PUMP_DIR dumpfile=expfull.dmp sqlfile=check.sql

三、归档日志备份检查

1. 检查归档日志是否已备份

-- 查看未备份的归档日志数量
SELECT COUNT(*) AS unbacked_archivelogs
 FROM v$archived_log
 WHERE backup_count = 0;

2. 检查归档日志备份的连续性

-- 检查最近备份的归档日志范围
SELECT MIN(sequence#) AS min_seq, MAX(sequence#) AS max_seq
 FROM v$backup_piece
 WHERE file_type = 'ARCHIVELOG';

四、备份完整性验证

1. 使用 RMAN 验证所有备份

RMAN> RESTORE DATABASE VALIDATE;
RMAN> RESTORE ARCHIVELOG ALL VALIDATE;

2. 检查备份是否过期

-- 查看备份保留策略
RMAN> SHOW RETENTION POLICY;

3. 检查备份日志中的错误

# 查看 RMAN 日志文件(通常位于 $ORACLE_BASE/diag/rdbms/*/*/trace/)
grep -i "error\|fail\|ORA-" rman.log

五、备份报告与告警

1. 使用 RMAN 生成备份报告

RMAN> LIST BACKUP SUMMARY;
RMAN> REPORT OBSOLETE;
RMAN> REPORT UNRECOVERABLE;

2. 设置备份失败告警

  • 监控 v$rman_backup_job_details​ 中 status​ 为 FAILED 的记录。
  • 检查 alert.log 中备份相关错误。

六、恢复测试(关键)

定期执行恢复演练是验证备份可用性的最佳方式:

  • 在测试环境恢复数据库到最新时间点(或指定时间)。
  • 验证数据一致性(如通过 dbv 或业务逻辑)。
  • 记录恢复耗时,优化备份策略。

七、备份检查脚本示例(SQL*Plus + RMAN)

以下脚本可生成备份状态报告:

-- 1. 最近3天备份成功率
SELECT TRUNC(start_time) day,
       COUNT(*) total,
       SUM(CASE WHEN status='COMPLETED' THEN 1 ELSE 0 END) completed,
       ROUND(100 * SUM(CASE WHEN status='COMPLETED' THEN 1 ELSE 0 END) / COUNT(*),2) success_pct
FROM v$rman_backup_job_details
WHERE start_time > SYSDATE - 3
GROUP BY TRUNC(start_time);

-- 2. 未备份的归档日志数量
SELECT COUNT(*) unbacked_archivelogs FROM v$archived_log WHERE backup_count=0;

-- 3. 最后一次全备时间
SELECT MAX(completion_time) last_full_backup
FROM v$backup_set WHERE input_type='DB FULL' AND status='A';

将以上输出纳入日常巡检报告。

八、总结

检查项 方法 频率
备份记录 v$rman_backup_job_details 每日
归档日志备份完整性 v$archived_log​ 的 backup_count 每日
备份集有效性 RESTORE VALIDATE 每周
恢复演练 测试环境恢复 每月
备份日志错误 扫描日志文件 每日

通过定期执行上述检查,可以确保在灾难发生时能够快速、完整地恢复数据。

阅读:148
发布时间: