Backup setup sane?

From: Robert Klemme <shortcutter_at_googlemail.com>
Date: Fri, 16 Oct 2009 01:39:42 -0700 (PDT)
Message-ID: <38a745cb-cfe3-4364-b6d9-d005512e22bc_at_b15g2000yqd.googlegroups.com>


Hi,

I set up backups on my test database and would be glad if someone could point me to any errors I did or things that are not reasonable (details below). The purpose of this backup setup is (in that order)

  • learning RMAN,
  • automated operation with limits to disk size (deletion of archived logs and obsolete backups),
  • a certain level of safety against user, software (kill -9 on all oracle processes, accidental deletion of DB files and the like) and power failure.

My strategy was to not use EM / Grid Control and no catalog to have a minimal setup and do as much as possible via configuration settings so backup scripts are short. I wanted to set up a fairly common scheme with an incremental backup level 0 once a week and level 1 backups on each other day.

Thanks for your feedback!

Kind regards

robert

DB is 10.2.0.4.0 on RHEL 5 (well, really CentOS 5).

I set these non default settings
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 10 DAYS; CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/ backup/ctl/%F';
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO COMPRESSED BACKUPSET;
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/backup/sets/%U';

These stayed default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default CONFIGURE ENCRYPTION FOR DATABASE OFF; # default CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/app/oracle/oracle/product/ 10.2.0/db_1/dbs/snapcf_opscgold.f'; # default

[oracle]$ crontab -l
# Oracle backups
# weekly backup

7 3 * * 0 $HOME/bin/backup-base.sh
# daily backup

7 3 * * 1-6 $HOME/bin/backup-incr.sh

And the scripts

[oracle]$ cat $HOME/bin/backup-base.sh
#! /bin/sh
set -f

# prevent concurrent running

lock="/var/run/oracle/`basename "$0"`.pid"

if [ -e "$lock" ]; then
  pid=`cat "$lock"`
  kill -0 "$pid" && { echo "running $0 with pid $pid"; exit 1; }   rm -f "$lock"
fi

trap "rm -f '$lock'" 0
echo $$ >"$lock"

# main code

ts="`date '+%Y-%m-%d_%H-%M-%S'`"

echo "base incremental backup: $ts"

ORACLE_BASE='/app/oracle'
export ORACLE_BASE

ORACLE_HOME="${ORACLE_BASE}/oracle/product/10.2.0/db_1" export ORACLE_HOME

ORACLE_SID='opscgold'
export ORACLE_SID

PATH="${ORACLE_HOME}/bin:${PATH}"
export PATH

rman target / <<EOS
BACKUP INCREMENTAL LEVEL=0
  TAG 'backup-cron-$ts'
  DATABASE
  PLUS ARCHIVELOG DELETE ALL INPUT;
DELETE OBSOLETE;
LIST BACKUP;
EXIT;
EOS The incremental script is the same apart from the RMAN part:

rman target / <<EOS
BACKUP INCREMENTAL LEVEL=1
  TAG 'backup-cron-$ts'
  DATABASE
  PLUS ARCHIVELOG DELETE ALL INPUT;
EXIT;
EOS Received on Fri Oct 16 2009 - 03:39:42 CDT

Original text of this message