最近用户在做备份审核,发现了很多问题。恰好通过这次审核,优化了备份脚本。分享给需要的朋友
环境说明:备份发起在备库执行,这样降低主库资源消耗(确实因为这个出过问题,头疼啊)
Oracle 19c
单节点执行即可,注意需要配置账号和密码
全备Leve0
#!/bin/bash
ORACLE_HOME=/u01/app/oracle/product/19/dbhome_1
export ORACLE_HOME
ORACLE_SID=test
export ORACLE_SID
MAILTO=ttttt@qq.com
EXECDATE=`date +"%y%m%d%H%M%S"`
BACKUPNAME=`date +"20%y%m%d"`
#echo `date +"20%y%m%d"`
mkdir /backup/$BACKUPNAME
#SUBJECT="$ORACLE_SID @ `hostname` DB Backup $EXECDATE"
RMAN_LOG_FILE=/backup/log/$ORACLE_SID$EXECDATE.out
RMAN=$ORACLE_HOME/bin/rman
TARGET_CONNECT_STR=sys/Password@oraclesid
DESTINATION=/backup/$BACKUPNAME
echo ==== started on `date` ==== >> $RMAN_LOG_FILE
echo >> $RMAN_LOG_FILE
#find /backup -name
#rm $DESTINATION/*
$RMAN target $TARGET_CONNECT_STR nocatalog log $RMAN_LOG_FILE <<EOF
RUN {
ALLOCATE CHANNEL ch00 TYPE disk MAXPIECESIZE=8000M;
ALLOCATE CHANNEL ch01 TYPE disk MAXPIECESIZE=8000M;
ALLOCATE CHANNEL ch02 TYPE disk MAXPIECESIZE=8000M;
ALLOCATE CHANNEL ch03 TYPE disk MAXPIECESIZE=8000M;
ALLOCATE CHANNEL ch04 TYPE disk MAXPIECESIZE=8000M;
ALLOCATE CHANNEL ch05 TYPE disk MAXPIECESIZE=8000M;
ALLOCATE CHANNEL ch06 TYPE disk MAXPIECESIZE=8000M;
ALLOCATE CHANNEL ch07 TYPE disk MAXPIECESIZE=8000M;
crosscheck copy;
delete noprompt expired copy;
crosscheck backup;
delete noprompt expired backup;
DELETE FORCE NOPROMPT BACKUP DEVICE TYPE DISK COMPLETED BEFORE 'SYSDATE-1';
delete noprompt obsolete;
BACKUP as compressed backupset incremental level 0
FORMAT '$DESTINATION/lev0_%U.bkp' database;
backup as compressed backupset archivelog all format '$DESTINATION/arch_%U.bkp';
crosscheck archivelog all;
delete noprompt archivelog until time 'sysdate-1';
backup current controlfile format '$DESTINATION/%d_CTRL_%U.bak';
backup spfile format '$DESTINATION/%d_SPFILE_%U.bak';
RELEASE CHANNEL ch00;
RELEASE CHANNEL ch01;
RELEASE CHANNEL ch02;
RELEASE CHANNEL ch03;
RELEASE CHANNEL ch04;
RELEASE CHANNEL ch05;
RELEASE CHANNEL ch06;
RELEASE CHANNEL ch07;
}
exit;
EOF
echo >> $RMAN_LOG_FILE
df -h >> $RMAN_LOG_FILE
echo >> $RMAN_LOG_FILE
echo >> $RMAN_LOG_FILE
cp $RMAN_LOG_FILE $DESTINATION
mail -s "[ip] ERPDB Status:Success" $MAILTO<<EOF
....`date`...
[ip] ERPDB Status:Success
`tail -100 $RMAN_LOG_FILE`
EOF
复制
增量备份
#!/bin/bash
ORACLE_HOME=/u01/app/oracle/product/19/dbhome_1
export ORACLE_HOME
ORACLE_SID=test
export ORACLE_SID
MAILTO=ttttttttt@qq.com
EXECDATE=`date +"%y%m%d%H%M%S"`
BACKUPNAME=`date +"20%y%m%d"`
#echo `date +"20%y%m%d"`
mkdir /backup/$BACKUPNAME
#SUBJECT="$ORACLE_SID @ `hostname` DB Backup $EXECDATE"
RMAN_LOG_FILE=/backup/log/$ORACLE_SID$EXECDATE.out
RMAN=$ORACLE_HOME/bin/rman
TARGET_CONNECT_STR=sys/Password@testORACLE_SID
DESTINATION=/backup/$BACKUPNAME
echo ==== started on `date` ==== >> $RMAN_LOG_FILE
echo >> $RMAN_LOG_FILE
#find /backup -name
#rm $DESTINATION/*
$RMAN target $TARGET_CONNECT_STR nocatalog log $RMAN_LOG_FILE <<EOF
RUN {
ALLOCATE CHANNEL ch00 TYPE disk MAXPIECESIZE=6000M;
ALLOCATE CHANNEL ch01 TYPE disk MAXPIECESIZE=6000M;
ALLOCATE CHANNEL ch02 TYPE disk MAXPIECESIZE=6000M;
ALLOCATE CHANNEL ch03 TYPE disk MAXPIECESIZE=6000M;
ALLOCATE CHANNEL ch04 TYPE disk MAXPIECESIZE=6000M;
crosscheck copy;
delete noprompt expired copy;
crosscheck backup;
delete noprompt expired backup;
DELETE FORCE NOPROMPT BACKUP DEVICE TYPE DISK COMPLETED BEFORE 'SYSDATE-2';
delete noprompt obsolete;
sql 'alter system archive log current';
BACKUP as compressed backupset incremental level 1
FORMAT '$DESTINATION/lev1_%U.bkp' database;
sql 'alter system archive log current';
backup as compressed backupset archivelog all format '$DESTINATION/arch_%U.bkp';
crosscheck archivelog all;
delete noprompt archivelog until time 'sysdate-1';
BACKUP CURRENT CONTROLFILE FORMAT '$DESTINATION/control_%U_%t.bkp';
RELEASE CHANNEL ch00;
RELEASE CHANNEL ch01;
RELEASE CHANNEL ch02;
RELEASE CHANNEL ch03;
RELEASE CHANNEL ch04;
}
exit;
EOF
echo >> $RMAN_LOG_FILE
df -h >> $RMAN_LOG_FILE
echo >> $RMAN_LOG_FILE
echo >> $RMAN_LOG_FILE
echo ==== ended on `date` ==== >> $RMAN_LOG_FILE
cp $RMAN_LOG_FILE $DESTINATION
mail -s "[ip ] ERPDB Status:Success" $MAILTO<<EOF
....`date`...
[ip ] ERPDB Status:Success
`tail -100 $RMAN_LOG_FILE`
EOF
复制
最后修改时间:2022-11-17 15:34:25
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论

2年前

评论
相关阅读
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
548次阅读
2025-04-15 17:24:06
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
469次阅读
2025-04-18 14:18:38
Oracle SQL 执行计划分析与优化指南
Digital Observer
446次阅读
2025-04-01 11:08:44
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
445次阅读
2025-04-08 09:12:48
墨天轮个人数说知识点合集
JiekeXu
444次阅读
2025-04-01 15:56:03
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
438次阅读
2025-04-22 00:20:37
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
414次阅读
2025-04-22 00:13:51
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
413次阅读
2025-04-20 10:07:02
Oracle 19c RAC更换IP实战,运维必看!
szrsu
393次阅读
2025-04-08 23:57:08
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
358次阅读
2025-04-17 17:02:24