Linux上Oracle如何配置备份策略
导读:Linux上Oracle备份策略配置指南 一、策略选型与容量规划 备份方式建议以RMAN物理备份为主,按恢复窗口或冗余度设置保留策略;在ARCHIVELOG模式下进行热备,确保业务不停机。可结合Data Pump(expdp)做按Sche...
Linux上Oracle备份策略配置指南
一、策略选型与容量规划
- 备份方式建议以RMAN物理备份为主,按恢复窗口或冗余度设置保留策略;在ARCHIVELOG模式下进行热备,确保业务不停机。可结合Data Pump(expdp)做按Schema/表的逻辑备份,用于迁移与快速时点恢复。
- 使用FRA(闪回恢复区)统一管理备份与归档:当空间不足时,Oracle会自动删除已迁移至磁带或已过期的文件;若备份频繁上云/上带,可适当增大FRA配额以减少从磁带恢复的概率。
- 容量估算公式(FRA磁盘配额):
- 场景A(每日增量、滚动更新L0副本):Disk Quota = 1份数据库全备 + 1天L1增量 + (Y+1)天归档日志,其中Y为执行BACKUP RECOVERY AREA的间隔天数。
- 场景B(每周全备、每日归档上带):Disk Quota = 1份数据库全备 + (Y+1)天归档日志。
以上有助于在满足RPO/RTO的同时控制磁盘占用。
二、RMAN基础配置与常用参数
- 以归档模式运行数据库(可在OPEN状态热备):
- SQL> archive log list; (确认为Archive Mode)
- 如未开启:SQL> shutdown immediate; → SQL> startup mount; → SQL> alter database archivelog; → SQL> alter database open;
- 常用RMAN配置(示例保留7天):
- CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
- CONFIGURE BACKUP OPTIMIZATION ON;
- CONFIGURE DEFAULT DEVICE TYPE TO DISK;
- CONFIGURE CONTROLFILE AUTOBACKUP ON;
- CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ‘/backup/rman/control_%F’;
- CONFIGURE DEVICE TYPE DISK PARALLELISM 2;
- 如需上带:CONFIGURE DEVICE TYPE sbt PARMS=‘…’ PARALLELISM 1; (厂商参数)
- 注意:当使用控制文件记录RMAN元数据且未使用恢复目录时,务必开启控制文件自动备份,避免元数据丢失后难以恢复。
三、三种可落地备份策略与脚本
- 策略A(推荐,增量更新全备,磁盘为主,定期上带)
- 适用:变化块较少、需快速恢复。
- 思路:在FRA中维护一份L0镜像,每日生成L1增量滚动前移;定期将FRA内容BACKUP RECOVERY AREA至磁带,并清理过期备份。
- 关键RMAN脚本:
- 每日执行:
- RECOVER COPY OF DATABASE WITH TAG “daily_backup”;
- BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG “daily_backup” DATABASE;
- BACKUP RECOVERY AREA;
- DELETE OBSOLETE DEVICE TYPE sbt;
- 每日执行:
- 策略B(每周全备,每日归档上带)
- 适用:每周变化较大、需完整基线。
- 思路:每周做一次数据库全备到FRA,随后每日将FRA内容(含归档)上带并清理磁带过期备份。
- 关键RMAN脚本:
- 每周日:BACKUP AS COPY DATABASE; BACKUP RECOVERY AREA; DELETE OBSOLETE DEVICE TYPE sbt;
- 周一到周六:BACKUP RECOVERY AREA; DELETE OBSOLETE DEVICE TYPE sbt;
- 策略C(仅磁盘,按保留窗口自动过期)
- 适用:无磁带/对象存储,纯磁盘保留7–14天。
- 思路:每日全库+归档,并行通道,完成后交叉校验并删除过期/废弃备份。
- 示例RMAN脚本:
- RUN {
- CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
- CONFIGURE CONTROLFILE AUTOBACKUP ON;
- ALLOCATE CHANNEL c1 DEVICE TYPE DISK FORMAT ‘/backup/rman/full_%T_%U’ MAXPIECESIZE 3G;
- ALLOCATE CHANNEL c2 DEVICE TYPE DISK FORMAT ‘/backup/rman/full_%T_%U’ MAXPIECESIZE 3G;
- BACKUP DATABASE PLUS ARCHIVELOG DELETE ALL INPUT;
- BACKUP CURRENT CONTROLFILE FORMAT ‘/backup/rman/ctl_%T_%U’;
- BACKUP SPFILE FORMAT ‘/backup/rman/spfile_%T_%U’;
- RELEASE CHANNEL c1; RELEASE CHANNEL c2;
- }
- CROSSCHECK BACKUPSET; DELETE NOPROMPT EXPIRED BACKUP; DELETE NOPROMPT OBSOLETE;
- CROSSCHECK ARCHIVELOG ALL;
DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
以上策略与脚本要点来自Oracle官方场景与常用实践,可按实际RPO/RTO与存储结构调整参数与频率。
- RUN {
四、Linux侧自动化与异地容灾
- 目录与权限:
- mkdir -p /backup/rman; chown oracle:oinstall /backup/rman; chmod 755 /backup/rman
- 备份脚本示例(仅磁盘,按日全备):
- 文件:/home/oracle/bin/rman_backup.sh
- #!/bin/bash
- source /home/oracle/.bash_profile
- export BACKUP_DIR=/backup/rman
- /u01/app/oracle/product/19.3.0/dbhome_1/bin/rman target / nocatalog <
<
‘EOF’
- RUN {
- CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
- CONFIGURE CONTROLFILE AUTOBACKUP ON;
- ALLOCATE CHANNEL c1 DEVICE TYPE DISK FORMAT ‘${ BACKUP_DIR} /full_%T_%U’ MAXPIECESIZE 3G;
- ALLOCATE CHANNEL c2 DEVICE TYPE DISK FORMAT ‘${ BACKUP_DIR} /full_%T_%U’ MAXPIECESIZE 3G;
- BACKUP DATABASE PLUS ARCHIVELOG DELETE ALL INPUT;
- BACKUP CURRENT CONTROLFILE FORMAT ‘${ BACKUP_DIR} /ctl_%T_%U’;
- BACKUP SPFILE FORMAT ‘${ BACKUP_DIR} /spfile_%T_%U’;
- RELEASE CHANNEL c1; RELEASE CHANNEL c2;
- }
- CROSSCHECK BACKUPSET; DELETE NOPROMPT EXPIRED BACKUP; DELETE NOPROMPT OBSOLETE;
- CROSSCHECK ARCHIVELOG ALL; DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
- RUN {
- EOF
- #!/bin/bash
- 文件:/home/oracle/bin/rman_backup.sh
- 定时任务(oracle用户):
- crontab -e
- 0 2 * * * /home/oracle/bin/rman_backup.sh > > /backup/rman/run_$(date +%Y%m%d).log 2> & 1
- crontab -e
- 异地容灾(可选):
- 将当日备份打包压缩并FTP/rsync至远程服务器;远程侧按30天保留策略删除旧包。
- 示例打包与传输(简化):
- tar czf /backup/rman/full_$(date +%F).tar.gz -C /backup/rman full_.bkp ctl_.ctl spfile_*.bkp
- ftp/rsync 推送至远端;远端 find … -mtime +30 -delete。
五、验证与监控要点
- 任务执行:
- 查看cron日志:tail -f /var/log/cron;
- 检查RMAN进程:ps -ef | grep rman | grep -v grep;
- 核对备份文件:ls -lh /backup/rman;
- RMAN内验证:
- LIST BACKUP SUMMARY; LIST ARCHIVELOG ALL;
- REPORT OBSOLETE; REPORT UNRECOVERABLE;
- CROSSCHECK BACKUP; CROSSCHECK ARCHIVELOG ALL;
- 容量与保留:
- 监控FRA使用:SELECT name, space_limit/1024/1024/1024 “LimitGB”, space_used/1024/1024/1024 “UsedGB” FROM v$recovery_file_dest;
- 结合保留策略定期清理,确保恢复窗口内备份完整可用。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux上Oracle如何配置备份策略
本文地址: https://pptw.com/jishu/775595.html
