Oracle RMAN备份和清理过期归档的通用脚本

bash 复制代码
#!/usr/bin/ksh

today=`date +%d`

last_day=`cal | xargs | awk '{print $NF}'`

if [ "$today" = "$last_day" ]; then

exit 1

fi

. /home/oracle/.profile

vdat=`date +%Y%m%d`

mkdir -p /rmanbackup/$vdat

mkdir -p /rmanbackup/$vdat

logfile=/rmanbackup/$vdat/fullbackup_$vdat.log

rman target / nocatalog log=$logfile

run

{

ALLOCATE CHANNEL ch1 DEVICE TYPE disk;

ALLOCATE CHANNEL ch2 DEVICE TYPE disk;

ALLOCATE CHANNEL ch3 DEVICE TYPE disk;

ALLOCATE CHANNEL ch4 DEVICE TYPE disk;

backup as compressed backupset database format '/rmanbackup/$vdat/fullbackup_%u.bak' include current controlfile;

sql 'alter system archive log current';

backup archivelog all format '/rmanbackup/$vdat/archbackup_%u.bak';

backup current controlfile format '/rmanbackup/$vdat/ctl_%d_%T.bak';

backup spfile format '/rmanbackup/$vdat/SPFILE_%T_%s_%p.bak';

crosscheck backup;

crosscheck archivelog all;

delete noprompt archivelog until time 'sysdate-14'; 

delete force noprompt archivelog until time 'sysdate-2' ;

delete noprompt expired backup;

delete noprompt obsolete;

release channel ch1;

release channel ch2;

release channel ch3;

release channel ch4;

}

exit;

EOF

1、备份1次的不再备份

bash 复制代码
backup archivelog all format '/rmanbackup/backupytj/$vdat/archbackup_%u.bak' not backed up 1 times;

2、备份没有备份过的归档日志

bash 复制代码
backup archivelog all not backed up;

00 10 * * * find /rmanbackup/backupsets -name "*" ! -name "*.sh" ! -name rmanbackup -ctime +3 -exec rm -rf {} \;

3、定时删除归档备份文件的脚本

bash 复制代码
#!/bin/sh
BACK_DIR=/oracle-data/clear_archlog_task/log
export DATE=`date +%F`
echo "      " >> $BACK_DIR/${DATE}_rman_backup.log
echo `date '+%Y-%m-%d %H:%M:%S'` >> $BACK_DIR/${DATE}_rman_backup.log
su - oracle -c "
mkdir -p $BACK_DIR
rman log=$BACK_DIR/${DATE}_rman_backup.log target / <<EOF
run{
crosscheck archivelog all;
delete noprompt archivelog all completed before 'sysdate-1';
}
exit;
EOF
"
echo "delete success" >> $BACK_DIR/${DATE}_rman_backup.log
相关推荐
星恒随风2 小时前
MySQL 从零入门(五):MySQL 内置函数详解——日期、字符串、数学函数与实战案例
linux·数据库·笔记·sql·mysql
吴名氏.4 小时前
Java转AI Agent教程(第十三周)混合检索与重排
java·数据库·人工智能·ai·ai agent
爱码少年4 小时前
Springboot下如何将CSV文件数据导入H2、Mysql数据库表
数据库·mysql·csv
可乐ea5 小时前
智能体记忆该拆成几层:笔记、记忆表示与注入上下文
服务器·数据库·笔记·ai智能体·提示词工程·上下文工程·记忆系统
阿义有问题6 小时前
MySQL 迁移达梦全流程实战:DTS 七步图解 + 对象名全大写适配(附踩坑清单)
数据库
猫猫不是喵喵.9 小时前
从0到1创建一个微服务项目
java·数据库·微服务·1024程序员节
曲径海盗9 小时前
Try-Except怎么用,3个追问解答在自动化下的应用
java·jvm·oracle
lsc_blog10 小时前
听到优化风声,先准备能由自己掌控的事
数据库·分布式·中间件·职场和发展·重构
墨痕诉清风10 小时前
SSRF漏洞实战记录+OSS桶命令执行+MCP漏洞
linux·服务器·数据库
Ashe81313 小时前
MySQL 慢日志先别急着加索引:三个指标能拦掉大半误判
数据库