Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> Recovery time

Recovery time

From: <Ahnjoan_at_gmail.com>
Date: 10 Nov 2005 05:33:24 -0800
Message-ID: <1131629604.245380.307870@f14g2000cwb.googlegroups.com>


We are currently trying to test our backup/restore/recover procedures at work. We are new to RMAN and I am new to Oracle. On small databases we have been able to use RMAN along with Veritas to backup to tape and restore/recover a database. We have now moved the same scripts to attempt the procedures on a production database.

Our production configuration switches redo at 3G and this happens about every 24 hours. The attempt to backup and restore goes as expected however when attempting to recover the archive redo, Oracle just keeps working for what seems to be forever. We have let this process continue for 2 days now and it still did not complete.

For our second attempt we changed a configuration to make Oracle do a checkpoint every 30 minutes. Now the archive redo switches files every 30 minutes and file sizes are around 200 Megabytes. The active redo is still 3G but we believed we might see progress if the archive logs were smaller. The next attempt to backup/restore/recover went just like the first, when it gets to work on the first 200M archive log file it just keeps working on it. We let it run for 8 hours before stopping it.

We are attempting to recover this database on a significantly smaller hardware (2 gigs of memory vs 8 gigs of memory) however there is plenty of disk space.

Here is a copy of our backup script just in case this helps pin point the cause of our frustration. Any help would be greatly appreciated.

Thanks
Ahnjoan

#!/bin/sh
# $Header: hot_database_backup.sh,v 1.2 2002/08/06 23:51:42 $
#
#bcpyrght
#***************************************************************************
#* $VRTScprght: Copyright 1993 - 2003 VERITAS Software Corporation, All
Rights R
eserved $ *
#***************************************************************************
#ecpyrght
#
#



# hot_database_backup.sh
#


# This script uses Recovery Manager to take a hot (inconsistent)
database
# backup. A hot backup is inconsistent because portions of the
database are
# being modified and written to the disk while the backup is
progressing.
# You must run your database in ARCHIVELOG mode to make hot backups.
It is
# assumed that this script will be executed by user root. In order for
RMAN
# to work properly we switch user (su -) to the oracle dba account
before
# execution. If this script runs under a user account that has Oracle
dba
# privilege, it will be executed using this user's account.
#

#



# Determine the user which is executing this script.
#

CUSER=`id |cut -d"(" -f2 | cut -d ")" -f1`

#



# Put output in <this file name>.out. Change as desired.
# Note: output directory requires write permission.
#

RMAN_LOG_FILE=/ora4/bkp_logs/`date +%m_%d_%y_%H:%M:%S`.bkp.log

#



# 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
echo "$RMAN_LOG_FILE" > /opt/openv/netbackup/daily_file

# -----------------------------------------------------------------
# Initialize the log file.
# -----------------------------------------------------------------

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 /db/oracle/product/ora81, below, with the Oracle home path.
#

ORACLE_HOME=/ora1/oracle/OraHome1
export ORACLE_HOME

#



# Replace ora81, below, with the Oracle SID of the target database.
#

ORACLE_SID=arcsight
export ORACLE_SID

#



# Replace ora81, below, with the Oracle DBA user id (account).
#

ORACLE_USER=oracle

#



# Set the target connect string.
# Replace "sys/manager", below, with the target connect string.
#

TARGET_CONNECT_STR=/
#



# 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

echo "SBT_TAPE: $SBT_TAPE" >> $RMAN_LOG_FILE

#



# Print out the value of the variables set by bphdb.
#

echo  >> $RMAN_LOG_FILE
echo   "NB_ORA_FULL: $NB_ORA_FULL" >> $RMAN_LOG_FILE
echo   "NB_ORA_INCR: $NB_ORA_INCR" >> $RMAN_LOG_FILE
echo   "NB_ORA_CINC: $NB_ORA_CINC" >> $RMAN_LOG_FILE
echo   "NB_ORA_SERV: $NB_ORA_SERV" >> $RMAN_LOG_FILE
echo   "NB_ORA_POLICY: $NB_ORA_POLICY" >> $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
#



# If this script is executed from a NetBackup schedule, NetBackup
# sets an NB_ORA environment variable based on the schedule type.
# The NB_ORA variable is then used to dynamically set BACKUP_TYPE
# For example, when:
# schedule type is BACKUP_TYPE is
# ---------------- --------------
# Automatic Full INCREMENTAL LEVEL=0
# Automatic Differential Incremental INCREMENTAL LEVEL=1
# Automatic Cumulative Incremental INCREMENTAL LEVEL=1 CUMULATIVE
#
# For user initiated backups, BACKUP_TYPE defaults to incremental
# level 0 (full). To change the default for a user initiated
# backup to incremental or incremental cumulative, uncomment
# one of the following two lines.
# BACKUP_TYPE="INCREMENTAL LEVEL=1"
# BACKUP_TYPE="INCREMENTAL LEVEL=1 CUMULATIVE"
#
# Note that we use incremental level 0 to specify full backups.
# That is because, although they are identical in content, only
# the incremental level 0 backup can have incremental backups of
# level > 0 applied to it.
#

