03-RMAN备份恢复完整教程

发布时间:2026/7/26 9:12:01
03-RMAN备份恢复完整教程 RMAN备份恢复完整教程——全备增量归档清理恢复验证很多人配了RMAN备份就觉得高枕无忧了。备份不等于能恢复——没有验证过恢复流程的备份约等于没有。这篇文章从社保系统的RMAN策略出发给出一套可落地的备份恢复方案。文章目录RMAN备份恢复完整教程——全备增量归档清理恢复验证一、RMAN 基础概念二、全备脚本三、增量备份四、恢复验证——最重要但最容易被跳过五、常见故障恢复六、检查清单一、RMAN 基础概念RMAN 是 Oracle 自带的备份恢复工具不需要额外安装。概念说明全备Full备份所有数据文件控制文件参数文件增量备份Incremental只备份自上次备份以来变化的数据块归档日志记录所有数据库变更用于恢复到任意时间点恢复目录Catalog可选将备份元数据存到独立数据库方便集中管理社保系统用控制文件记录备份信息就够了——不需要额外的Catalog数据库。二、全备脚本#!/bin/bash# full_backup.sh —— 每周日凌晨执行exportORACLE_SIDorclexportORACLE_HOME/u01/app/oracle/product/19.3.0/dbhome_1exportPATH$ORACLE_HOME/bin:$PATHexportDATE$(date%Y%m%d)rman target /log/backup/rman_full_$DATE.logEOF run { # 备份数据库含归档日志 BACKUP AS COMPRESSED BACKUPSET DATABASE FORMAT /backup/full_%d_%T_%s_%p.bkp PLUS ARCHIVELOG FORMAT /backup/arch_%d_%T_%s_%p.bkp DELETE INPUT; # 备份控制文件和参数文件 BACKUP CURRENT CONTROLFILE FORMAT /backup/ctl_%d_%T_%s_%p.bkp; BACKUP SPFILE FORMAT /backup/spfile_%d_%T_%s_%p.bkp; } # 清除7天前的备份 DELETE NOPROMPT OBSOLETE RECOVERY WINDOW OF 7 DAYS; # 清除3天前的归档日志已备份的 DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE SYSDATE-3; EOF# 检查备份日志含错误则告警ifgrep-ERMAN-|ORA-/backup/rman_full_$DATE.log;thenecho备份异常请检查日志|mail-sRMAN备份告警adminxx.gov.cnfi关键选项AS COMPRESSED BACKUPSET——开启压缩社保库能省30-50%空间PLUS ARCHIVELOG DELETE INPUT——备份归档日志后自动删除源文件OBSOLETE RECOVERY WINDOW OF 7 DAYS——保留7天内可恢复的备份老的自动清三、增量备份#!/bin/bash# incr_backup.sh —— 周一到周六凌晨执行只备份变化的块rman target /log/backup/rman_incr_$DATE.logEOF run { BACKUP INCREMENTAL LEVEL 1 AS COMPRESSED BACKUPSET DATABASE FORMAT /backup/incr1_%d_%T_%s_%p.bkp PLUS ARCHIVELOG FORMAT /backup/arch_%d_%T_%s_%p.bkp DELETE INPUT; } DELETE NOPROMPT OBSOLETE RECOVERY WINDOW OF 7 DAYS; EOFLEVEL 1是差异增量——只备份自上次 LEVEL 0全备以来变化的块。恢复时需要全备所有增量所有归档日志。时间窗口全备 30-60 分钟增量备份 5-15 分钟。四、恢复验证——最重要但最容易被跳过备份文件存在不等于能恢复。必须定期做恢复验证。#!/bin/bash# restore_test.sh —— 每月执行一次恢复到测试服务器验证rman target /EOF run { # 恢复到测试服务器的不同目录 SET NEWNAME FOR DATABASE TO /test/%b; RESTORE DATABASE; RECOVER DATABASE; } # 验证完成后删除测试文件 DELETE NOPROMPT BACKUP OF DATABASE COMPLETED BEFORE SYSDATE-30; EOF社保级别的底线全备每周一次增量每天一次恢复验证每月一次。五、常见故障恢复场景一数据文件损坏-- 查哪个文件坏了SELECT*FROMv$recover_file;-- RMAN恢复单个文件rman target/RESTOREDATAFILE5;RECOVER DATAFILE5;ALTERDATABASEDATAFILE5ONLINE;场景二误删表数据恢复到删除前-- 前提有归档日志rman target/RUN {SETUNTILTIMETO_DATE(2026-06-24 14:30:00,YYYY-MM-DD HH24:MI:SS);RESTOREDATABASE;RECOVERDATABASE;}ALTERDATABASEOPENRESETLOGS;场景三控制文件全部损坏rman target / RESTORE CONTROLFILE FROM AUTOBACKUP;ALTER DATABASE MOUNT;RECOVER DATABASE;ALTER DATABASE OPEN RESETLOGS;六、检查清单-- 最近一次备份时间SELECTMAX(COMPLETION_TIME)FROMV$BACKUP_SET;-- 备份文件列表SELECTHANDLE,BYTES/1024/1024ASMB,COMPLETION_TIMEFROMV$BACKUP_PIECEORDERBYCOMPLETION_TIMEDESC;-- 归档日志空间SELECT*FROMV$FLASH_RECOVERY_AREA_USAGE;-- 是否需要备份自上次备份以来的变更量SELECT*FROMV$BACKUP_SYNC_IO;✅ 亮点社保系统可复现的完整备份方案从脚本到验证一条路走通。扩展方向RMAN与DataGuard配合使用、备份到磁带库/OSS对象存储。