- 首页 >
- 问答 >
-
云计算 >
- Oracle在Linux上如何配置备份策略
Oracle在Linux上如何配置备份策略
小樊
43
2025-11-18 22:36:27
Linux上Oracle备份策略配置指南
一 策略设计要点
- 备份类型与频率
- 全量备份:建议每周一次(如周日),作为恢复基线。
- 增量备份:建议每日一次(级别1差异增量),缩短备份窗口并降低存储占用。
- 归档日志:建议每小时备份一次,保证恢复点目标 RPO;备份后自动删除已备份的归档,避免堆积。
- 控制文件与SPFILE:启用控制文件自动备份,随每次备份保留;必要时单独备份SPFILE。
- 保留策略
- 使用RMAN保留策略,二选一:按冗余(如REDUNDANCY 2)或按恢复窗口(如RECOVERY WINDOW OF 14 DAYS)。
- 存储与目录
- 规划备份根目录(如**/u01/backup**),并按类型分子目录(rman、logs、archive等),设置属主为oracle:oinstall、权限755。
- 通道与并行
- 磁盘备份建议配置并行度(如PARALLELISM 4),并指定备份片命名格式,提升吞吐与可维护性。
二 环境准备与RMAN基础配置
- 启用归档模式
- 检查:SELECT log_mode FROM v$database;
- 切换:SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN;
- 归档路径:ALTER SYSTEM SET log_archive_dest_1=‘LOCATION=/u01/archivelog’ SCOPE=BOTH;
- 创建备份目录
- mkdir -p /u01/backup/{rman,scripts,logs,archive}
- chown -R oracle:oinstall /u01/backup && chmod -R 755 /u01/backup
- RMAN永久参数(示例)
- CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
- CONFIGURE BACKUP OPTIMIZATION ON;
- CONFIGURE DEFAULT DEVICE TYPE TO DISK;
- CONFIGURE DEVICE TYPE DISK PARALLELISM 4;
- CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT ‘/u01/backup/rman/%U’;
- CONFIGURE CONTROLFILE AUTOBACKUP ON;
- CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ‘/u01/backup/rman/ctl_%F’;
- 可选优化
- 启用压缩备份:CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET;
- 增长控制文件可保留备份记录的天数:ALTER SYSTEM SET control_file_record_keep_time=32 SCOPE=SPFILE;(需重启实例生效,值应大于RMAN保留期)
三 备份脚本与定时任务
- 示例目录与脚本
- 目录:/u01/backup/scripts;日志:/u01/backup/logs
- level0.sh(每周全备)
- #!/bin/bash
. ~/.bash_profile
export ORACLE_SID=orcl
rman target / <<‘EOF’
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE DISK FORMAT ‘/u01/backup/rman/inc0_%U’;
ALLOCATE CHANNEL c2 DEVICE TYPE DISK FORMAT ‘/u01/backup/rman/inc0_%U’;
BACKUP AS COMPRESSED BACKUPSET INCREMENTAL LEVEL 0 DATABASE PLUS ARCHIVELOG DELETE INPUT;
BACKUP CURRENT CONTROLFILE FORMAT ‘/u01/backup/rman/ctl_%F’;
BACKUP SPFILE FORMAT ‘/u01/backup/rman/spfile_%F’;
RELEASE CHANNEL c1;
RELEASE CHANNEL c2;
}
CROSSCHECK BACKUP;
DELETE NOPROMPT EXPIRED BACKUP;
DELETE NOPROMPT OBSOLETE;
EOF
- level1.sh(每日增量)
- 与level0.sh基本一致,仅将“LEVEL 0”改为“LEVEL 1”。
- arch_hourly.sh(每小时归档)
- #!/bin/bash
. ~/.bash_profile
rman target / <<‘EOF’
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE DISK FORMAT ‘/u01/backup/rman/arch_%U’;
SQL ‘ALTER SYSTEM ARCHIVE LOG CURRENT’;
BACKUP AS COMPRESSED BACKUPSET ARCHIVELOG ALL DELETE INPUT;
RELEASE CHANNEL c1;
}
EOF
- 定时任务(以oracle用户)
- 每周日2点全备,周一至周六2点增量,每小时归档:
- 0 2 * * 0 /u01/backup/scripts/level0.sh >>/u01/backup/logs/level0_$(date +%F).log 2>&1
- 0 2 * * 1-6 /u01/backup/scripts/level1.sh >>/u01/backup/logs/level1_$(date +%F).log 2>&1
- 0 * * * * /u01/backup/scripts/arch_hourly.sh >>/u01/backup/logs/arch_$(date +%F_%H).log 2>&1
- 说明
- 脚本首行加载环境变量(. ~/.bash_profile),避免crontab执行时找不到ORACLE_HOME/ORACLE_SID。
- 归档脚本中执行“ALTER SYSTEM ARCHIVE LOG CURRENT”确保归档序列连续性。
四 监控验证与恢复演练
- 备份有效性检查
- RMAN> LIST BACKUP SUMMARY;
- RMAN> REPORT OBSOLETE;
- RMAN> CROSSCHECK BACKUP; DELETE NOPROMPT EXPIRED BACKUP;
- 定期校验:RMAN> BACKUP VALIDATE DATABASE;(校验数据文件可读)
- 恢复演练(示例)
- 完全恢复(数据文件丢失场景):RMAN> STARTUP FORCE NOMOUNT; RESTORE DATABASE; RECOVER DATABASE; ALTER DATABASE OPEN;
- 不完全恢复(基于时间点/SCN):RMAN> RUN { SET UNTIL TIME ‘2025-11-18 10:00:00’; RESTORE DATABASE; RECOVER DATABASE; } ALTER DATABASE OPEN RESETLOGS;
- 运维要点
- 监控备份日志与磁盘使用率;归档目录与备份目录分离,避免互相挤占。
- 定期做恢复演练与备份保留审计,确保策略与业务RPO/RTO一致。
五 逻辑备份与补充方案
- Data Pump逻辑备份(Schema/全库)
- 全库导出:expdp system/password@SID DIRECTORY=DATA_PUMP_DIR DUMPFILE=full_$(date +%F).dmp LOGFILE=full_$(date +%F).log FULL=Y
- 导入:impdp system/password@SID DIRECTORY=DATA_PUMP_DIR DUMPFILE=full_2025-11-18.dmp LOGFILE=impdp.log FULL=Y
- 适用:迁移、开发/测试环境快速恢复、特定对象抽取;不建议替代RMAN作为唯一生产物理备份。
- 冷备份(停机维护窗口)
- 适用:停机可接受的场景;步骤:SHUTDOWN IMMEDIATE → 复制数据文件/控制文件/归档/参数文件 → STARTUP。
- 注意事项
- 逻辑备份与物理备份可并行采用,互为补充;自动化建议统一由脚本与cron管理,并做好日志留存与告警。