if [ "$NB_ORA_FULL" = "1" ]
then

        echo "==== Full backup requested ====" >> $RMAN_LOG_FILE
        BACKUP_TYPE="INCREMENTAL LEVEL=0"

elif [ "$NB_ORA_INCR" = "1" ]
then

        echo "==== Differential incremental backup requested ====" >> $RMAN_LOG_
FILE
        BACKUP_TYPE="INCREMENTAL LEVEL=1" elif [ "$NB_ORA_CINC" = "1" ]
then

        echo "==== Cumulative incremental backup requested ====" >> $RMAN_LOG_FI
LE

        BACKUP_TYPE="INCREMENTAL LEVEL=1 CUMULATIVE" elif [ "$BACKUP_TYPE" = "" ]
then

        echo "==== Default - Full backup requested ====" >> $RMAN_LOG_FILE
        BACKUP_TYPE="INCREMENTAL LEVEL=0" fi

#



# Call Recovery Manager to initiate the backup. This example does not
use a
# Recovery Catalog. If you choose to use one, replace the option
'nocatalog'
# from the rman command line below with the
# 'rcvcat <userid>/<passwd>@<tns alias>' statement.
#
# Note: Any environment variables needed at run time by RMAN
# must be set and exported within the switch user (su) command.
#


# Backs up the whole database. This backup is part of the incremental
# strategy (this means it can have incremental backups of levels > 0
# applied to it).
#
# We do not need to explicitly request the control file to be included
# in this backup, as it is automatically included each time file 1 of
# the system tablespace is backed up (the inference: as it is a whole
# database backup, file 1 of the system tablespace will be backed up,
# hence the controlfile will also be included automatically).
#
# Typically, a level 0 backup would be done at least once a week.
#
# The scenario assumes:
# o you are backing your database up to two tape drives
# o you want each backup set to include a maximum of 5 files
# o you wish to include offline datafiles, and read-only
tablespaces,
# in the backup
# o you want the backup to continue if any files are inaccessible.
# o you are not using a Recovery Catalog
# o you are explicitly backing up the control file. Since you are
# specifying nocatalog, the controlfile backup that occurs
# automatically as the result of backing up the system file is
# not sufficient; it will not contain records for the backup that
# is currently in progress.
# o you want to archive the current log, back up all the
# archive logs using two channels, putting a maximum of 20 logs
# in a backup set, and deleting them once the backup is complete.
#
# Note that the format string is constructed to guarantee uniqueness
and
# to enhance NetBackup for Oracle backup and restore performance.
#
#
# NOTE WHEN USING TNS ALIAS: When connecting to a database
# using a TNS alias, you must use a send command or a parms operand to

# specify environment variables. In other words, when accessing a
database
# through a listener, the environment variables set at the system
level are not

# visible when RMAN is running. For more information on the
environment
# variables, please refer to the NetBackup for Oracle Admin. Guide.
#
#


CMD_STR="
ORACLE_HOME=$ORACLE_HOME
export ORACLE_HOME
ORACLE_SID=$ORACLE_SID
export ORACLE_SID
$RMAN target $TARGET_CONNECT_STR nocatalog msglog $RMAN_LOG_FILE append << EOF
RUN {
ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';
ALLOCATE CHANNEL ch01 TYPE 'SBT_TAPE';
BACKUP
    $BACKUP_TYPE
    SKIP INACCESSIBLE
    TAG terra_hot_db_bk_level0
    FILESPERSET 5
    # recommended format
    FORMAT 'bk_%s_%p_%t'
    DATABASE;
    sql 'alter system archive log current'; RELEASE CHANNEL ch00;
RELEASE CHANNEL ch01;
# backup all archive logs

ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';
ALLOCATE CHANNEL ch01 TYPE 'SBT_TAPE';
BACKUP
   filesperset 20
   FORMAT 'al_%s_%p_%t'
   ARCHIVELOG ALL DELETE INPUT;
RELEASE CHANNEL ch00;
RELEASE CHANNEL ch01;
#
# Note: During the process of backing up the database, RMAN also backs
up the
# control file. This version of the control file does not contain the
# information about the current backup because "nocatalog" has been
specified.
# To include the information about the current backup, the control file
should
# be backed up as the last step of the RMAN section. This step would
not be
# necessary if we were using a recovery catalog.
#

ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';
BACKUP
    # recommended format
    FORMAT 'cntrl_%s_%p_%t'
    CURRENT CONTROLFILE;
RELEASE CHANNEL ch00;
}
EOF
"
# Initiate the command string

if [ "$CUSER" = "root" ]
then

    su - $ORACLE_USER -c "$CMD_STR" >> $RMAN_LOG_FILE     RSTAT=$?
else

    /usr/bin/sh -c "$CMD_STR" >> $RMAN_LOG_FILE     RSTAT=$?
fi

#



# 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  

exit $RSTAT Received on Thu Nov 10 2005 - 07:33:24 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US