Backup Script for Oracle 10g

Sample script to backup an Oracle 10g database on Linux.

#!/bin/sh
 # orahotbkup.sh
 #
 # Copies Oracle database data files to backup directory on disk
 # and individually gzips them
 #
# set up environment variables
 # need to export the Oracle environment variables
 export ORACLE_SID=orcl
 export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
 export PATH=$ORACLE_HOME/bin:$PATH
FMT_DATE=`/bin/date +%Y%m%d`
 BACKUP_BASE=/u01/app/oracle/oradata/backup/orcl
SCRIPT_LOC=/u01/app/oracle/admin/$ORACLE_SID/scripts/backup
 LOG_LOC=/u01/app/oracle/admin/$ORACLE_SID/scripts/log
 BACKUP_LOC=$BACKUP_BASE/$FMT_DATE
SCRIPT_FILE=$SCRIPT_LOC/dbf$FMT_DATE.sh
 LOG_FILE=$LOG_LOC/$FMT_DATE.log
# make destination directories
 mkdir -p $LOG_LOC
 mkdir -p $SCRIPT_LOC >> $LOG_FILE
 mkdir -p $BACKUP_LOC >> $LOG_FILE
# generate bash script file to copy database data files to destination
 sqlplus / as sysdba <
select '#!/bin/sh ' from dual;
 select 'sqlplus / as sysdba <<EOF'||chr(10)||
 'alter tablespace '||tablespace_name||
 ' begin backup; '||chr(10)||
 'exit'||chr(10)||
 'EOF'||chr(10)||chr(10)||
 'cp '||file_name||' $BACKUP_LOC/'||substr(file_name,instr(file_name,'/',-1)+1)
 ||chr(10)||chr(10)||
 'sqlplus / as sysdba <<EOF'||chr(10)||
 'alter tablespace '||tablespace_name||
 ' end backup; '||chr(10)||
 'exit'||chr(10)||
 'EOF'
 from dba_data_files
 order by file_id
spool $SCRIPT_FILE
/
spool off
 exit
 EOF
# change permission modes on script file to make it executable
 chmod 755 $SCRIPT_FILE
# execute the script file to copy the database data files
 $SCRIPT_FILE
# set name of second script file
 SCRIPT_FILE=$SCRIPT_LOC/arc$FMT_DATE.sh
# generate bash script file to copy archive logs to destination
 sqlplus / as sysdba <
alter system switch logfile;
 alter system switch logfile;
 alter system switch logfile;
alter database backup controlfile to '$BACKUP_LOC/control01.dbf';
select '#!/bin/sh ' from dual;
 select
 'cp '||name||' $BACKUP_LOC/'||substr(name,instr(name,'/',-1)+1)
 ||chr(10)||chr(10)
 from v$archived_log
 where completion_time > sysdate - 1.1
 order by completion_time
spool $SCRIPT_FILE
/
spool off
 exit
 EOF
# change permission modes on script file to make it executable
 chmod 755 $SCRIPT_FILE
# execute the script file to copy the archive log files
 $SCRIPT_FILE
# gzip each database file in the $BACKUP_LOC directory
 gzip $BACKUP_LOC/*
echo All done!

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>


This site uses Akismet to reduce spam. Learn how your comment data is processed.