To backup one database there were at least 6 scripts scheduled in cron with a line count of almost 600 lines! I couldn’t believe it. I try to keep things as simple as possible. For example, here is one of my backup scripts:
1: #!/bin/sh
2: . /home/oracle/.bash_profile
3: . /usr/local/bin/oraenv << END
4: ORCL
5: END
6:
7: cd /home/oracle/scripts
8: logfile=/home/oracle/scripts/log/rman_ORCL_LVL0.log.`date '+%d%m%y'`
9:
10: rman target / nocatalog CMDFILE /home/oracle/scripts/rman_ORCL_LVL0.sql LOG $logfile
11: status=$?
12:
13: if [ $status -gt 0 ] ; then
14: mailx -s "[BACKUP][FAILED] ORCL LVL0" me@myemail.com <<!
15: `cat $logfile`
16: !
17: else
18: mailx -s "[BACKUP][SUCCESS] ORCL LVL0" me@myemail.com <<!
19: `cat $logfile`
20: !
21: fi
22:
23: echo "Backup files removed (4+ days OLD):"
24: echo `find /u03/backup/ORCL -mtime +4 -print`
25: find /u03/backup/ORCL -type f -mtime +4 -exec rm -f {} \;
26:
27: echo "Archive logs removed (2+ days OLD):"
28: echo `find /u03/archive/ORCL -mtime +2 -print`
29: find /u03/archive/ORCL -type f -mtime +2 -exec rm -f {} \;
It doesn’t get much simpler than that. I send emails both on SUCCESS and FAIL of the backup because i've seen cron stop working before. I have filters in my mail client to separate them into different folders. Each day I checked for failed backups and periodically I check successful folder to make sure my backups are working properly. The rman_ORCL_LVL0.sql file basically contains: unneedlessly
backup
incremental level 0
database
tag 'ORCL_LVL0';
I know there are exceptions but in this case these databases are small and have simple backup requirements. Yeah, I could spend a bit of time to put in variables so its more generic but I don’t manage hundreds of databases so thats not a huge concern.
As for the original 600 lines of scripts… Yeah, its very generic, handles a multitude of scenarios and probably even does your laundry but its worthless IMHO if it can’t be quickly understood. The last thing I want to be doing at 3am in the morning is trying to figure out someones scripts because I was the lucky person on call.