file
name archivelogs_only.sh
Call from crontab at your desired iteration.
Here
it is called everyday at 15:00
#Oracle
Archivelog backups
0 15 * * * /oracle/scripts/archivelogs_only.sh
archivelogs_only.sh
#!/bin/sh
# ----------------------------------------------------
# Determine the user which is executing this script.
# ----------------------------------------------------
CUSER=`id |cut -d"(" -f2 | cut -d ")" -f1`
# Set begin time of script
c_begin_time_sec=`date +%s`
# ----------------------------------------------------
# Put output in.out. Change as desired.
# Note: output directory requires write permission.
RMAN_LOG_FILE=${0}.`date +%Y%m%d_%H%M%S`.out
# ----------------------------------------------------
# You may want to delete the output file so that
# Determine the user which is executing this script.
# ----------------------------------------------------
CUSER=`id |cut -d"(" -f2 | cut -d ")" -f1`
# Set begin time of script
c_begin_time_sec=`date +%s`
# ----------------------------------------------------
# Put output in
# Note: output directory requires write permission.
RMAN_LOG_FILE=${0}.`date +%Y%m%d_%H%M%S`.out
# ----------------------------------------------------
# You may want to delete the output file so that
# backup information does not accumulate.
# If not, delete the following lines.
# ----------------------------------------------------
if [ -f "$RMAN_LOG_FILE" ]
then
rm -f "$RMAN_LOG_FILE"
fi
# ----------------------------------------------------
# Initialize the log file.
# ----------------------------------------------------
set NLS_DATE_FORMAT="YYYY/MM/DD HH24:MI:SS"
set echo on
echo >> $RMAN_LOG_FILE
chmod 666 $RMAN_LOG_FILE
# ----------------------------------------------------
# Log the start of this script.
# ----------------------------------------------------
echo Script $0 >> $RMAN_LOG_FILE
echo ==== started on `date` ==== >> $RMAN_LOG_FILE
echo >> $RMAN_LOG_FILE
# ----------------------------------------------------
# Replace below, with the Oracle home path.
# ----------------------------------------------------
ORACLE_HOME=/oracle/app/
export ORACLE_HOME
# ----------------------------------------------------
# Replace below, with the Oracle SID of
# ----------------------------------------------------
if [ -f "$RMAN_LOG_FILE" ]
then
rm -f "$RMAN_LOG_FILE"
fi
# ----------------------------------------------------
# Initialize the log file.
# ----------------------------------------------------
set NLS_DATE_FORMAT="YYYY/MM/DD HH24:MI:SS"
set echo on
echo >> $RMAN_LOG_FILE
chmod 666 $RMAN_LOG_FILE
# ----------------------------------------------------
# Log the start of this script.
# ----------------------------------------------------
echo Script $0 >> $RMAN_LOG_FILE
echo ==== started on `date` ==== >> $RMAN_LOG_FILE
echo >> $RMAN_LOG_FILE
# ----------------------------------------------------
# Replace below, with the Oracle home path.
# ----------------------------------------------------
ORACLE_HOME=/oracle/app/
export ORACLE_HOME
# ----------------------------------------------------
# Replace below, with the Oracle SID of
# the target database.
# ----------------------------------------------------
ORACLE_SID=ORCL
export ORACLE_SID
# ----------------------------------------------------
# Replace below, with the Oracle DBA user id (account).
# -----------------------------------------------------
ORACLE_USER=oracle
# -----------------------------------------------------
# Set the target connect string.
# Replace "/", below,
# ----------------------------------------------------
ORACLE_SID=ORCL
export ORACLE_SID
# ----------------------------------------------------
# Replace below, with the Oracle DBA user id (account).
# -----------------------------------------------------
ORACLE_USER=oracle
# -----------------------------------------------------
# Set the target connect string.
# Replace "/", below,
# with the target connect string.
# -----------------------------------------------------
TARGET_CONNECT_STR=/
CATALOG_CONNECT_STR=catalog_login/password@sid_of_catalog;
# -----------------------------------------------------
# Set the Oracle Recovery Manager name.
# -----------------------------------------------------
RMAN=$ORACLE_HOME/bin/rman
# -----------------------------------------------------
# Print out the value of the variables set by this script.
# -----------------------------------------------------
echo >> $RMAN_LOG_FILE
echo "RMAN: $RMAN" >> $RMAN_LOG_FILE
echo "ORACLE_SID: $ORACLE_SID" >> $RMAN_LOG_FILE
echo "ORACLE_USER: $ORACLE_USER" >> $RMAN_LOG_FILE
echo "ORACLE_HOME: $ORACLE_HOME" >> $RMAN_LOG_FILE
# -----------------------------------------------------
# NOTE: This script assumes that the database
# -----------------------------------------------------
TARGET_CONNECT_STR=/
CATALOG_CONNECT_STR=catalog_login/password@sid_of_catalog;
# -----------------------------------------------------
# Set the Oracle Recovery Manager name.
# -----------------------------------------------------
RMAN=$ORACLE_HOME/bin/rman
# -----------------------------------------------------
# Print out the value of the variables set by this script.
# -----------------------------------------------------
echo >> $RMAN_LOG_FILE
echo "RMAN: $RMAN" >> $RMAN_LOG_FILE
echo "ORACLE_SID: $ORACLE_SID" >> $RMAN_LOG_FILE
echo "ORACLE_USER: $ORACLE_USER" >> $RMAN_LOG_FILE
echo "ORACLE_HOME: $ORACLE_HOME" >> $RMAN_LOG_FILE
# -----------------------------------------------------
# NOTE: This script assumes that the database
# is properly opened. If desired,
# this would be the place to verify that.
# -----------------------------------------------------
echo >> $RMAN_LOG_FILE
# this would be the place to verify that.
# -----------------------------------------------------
echo >> $RMAN_LOG_FILE
# ---------------------------------------------------------------------------
# Call Recovery Manager to initiate the backup.
# ---------------------------------------------------------------------------
c_begin_time_sec=`date +%s`
CMD_STR="
ORACLE_HOME=$ORACLE_HOME
export ORACLE_HOME
ORACLE_SID=$ORACLE_SID
export ORACLE_SID
$RMAN target $TARGET_CONNECT_STR catalog $CATALOG_CONNECT_STR msgno append << EOF
# $RMAN target $TARGET_CONNECT_STR msgno append << EOF
RUN {
sql 'alter system archive log current';
# backup archive logs
BACKUP
filesperset 25
ARCHIVELOG ALL;
DELETE NOPROMPT ARCHIVELOG
# Update how many days to keep Archivelog files on disk.
# This is one day.
UNTIL TIME 'SYSDATE - 1';
}
EOF
"
# Initiate the command string
/bin/sh -c "$CMD_STR" >> $RMAN_LOG_FILE
RSTAT=$?
c_end_time_sec=`date +%s`
echo >> $RMAN_LOG_FILE
v_total_execution_time_sec=`expr ${c_end_time_sec} - ${c_begin_time_sec}`
echo "Script execution time is $((v_total_execution_time_sec / 60)) Minutes" >> $RMAN_LOG_FILE
echo "Archive Log script record time. Amazing!" >> $RMAN_LOG_FILE
echo >> $RMAN_LOG_FILE
# ---------------------------------------------------------------------------
# Log the completion of this script.
# ---------------------------------------------------------------------------
if [ "$RSTAT" = "0" ]
then
LOGMSG="ended successfully"
else
LOGMSG="ended in error"
fi
echo >> $RMAN_LOG_FILE
echo Script $0 >> $RMAN_LOG_FILE
echo ==== $LOGMSG on `date` ==== >> $RMAN_LOG_FILE
echo >> $RMAN_LOG_FILE
#
# Email log file and status to DBA
cat $RMAN_LOG_FILE | mailx -s "$((v_total_execution_time_sec / 60)) Mins. ${ORACLE_SID} on `uname -n` Archive Log Backup $LOGMSG - EXIT Status = $RSTAT" Your_email@Company.com
exit $RSTAT
No comments:
Post a Comment