ora_full_backup.sh

本文介绍了一个用于 Oracle 数据库的 RMAN 自动备份脚本。该脚本能够检查 Oracle 是否启动,并通过 RMAN 执行数据库及归档日志的完全备份,同时进行日志轮转和清理过期备份。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#!/bin/bash

BACKUP_DIR="/home/yshuai/works/2008-12-10_NPS61_ED2/backup_recovery/02_cluster/backup_scripts/gen2"

. /home/oracle/.bash_profile

 

# test if db on this node

sqlplus -L testuser/testuser | grep ORA-01017 > /dev/null

if [ $? -ne 0 ]; then

  now=`date '+%Y-%m-%d %H:%M:%S'`

  echo "Error: Oracle not start, can not perform full backup! ($now)" |tee -a $BACKUP_DIR/rmanErr.log

  exit

fi

 

# rotate logs

for i in 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

do

next=`expr $i + 1`

test -f $BACKUP_DIR/rman.log.$i && mv $BACKUP_DIR/rman.log.$i $BACKUP_DIR/rman.log.$next

done

 

#rman script

$ORACLE_HOME/bin/rman target / <<EOF > $BACKUP_DIR/rman.log.0

configure retention policy to recovery window of 15 days;

CONFIGURE CONTROLFILE AUTOBACKUP ON;

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '$BACKUP_DIR/%F';

CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO COMPRESSED BACKUPSET;

CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT   '$BACKUP_DIR/%U';

crosscheck archivelog all;

backup database plus archivelog;

delete noprompt archivelog all backed up 2 times to device type disk;

crosscheck backup;

delete noprompt obsolete;

exit;

EOF

