422
422
echo " recover database;" >> $RMANDUPLICATECMDFILE
423
423
if [[ " ${LEGACY_OPTION} " = " open" ]]
424
424
then
425
- echo ' sql "alter database active standby database";' >> $RMANDUPLICATECMDFILE
425
+ echo ' sql "alter database activate standby database";' >> $RMANDUPLICATECMDFILE
426
426
echo ' sql "alter database open";' >> $RMANDUPLICATECMDFILE
427
+ echo " host 'srvctl modify database -d ${TARGET_DB} -startoption OPEN';" >> $RMANDUPLICATECMDFILE
428
+ echo " host 'srvctl modify database -d ${TARGET_DB} -role PRIMARY';" >> $RMANDUPLICATECMDFILE
427
429
fi
428
430
for (( i= 1 ; i<= ${CPU_COUNT} ; i++ ))
429
431
do
447
449
echo " set db_file_name_convert='+DATA/${SOURCE_DB} ','+DATA/${TARGET_DB} '" >> $RMANDUPLICATECMDFILE
448
450
echo " set log_file_name_convert='+DATA/${SOURCE_DB} ','+DATA/${TARGET_DB} ','+FLASH/${SOURCE_DB} ','+FLASH/${TARGET_DB} '" >> $RMANDUPLICATECMDFILE
449
451
fi
452
+ [[ " ${LEGACY_OPTION} " == " restore" ]] && echo " set db_unique_name='${TARGET_DB} '" >> $RMANDUPLICATECMDFILE
450
453
echo " set fal_server=''" >> $RMANDUPLICATECMDFILE
451
454
echo " set log_archive_config=''" >> $RMANDUPLICATECMDFILE
452
455
echo " set log_archive_dest_2=''" >> $RMANDUPLICATECMDFILE
469
472
else
470
473
echo " until scn ${SCN} ;" >> $RMANDUPLICATECMDFILE
471
474
fi
472
-
475
+ if [[ " ${LEGACY_OPTION} " == " restore" ]]
476
+ then
477
+ echo " host 'srvctl modify database -d ${TARGET_DB} -startoption MOUNT';" >> $RMANDUPLICATECMDFILE
478
+ echo " host 'srvctl modify database -d ${TARGET_DB} -role PHYSICAL_STANDBY';" >> $RMANDUPLICATECMDFILE
479
+ fi
473
480
echo " }" >> $RMANDUPLICATECMDFILE
474
481
echo " exit" >> $RMANDUPLICATECMDFILE
475
482
}
@@ -759,6 +766,7 @@ if [[ ! -z "$JSON_INPUTS" ]]; then
759
766
JSON_INPUTS=$( echo $JSON_INPUTS | base64 --decode )
760
767
fi
761
768
769
+
762
770
if [ " ${SPFILE_PARAMETERS} " != " UNSPECIFIED" ]
763
771
then
764
772
for PARAM in ${SPFILE_PARAMETERS[@]}
@@ -770,47 +778,50 @@ then
770
778
done
771
779
fi
772
780
773
- info " Shutdown ${TARGET_DB} "
774
- sqlplus -s / as sysdba << EOF
775
- shutdown abort;
781
+ if [[ ! " ${LEGACY_OPTION} " =~ ^(recover| open)$ ]]
782
+ then
783
+ info " Shutdown ${TARGET_DB} "
784
+ sqlplus -s / as sysdba << EOF
785
+ shutdown abort;
776
786
EOF
777
787
778
- info " Modify database using Server Control with correct spfile location"
779
- srvctl modify database -d ${TARGET_DB} -p " +DATA/${TARGET_DB} /spfile${TARGET_DB} .ora"
788
+ info " Modify database using Server Control with correct spfile location"
789
+ srvctl modify database -d ${TARGET_DB} -p " +DATA/${TARGET_DB} /spfile${TARGET_DB} .ora"
780
790
781
- if [[ " ${NOOP_MODE} " != " TRUE" ]];
782
- then
783
- remove_asm_directory DATA ${TARGET_DB}
784
- remove_asm_directory FLASH ${TARGET_DB}
791
+ if [[ " ${NOOP_MODE} " != " TRUE" ]];
792
+ then
793
+ remove_asm_directory DATA ${TARGET_DB}
794
+ remove_asm_directory FLASH ${TARGET_DB}
785
795
786
- info " Create ${TARGET_DB} in +DATA in readiness for duplicate"
787
- asmcmd mkdir +DATA/${TARGET_DB}
796
+ info " Create ${TARGET_DB} in +DATA in readiness for duplicate"
797
+ asmcmd mkdir +DATA/${TARGET_DB}
788
798
789
- info " Set environment for ${TARGET_DB} "
790
- set_ora_env ${TARGET_DB}
799
+ info " Set environment for ${TARGET_DB} "
800
+ set_ora_env ${TARGET_DB}
791
801
792
- INI_FILES=(${ORACLE_HOME} /dbs/* ${TARGET_DB} * .ora)
793
- if [[ -f ${INI_FILES[0]} ]]
794
- then
795
- info " Remove all references to all ${TARGET_DB} initialization files to start fresh"
796
- rm ${ORACLE_HOME} /dbs/* ${TARGET_DB} * .ora || error " Removing ${TARGET_DB} initialization files"
797
- fi
798
- else
799
- info " Skipping deleting data files in noop mode"
800
- fi
802
+ INI_FILES=(${ORACLE_HOME} /dbs/* ${TARGET_DB} * .ora)
803
+ if [[ -f ${INI_FILES[0]} ]]
804
+ then
805
+ info " Remove all references to all ${TARGET_DB} initialization files to start fresh"
806
+ rm ${ORACLE_HOME} /dbs/* ${TARGET_DB} * .ora || error " Removing ${TARGET_DB} initialization files"
807
+ fi
808
+ else
809
+ info " Skipping deleting data files in noop mode"
810
+ fi
801
811
802
- DUPLICATEPFILE=${ORACLE_HOME} /dbs/init${TARGET_DB} _duplicate.ora
803
- info " Create ${DUPLICATEPFILE} pfile"
804
- echo " db_name=${TARGET_DB} " > ${DUPLICATEPFILE}
805
- echo " ${COMPATIBLE} " >> ${DUPLICATEPFILE}
812
+ DUPLICATEPFILE=${ORACLE_HOME} /dbs/init${TARGET_DB} _duplicate.ora
813
+ info " Create ${DUPLICATEPFILE} pfile"
814
+ echo " db_name=${TARGET_DB} " > ${DUPLICATEPFILE}
815
+ echo " ${COMPATIBLE} " >> ${DUPLICATEPFILE}
806
816
807
- info " Place ${TARGET_DB} in nomount mode"
808
- if ! sqlplus -s / as sysdba << EOF
809
- whenever sqlerror exit failure
810
- startup force nomount pfile=${DUPLICATEPFILE}
817
+ info " Place ${TARGET_DB} in nomount mode"
818
+ if ! sqlplus -s / as sysdba << EOF
819
+ whenever sqlerror exit failure
820
+ startup force nomount pfile=${DUPLICATEPFILE}
811
821
EOF
812
- then
813
- error " Placing ${TARGET_DB} in nomount mode"
822
+ then
823
+ error " Placing ${TARGET_DB} in nomount mode"
824
+ fi
814
825
fi
815
826
816
827
info " Generating rman command file"
0 commit comments