#!/bin/sh -xv
#
#
# Script to create database and duplicate with RMAN
#
# Matt D 5/25/2011
#
#
# Assumes a backup copy exists in ASM
# Creates RAC database via DBCA
# Clones from Backup
# Starts up RAC Database
#
#
# Here's my RMAN backup script
#!/bin/sh -xv
#
#
# Update per site requirements
# export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
# export PATH=$PATH:$ORACLE_HOME/bin
#
# echo "----------------------------------------"
# echo "ORACLE_HOME is set to:"
# echo $ORACLE_HOME
#echo "----------------------------------------"
#
#echo "----------------------------------------"
#echo "Path is set to:"
#echo $PATH
#echo "----------------------------------------"
#
#
#read -p "Press any key to start backup..."
#
#
#srvctl stop instance -d OVMRAC -i OVMRAC1 -o immediate
#srvctl stop instance -d OVMRAC -i OVMRAC2 -o immediate
#
#export ORACLE_SID=OVMRAC1;
#
#rman target / <"
read NODE1
echo $NODE1
echo "Node2 Name>"
read NODE2
echo $NODE2
echo "----------------------------------------"
echo "What is the target database connect string? >"
echo "Please enter like racscan:1521/ovmrac >"
read TARGET_DB
echo "----------------------------------------"
echo "What is the name of the new database? >"
read DBNAME
echo $DBNAME
echo "----------------------------------------"
# Call DBCA RAC Version
dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbName $DBNAME -sid $DBNAME -sysPassword oracle -systemPassword oracle -emConfiguration NONE -storageType ASM -nodelist $NODE1,$NODE2 -characterSet WE8IS08859P15 -listeners $DBNAME -memoryPercentage 25 -continueOnNonFatalErrors true
echo "----------------------------------------"
# Get the pfile for later
export ORACLE_SID=${DBNAME}1
sqlplus / as sysdba <${DBNAME}_RAC.tmp
mv /home/oracle/${DBNAME}_RAC.tmp /home/oracle/${DBNAME}_RAC.ora
# Shutdown new database
srvctl stop database -d $DBNAME
# cat /home/oracle/before_clone.ora | sed "s/testdb/${DBNAME}/g" >/home/oracle/1before_clone.ora
# Create a minimal init.ora
echo "*.compatible='11.2.0.0.0' " >mini_init.ora
echo "*.control_files='+DATA/ovmrac/controlfile/current.461.752126693','+FRA/ovmrac/controlfile/current.328.752126693' " >>mini_init.ora
echo "*.db_name='${DBNAME}'" >>mini_init.ora
# Single Instance stuff
sqlplus / as sysdba <<EOF
shutdown immediate;
/* startup nomount pfile='/home/oracle/1before_clone.ora'; */
startup nomount pfile='/home/oracle/mini_init.ora';
exit;
EOF
# See what's running
ps -ef | grep pmon | grep $DBNAME
# Export the SID to work around Doc ID 419440.1
export ORACLE_SID=${DBNAME}1
echo $ORACLE_SID
# Connect to new aux database
# Change per your site settings
rman auxiliary / target sys/oracle@${TARGET_DB} <<EOF
change archivelog all validate;
duplicate database to ${DBNAME} backup location '+fra/clone_dir';
exit;
EOF
# Startup RAC Clone
export ORACLE_SID=${DBNAME}1
sqlplus / as sysdba <start_node2.sh
echo "export PATH=$PATH:$ORACLE_HOME/bin" >>start_node2.sh
echo "export ORACLE_SID=${DBNAME}2" >>start_node2.sh
echo "/u01/app/oracle/product/11.2.0/dbhome_1/bin/sqlplus / as sysdba <>start_node2.sh
echo "startup pfile='/home/oracle/${DBNAME}_RAC.ora';" >>start_node2.sh
echo "exit;" >>start_node2.sh
echo "EOF" >>start_node2.sh
chmod +x start_node2.sh
cat start_node2.sh
# Copy new RAC init.ora to 2nd Node
scp /home/oracle/${DBNAME}_RAC.ora oracle@$NODE2:/home/oracle/
scp /home/oracle/start_node2.sh oracle@$NODE2:/home/oracle/
# Startup 2nd Instance
ssh $NODE2 /home/oracle/start_node2.sh
# Start the Clone
#srvctl start database -d $DBNAME
echo "----------------------------------------"
# Status?
srvctl status database -d $DBNAME
Leave a comment