Linux下oracle 按照时间创建目录RMAN备份脚本

分享一个备份脚本.备份目录结构如下:

[oracle@bre1 ~]$ tree backup
backup
|-- file
|   `-- 20200804
|       |-- arch_0jv70o06_1_1_20200804.bak
|       |-- dbfull_0dv70o00_1_1_20200804.bak
|       |-- dbfull_0ev70o00_1_1_20200804.bak
|       |-- dbfull_0fv70o00_1_1_20200804.bak
|       |-- dbfull_0gv70o01_1_1_20200804.bak
|       |-- dbfull_0hv70o02_1_1_20200804.bak
|       `-- dbfull_0iv70o03_1_1_20200804.bak
|-- log
`-- scripts
    `-- backup.sh

其中file目录下会按照时间自动创建目录,每次当天的备份存放到此目录下.log下存放的备份产生的日志文件.scripts下存放的备份脚本.

全量备份脚本:

. /home/oracle/.bash_profile

#export BACKUP_HOME=/home/oracle/backup

export BACKUP_HOME=$(cd `dirname $0`/../; pwd)
export OPERTIME=`date +'%Y%m%d'`

BACKUP_DIR=$BACKUP_HOME/file/$OPERTIME

mkdir -p $BACKUP_HOME/file $BACKUP_HOME/log $BACKUP_HOME/scripts $BACKUP_DIR

rman target / log=$BACKUP_DIR/log/dbfull_`date "+%Y%m%d%H%M%S"`.log <<EOF
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 full database filesperset 1 format '$BACKUP_DIR/dbfull_%U_%T.bak';
backup current controlfile format '$BACKUP_DIR/control_%U_%T.bak';
backup as compressed backupset archivelog from time "sysdate-3" not backed up  format '$BACKUP_DIR/arch_%U_%T.bak';
crosscheck archivelog all;
delete noprompt expired archivelog all;
report obsolete;
delete noprompt obsolete;
crosscheck backup;
delete noprompt expired backup;
release channel ch1;
release channel ch2;
release channel ch3;
release channel ch4;
}
EOF

备份归档日志脚本如下:

. /home/oracle/.bash_profile

#export BACKUP_HOME=/home/oracle/backup

export BACKUP_HOME=$(cd `dirname $0`/../; pwd)
export OPERTIME=`date +'%Y%m%d'`

BACKUP_DIR=$BACKUP_HOME/file/$OPERTIME

mkdir -p $BACKUP_HOME/file $BACKUP_HOME/log $BACKUP_HOME/scripts $BACKUP_DIR

rman target / log=$BACKUP_DIR/log/arch_`date "+%Y%m%d%H%M%S"`.log <<EOF
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 archivelog from time "sysdate-3" not backed up  format '$BACKUP_DIR/arch_%U_%T.bak';
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt archivelog until time 'sysdate-3';
release channel ch1;
release channel ch2;
release channel ch3;
release channel ch4;
}
EOF

crontab建议每隔两小时备份一次归档日志.每天凌晨全量备份.如果需要增量备份,则自行修改脚本.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值