[oracle@oracle57 backup]$ pwd
/u01/backup
###编写脚本
[oracle@oracle57 backup]$ vim backup.sh
#!/bin/bash
#su - oracle
#设置环境变量,也可以source你的文件
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=oracle57 #主机名
export ORACLE_UNQNAME=orcl_p
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.2.0.1/db_1
export ORACLE_SID=orcl
export PATH=/usr/sbin:$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
today=`date +%Y%m%d`
find /u01/backup/ -name "*full*" -mtime +7 -exec rm {} \;
find /u01/backup -name "*archivelog*" -mtime +7 -exec rm {} \;
find /u01/backup -name "controlfile*" -mtime +7 -exec rm {} \;
find /u01/backup -name "spfile*" -mtime +7 -exec rm {} \;
rman target / nocatalog log /u01/backup/rmanbk_$today.log append <<EOF
run {
crosscheck archivelog all;
delete noprompt expired archivelog all;
allocate channel c1 device type disk;
allocate channel c2 device type disk;
allocate channel c3 device type disk;
allocate channel c4 device type disk;
backup format '/u01/backup/dbback_full_%T_%d_%s_%p_%u.dbf' database plus archivelog;
sql "ALTER SYSTEM switch logfile";
sql "ALTER SYSTEM switch logfile";
sql "ALTER SYSTEM switch logfile";
sql "ALTER SYSTEM switch logfile";
sql "ALTER SYSTEM switch logfile";
sql "ALTER SYSTEM switch logfile";
delete noprompt archivelog until time 'sysdate-7';
backup current controlfile format '/u01/backup/controlfile_%T_%U_%t.crl';
backup spfile format '/u01/backup/spfile_%T_%U_%t.ora';
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}
exit
EOF
###添加权限
[oracle@oracle57 backup]$ chmod +x /u01/backup/backup.sh
配置计划任务,每天1点1分运行
[oracle@oracle57 backup]$ crontab -e
1 1 * * * /u01/backup/backup.sh