How to write a backup script?

Question:

Hello.
After migration, my application will be running 24 hours a day against
Oracle 8i for linux.
I need to program an on-line backup every day, and as I don't have
enterprise manager because I have no NT, I supose that I should
prepare a shell script to be run once a day.

This is the shell script that we are executing now with our Oracle 7.2
in a SCO Openserver. I think that it may be improved (for example,
I've heard of incremental backup) so any suggestion would be welcomed.

#!/bin/sh
# Shell excript para realizar el backup de la B.D.
ORACLE_HOME=/mnt1/users/ora7 export ORACLE_HOME
ORACLE_SID=A export ORACLE_SID
DESTINO=/mnt2 export DESTINO

# Conectamos con el sqldba
$ORACLE_HOME/bin/sqldba lmode=y << EOF
connect internal

-- tablespace SYSTEM
alter tablespace SYSTEM begin backup;
!cp $ORACLE_HOME/dbs/systA.dbf $DESTINO/dbsbck/dbs
alter tablespace SYSTEM end backup;

-- tablespace MYTABLESPACE
alter tablespace MYTABLESPACE begin backup;
!cp $ORACLE_HOME/dbs/mydatafile1.dbf $DESTINO/dbsbck/dbs
!cp $ORACLE_HOME/dbs/mydatafile2.dbf $DESTINO/dbsbck/dbs
alter tablespace MYTABLESPACE end backup;
------ WE DO THIS WITH ALL OUR TABLESPACES ------
 

-- Backup del fichero de control
!rm $DESTINO/dbsbck/dbs/control.ctl
alter database backup controlfile to
'$DESTINO/dbsbck/dbs/control.ctl';

-- Salimos del sqldba
exit
EOF

# Backup de los ficheros de control
cp $ORACLE_HOME/dbs/ctrl1A.ctl $DESTINO/dbsbck/dbs
cp $ORACLE_HOME/dbs/ctrl2A.ctl $DESTINO/dbsbck/dbs
cp $ORACLE_HOME/dbs/ctrl3A.ctl $DESTINO/dbsbck/dbs

# Backup de los ficheros de log
cp $ORACLE_HOME/dbs/log1A.dbf $DESTINO/dbsbck/dbs
cp $ORACLE_HOME/dbs/log2A.dbf $DESTINO/dbsbck/dbs
cp $ORACLE_HOME/dbs/log3A.dbf $DESTINO/dbsbck/dbs

# Backup de los ficheros de configuracion
cp $ORACLE_HOME/dbs/configA.ora $DESTINO/dbsbck/dbs
cp $ORACLE_HOME/dbs/initA.ora $DESTINO/dbsbck/dbs

# Backup de los archive log
LOG_ARCHIVE=$ORACLE_HOME/dbs/arch export LOG_ARCHIVE
TMP_ARCHIVE_DEST=$DESTINO/dbsbck/dbs/arch export TMP_ARCHIVE_DEST

rm -f $TMP_ARCHIVE_DEST/*.log

$ORACLE_HOME/bin/sqldba lmode=y << EOF
connect internal
alter system switch logfile
exit
EOF

# Copiar los ficheros del directorio de log

for FILE in $LOG_ARCHIVE/*.log
do
   [ -f $FILE ] || continue
   NAME=`basename $FILE`
   cp $FILE $TMP_ARCHIVE_DEST/$NAME
   if [ $? != 0 ]; then
      echo "Error: fallo al copiar el fichero archive log $FILE"
      continue
   fi

   if cmp -s $FILE $TMP_ARCHIVE_DEST/$NAME
   then
      rm $FILE
   else
      echo "Salta borrar el archive log $FILE"
   fi
done

ls -l $TMP_ARCHIVE_DEST
--
Julio César Glez Suarez
Xixón, Asturies, Spain

Answer:

Incremental backup is a feature of RMAN.
Apart from the size of the control files with conventional backup nothing
should have really changed.

Hth,

Sybrand Bakker, Oracle DBA
 

Hosted by www.Geocities.ws

1