Script for Archive backup in Unix
Posted by Pavan DBA on March 8, 2012
###############
ARCH BACKUP IN UNIX
###############
#!/bin/ksh
# —————————————————————————–
# — Description: Oracle Archived Log Archival Job —
# — —
# — Instructions: —
# — 1) Create the following directories if not already setup: —
# — These directories receive the various output files from —
# — this job.
# — $ORACLE_BASE/backups —
# — $ORACLE_BASE/backups/jobs —
# — $ORACLE_BASE/backups/joblogs —
# — $ORACLE_BASE/backups/adsmlogs —
# — —
# — 2) Create a directory under the directory where the archived —
# — redo logs are kept. Call this sub-directory “save”. —
# — —
# — 3) Change variables below as needed —
# — —
# — —
# —————————————————————————
# ———— variables common to instance ——————————
ORACLE_HOME=/d001/oracle/9.2.0
ORACLE_SID=SDSS # oracle instance
ARCHIVE_DIR=/d002/oracle/$ORACLE_SID/backups # job logs, scripts etc….
COMMON_DIR=/d002/oracle/common/backups # common scripts
UID=”system/systemSDSS” # userid/password for
# sqlplus queries
RETPRD=3 # how many days do you
# want to keep joblogs etc..
ADSM_PROCESS_LIMIT=9 # max adsm processes
#ADSM_SERVER=”-se=mvsosap” # adsm server – leave commented
# for default server
#MGMTCLASS=”-ARCHMc=UNIX_MGT” # adsm management class
# leave commented for default
#FROMNODE=”-fromnode=`hostname`” #adsm fromnode parameter –
# leave commented for default
#FROMOWNER=”-fromowner=`/usr/ucb/whoami`” #adsm fromowner parameter –
# leave commented for default
SQLDBA=”sqlplus” # use svrmgr for v7.3
# ———– sendtrap variables ——————————
SNDTRP_FLG=N # do you want to use
# sendtrap (Y,N)
# if you are using sendtrap
# change the following
# VARx’s to instruct
# operations what to do
VAR1=”….Archive Backup”
VAR2=$ORACLE_SID
VAR3=”Database is down – Qname= – contact oncall DBAORA”
VAR4=”Compress error – Qname= – contact oncall DBAORA”
VAR5=”Copy error – Qname= – contact oncall DBAORA”
VAR6=”ADSM error – Qname= – contact oncall DBAORA”
VAR7=”DB in hot bkup mode – Qname= – contact oncall DBAORA”
export COMMON_DIR ORACLE_HOME ORACLE_SID UID VAR1 VAR2 VAR3 VAR4 VAR5 VAR6 VAR7
export INITDF CONFIGDF ARCHIVE_DIR MGMTCLASS ADSM_SERVER RETPRD
export FROMOWNER FROMNODE ADSM_PROCESS_LIMIT SHUTDOWN_TIME_LIMIT
# ————————————————————————–
# ———– variables common to server ——————————
ARCHIVELOGDIR=/d801/oracle/$ORACLE_SID/archive # archived log dest
ARCHIVELOGSAVEDIR=$ARCHIVELOGDIR/save # dest to save archived
# logs that have been sent
# to TSM
ARCHIVELOGFMT=”arch_*_$ORACLE_SID.log” # archived log format
DSMPATH=/usr/bin # dsmc command path
# try:
# /usr/sbin for Solaris
# /usr/bin for AIX
STPATH=/usr/local/bin # sendtrap command path
TMP=/tmp # temp path
export ARCHIVELOGDIR ARCHIVELOGFMT
export DSMPATH STPATH TMP
# —————————————————————————–
# ————— variables common to archival processes ———————–
ARCH_JOB_LOGS=$ARCHIVE_DIR/joblogs # job log dest
ARCH_ADSM_LOGS=$ARCHIVE_DIR/adsmlogs # adsm log dest
ARCH_COMMON_SCRIPTS=$COMMON_DIR/common_scripts # common script dest
ARCH_RETR_SCRIPTS=$ARCHIVE_DIR/recv # adsm retr script dest
FILELST=$ARCH_JOB_LOGS # file list dest
WAIT_SLEEP=15 # number of seconds to sleep
# waiting for log switch
# to finish
MAX_WAIT_COUNT=20 # maximum number of times
# to wait WAIT_SLEEP seconds
# before terminating the
# archive backup
# with a return code of 8.
# Recommend
# WAIT_SLEEP X MAX_WAIT_COUNT
# less than 1 minute.
ARCH_LOGS_TO_KEEP=15 # number of archived redo
# logs to keep in the
# ARCHIVELOGSAVEDIR directory
# after archiving to ADSM
KEEP_UNITS=count # the meaning of
# ARCH_LOGS_TO_KEEP.
# Possible values are:
# days = number of days
# to keep them.
# count = number of
# files to keep.
VERSION=prod # versions of the script:
# prod = production
# devl = development
# qlty = quality
EXIT_0=”$ARCHIVE_DIR/scripts/exit_0.sh” # exit 0 routine – successful
EXIT_4=”$ARCHIVE_DIR/scripts/exit_4.sh” # exit 4 routine – warning
EXIT_8=”$ARCHIVE_DIR/scripts/exit_8.sh” # exit 8 routine – error
USER_EXIT_1=”$ARCHIVE_DIR/scripts/usrexit1.sh” # user exit script dest
USER_EXIT_2=”$ARCHIVE_DIR/scripts/usrexit2.sh”
USER_EXIT_3=”$ARCHIVE_DIR/scripts/usrexit3.sh”
USER_EXIT_4=”$ARCHIVE_DIR/scripts/usrexit4.sh”
JDATE=`date +%y%j`
CTIME=`date +%HH%MM%SS`
export EXIT_0 EXIT_4 EXIT_8
export USER_EXIT_1 USER_EXIT_2 USER_EXIT_3 USER_EXIT_4
export ARCH_JOB_LOGS ARCH_ADSM_LOGS ARCH_COMMON_SCRIPTS
export FILELST WAIT_SLEEP ARCH_LOGS_TO_KEEP KEEP_UNITS VERSION JDATE CTIME
export MAX_WAIT_COUNT
# ————————————————————————–
# ————– Main Section ——————————————-
. $ARCH_COMMON_SCRIPTS/arch_$VERSION.sh # read in common functions
# ————————————————————————–
# —– Uncomment the functions below to be executed ———————–
param_set # set parameters for function – required
#chk_dup_process # check to see if this process is still running
# required
db_status # check database status
#user_exit_1 # user exit 1
get_archnames # get archived log files to send to ADSM
switch_logfiles # alter system switch logfiles
sleep 10
#user_exit_2 # user exit 2
arch_log_list # record current active log list in joblog
df_to_adsm # archive archived log files directly to ADSM
#user_exit_3 # user exit 3
cleanup_archive_dir # remove old archive logs from save directory
#user_exit_4 # user exit 4
clean_up # clean up directorys
save_to_adsm # archive joblogs and
# filelist to ADSM
create_stats # generate ADSM statistics for this backup
exit_0 # Archive successful routine
raju64522 said
Really awesome blog. Your blog is really useful for me. Thanks for sharing this informative blog. Keep update your blog
qlikview online training
Pavan DBA said
thank you
venkat said
hi,
by using RMAN can we take the backup of target database , the database is in NO ARCHIVE log mode.
Pavan DBA said
we cannot take rman backup without archivelog mode