这是一个生产库的rman备份shell脚本,分为 0级备份 与1级差异累积备份,每周一次0级别备份,其他1级差异累积备份。
1、0级别备份shell 脚本:
- #!/bin/sh
- #### 2011.6.27 ####
- #level=0#
- export TMP=/tmp
- export TMPDIR=/tmp
- export Oracle_BASE=/opt/oracleonder
- export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
- export ORACLE_SID=onder
- export PATH=$PATH:$ORACLE_HOME/bin:
- export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
- export BAKFILE=/opt/bak/bak0.log
- find /opt/bak/archbak -mtime +365 -name "arch*.tar.bz2" -exec rm -rf {} \; ###因为每周只执行0级备份,归档日志不能自动删除(只有执行##全备,归档备份才会被设置为无效),所以这里写了一条命令来删除保存策略外的归档日志备份。
- rman nocatalog target / msglog $BAKFILE << EOF
- run{
- CONFIGURE CONTROLFILE AUTOBACKUP ON;
- CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/opt/bak/conf_%F_%T.tar.bz2';
- CONFIGURE RETENTION POLICY TO REDUNDANCY 20;
- configure device type disk parallelism 1 backup type to compressed backupset;
- report obsolete;
- delete noprompt obsolete;
- crosscheck backup;
- delete noprompt expired backup;
- backup incremental level=0 database format '/opt/bak/bak_%T_%U_%t_%d.tar.bz2' plus archivelog format '/opt/bak/archbak/arch_%U_%s.tar.bz2';
- DELETE noprompt ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-30';
- crosscheck archivelog all; ##检查出系统中不存在的归档日志记录,虽然上边的命令是删除超过30天的归档日志,但是相关记录记#录依然存在。
- delete noprompt expired archivelog all; ###noprompt 参数是不需要确认直接删除,用脚本必备。
- }
- EOF