Scripts    Home         

How to: Oracle RMAN Script Examples with VERITAS

Oracle rman utility takes a while to figure out, set up and get a usable recovery scheme. This is a set of rman scripts tested with Veritas for point in time recovery and various backup scenarios. Tested on Oracle 8.05, Veritas is just one file manager of many. Recovery managers in Oracle seem to change every couple releases so be aware and read the manuals.

What I did in the following set of scripts is:
- create an rman catalog schema in an instance
- register the databases to be backed up,
- back up the databases
- try some restores


################################
# How to create an RMAN catalog in an instance
create user identified by password
temporary tablespace temp01 default tablespace user01 quota unlimited on user01;

grant connect to user;
ALTER USER user DEFAULT ROLE ALL;
grant create session to user;

grant recovery_catalog_owner to user;

connect user/password;
@$ORACLE_HOME/rdbms/admin/catrman.sql;

################################
####Register the database with a catalog

export ORACLE_SID=PRD805;

rman target user/password rcvcat user/[email protected] << EOF
register database;
print database;
EOF


################################

####online backup to disk with a catalog
export ORACLE_SID=PRD805

## Check the database.
#svrmgrl <[email protected]  << EOF
run {
     # backup the database to disk
     allocate channel dev1 type disk;
     backup (database format '/vol08/oradata/rmanbackup/bp_%s_%p'); }

exit;
EOF


################################
#  rman_to_veritas: on line to veritas tape.
run {
        allocate channel t1 type 'SBT_TAPE';
        backup
                format 'db_%d_t%t_s%s_p%p'
                (database);
        sql 'alter system archive log current';
        backup
                format 'arch_%d_t%t_s%s_p%p'
                (archivelog all delete input);
}


################################
#  shell called by crontab using rman_to_veritas on line to veritas tape.

ORACLE_HOME=/apps/oracle/product/8.0.5.a

su oracle -c '/bin/date;setenv ORACLE_HOME /apps/oracle/product/8.0.5.a; setenv LD_LIBRARY_PATH=$ORACLE_HOME/lib:$VERITAS/lib; $ORACLE_HOME/bin/rman target \"user/[email protected]\" rcvcat \"user/[email protected]\" cmdfile \"$ORACLE_HOME/rman/prd805/rman_to_veritas\";/bin/date' >> $ORACLE_HOME/rman/prd805/log_rman_to_veritas.out 2>&1

# If there is no catalog
###su oracle -c '/bin/date;setenv ORACLE_HOME /apps/oracle/product/8.0.5.a; setenv LD_LIBRARY_PATH=$ORACLE_HOME/lib:$VERITAS/lib; $ORACLE_HOME/bin/rman target \"user/[email protected]\" nocatalog cmdfile \"$ORACLE_HOME/rman/prd805/rman_to_veritas\";/bin/date' >> $ORACLE_HOME/rman/prd805/log_rman_to_veritas.out 2>&1

####################################################
# Point in time recovery

svrmgrl << EOF
    connect internal
    shutdown abort;
    startup nomount;
EOF


export NLS_LANG=american
export NLS_DATE_FORMAT='Mon DD YYYY HH24:MI:SS'

rman target user/password rcvcat user/[email protected] msglog=$ORACLE_HOME/rman/tst8/recover.log << EOF
     run {
     # recover database until specific time
     allocate channel dev1 type 'SBT_TAPE';

     set until time 'Apr 20 2003 12:15:00';
     sql "alter database mount" ;
     restore database;
     switch datafile all;
     recover database;
     sql "alter database open resetlogs";

     release channel dev1;
     }

EOF


##############################################3
# backup to tape

export ORACLE_SID=TST8

#svrmgrl <[email protected] msglog=$ORACLE_
HOME/rman/tst8/online.log << EOF
run {
        allocate channel t1 type 'SBT_TAPE';
        backup
                format 'db_%d_t%t_s%s_p%p'
                (database);
        sql 'alter system archive log current';
        backup
                format 'arch_%d_t%t_s%s_p%p'
                (archivelog all delete input);
}

exit;
EOF

#svrmgrl <[email protected] << EOF
#print database;
list device type 'sbt_tape' backupset of database;
#list until time '01 Nov 2000 00:00:00' backupset of database;
EOF