<think>好的,用户现在问的是关于RMAN巡检恢复全库备份的脚本。之前他询问过全库批量恢复脚本,现在可能是在同一个项目或任务中,需要进一步的帮助。用户可能是DBA或者系统管理员,负责维护Oracle数据库,特别是备份和恢复方面的工作。 首先,需要明确“巡检恢复”具体指什么。巡检通常指定期检查系统的健康状况,而恢复可能指的是验证备份的有效性,确保在需要时能够成功恢复。用户可能想要一个自动化脚本,定期检查全库备份是否完整,并可能进行恢复测试,确保备份可用。 接下来,回顾之前提供的全库恢复脚本,用户可能现在需要的是在巡检过程中自动检查备份是否有效,可能包括验证备份集、恢复测试到某个位置,或者生成报告。需要确保巡检脚本不会影响生产环境,可能在测试环境中运行。 用户可能的需求包括: 1. 自动化检查备份的完整性和可恢复性。 2. 生成详细的巡检报告,记录备份的状态和任何潜在问题。 3. 定期执行,比如每天或每周,作为维护计划的一部分。 4. 可能需要在多个实例上批量执行巡检,类似于之前的批量恢复脚本。 需要注意用户提到的“巡检恢复”,可能不仅仅是验证备份,还包括模拟恢复过程,但又不实际影响生产数据库。因此,脚本可能需要使用RMAN的VALIDATE命令,或者将备份恢复到测试实例中,确保备份有效。 另外,用户可能关心如何配置环境变量、日志记录、错误处理以及如何集成到现有的监控系统中。巡检脚本需要详细记录每一步的结果,方便后续排查问题。 可能的挑战包括: - 确保巡检过程不会消耗过多资源,尤其是在生产环境中。 - 处理多个实例时的并发执行和资源竞争。 - 正确解析RMAN的输出,判断备份是否有效。 - 生成易读的报告,包括成功和失败的情况。 需要参考之前提供的批量恢复脚本结构,复用其中的实例循环、日志记录、错误检查等部分。同时,结合RMAN的验证和恢复测试命令,构建巡检脚本。 最后,需要给出使用建议和注意事项,比如在测试环境运行、定期维护备份策略、监控日志等,确保用户能够安全有效地使用脚本进行巡检。</think>以下是为您整理的Oracle RMAN全库备份巡检与恢复验证实现方案: --- ### 一、RMAN备份巡检核心脚本 ```bash #!/bin/bash # 巡检参数配置 ORACLE_SID=orcl ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1 LOG_DIR=/var/log/rman_check REPORT_FILE=${LOG_DIR}/backup_inspect_$(date +%Y%m%d).log # 执行备份完整性检查 $ORACLE_HOME/bin/rman target / log=$REPORT_FILE << EOF run { crosscheck backup; crosscheck archivelog all; validate database; list backup summary; report obsolete; } EOF # 检查执行结果 if grep -q "validation failed" $REPORT_FILE; then echo "[ERROR] 备份验证失败!请检查日志: $REPORT_FILE" | mail -s "RMAN巡检告警" dba@example.com fi ``` --- ### 二、自动化恢复验证脚本(非破坏性) ```bash #!/bin/bash # 模拟恢复测试配置 TEST_SID=testdb AUXILIARY_DEST=/u01/app/oracle/auxiliary $ORACLE_HOME/bin/rman target sys/password@prod auxiliary / << EOF run { duplicate database to $TEST_SID backup location '/backup/rman' spfile set controlfiles reuse nofilenamecheck; } EOF # 验证测试库状态 sqlplus -s / as sysdba << END select open_mode from v\$database; shutdown immediate; END ``` --- ### 三、关键巡检指标说明 1. **备份有效性验证** ```sql LIST EXPIRED BACKUP; -- 查看过期备份 LIST BACKUP BY FILE; -- 按文件类型分类统计 ``` 2. **恢复时间评估** ```sql SELECT * FROM V\$RECOVERY_AREA_USAGE; -- 查看恢复区使用情况 SELECT END_TIME, ELAPSED_SECONDS FROM V\$RMAN_BACKUP_JOB_DETAILS; -- 备份耗时统计 ``` 3. **空间占用分析** ```sql REPORT SCHEMA; -- 数据库结构概览 REPORT NEED BACKUP; -- 需备份对象预警 ``` --- ### 四、巡检报告生成模板 ```bash # 生成HTML格式报告 $ORACLE_HOME/bin/rman target / log=${LOG_DIR}/report.html << EOF set markup html on report schema; list backup summary; EOF # 典型报告内容样例: # -------------------------------------- # | 备份类型 | 状态 | 大小(GB) | 耗时 | # |----------|--------|----------|-------| # | Full | VALID | 450 | 03:15 | # | Archivelog| EXPIRED| - | - | # -------------------------------------- ``` --- ### 五、生产环境最佳实践 1. **定时巡检配置** ```bash # 每天凌晨执行检查 0 2 * * * /scripts/rman_inspect.sh # 每周执行恢复验证 0 5 * * 6 /scripts/rman_recovery_test.sh ``` 2. **预警阈值设置** ```sql -- 备份过期预警(超过3天未更新) CROSSCHECK BACKUP COMPLETED AFTER 'SYSDATE-3'; -- 恢复窗口保障 CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; ``` 3. **存储优化建议** ```sql CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE 20G; CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY; ``` --- ### 六、故障排查指南 1. **常见错误处理** ```bash # 检查日志定位问题 grep -E 'ORA-|RMAN-' ${LOG_DIR}/rman_*.log # 备份文件校验命令 dbv FILE=/backup/rman/full_DB_12345.bkp USERID=sys/password ``` 2. **紧急恢复预案** ```sql -- 控制文件丢失恢复 STARTUP NOMOUNT; RESTORE CONTROLFILE FROM AUTOBACKUP; ALTER DATABASE MOUNT; -- 系统表空间恢复 RESTORE TABLESPACE SYSTEM; RECOVER TABLESPACE SYSTEM; ``` --- **实施建议:** 1. 生产环境执行前务必进行`VALIDATE`命令测试 2. 使用`SET COMMAND ID`标记关键操作节点 3. 定期清理`DELETE OBSOLETE`过期备份 4. 配合OEM/Monitoring工具实现可视化监控
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值