Skip to content

Commit f6bbb79

Browse files
Dba 847 (#515)
* Add source legacy option * Adapt to handle restore, recover and open from legacy * Use source legacy workflow input value * Remove development target environments * Remove unwanted character * Run post or build ha jobs if required * Debugging * Uncomment debug * Uncomment * Require db_unique_name for legacy restore * Misplaced double quote * Correct variable name * Append to pfile * Add db_unique_name option * Do not perform asm diskgroup deletion for legacy recover/open condition * Modify database resources * Spelling correction
1 parent c0a32c6 commit f6bbb79

File tree

1 file changed

+45
-34
lines changed

1 file changed

+45
-34
lines changed

playbooks/oracle_duplicate/rman_duplicate.sh

+45-34
Original file line numberDiff line numberDiff line change
@@ -422,8 +422,10 @@ EOF
422422
echo " recover database;" >> $RMANDUPLICATECMDFILE
423423
if [[ "${LEGACY_OPTION}" = "open" ]]
424424
then
425-
echo ' sql "alter database active standby database";' >> $RMANDUPLICATECMDFILE
425+
echo ' sql "alter database activate standby database";' >> $RMANDUPLICATECMDFILE
426426
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
427429
fi
428430
for (( i=1; i<=${CPU_COUNT}; i++ ))
429431
do
@@ -447,6 +449,7 @@ EOF
447449
echo " set db_file_name_convert='+DATA/${SOURCE_DB}','+DATA/${TARGET_DB}'" >> $RMANDUPLICATECMDFILE
448450
echo " set log_file_name_convert='+DATA/${SOURCE_DB}','+DATA/${TARGET_DB}','+FLASH/${SOURCE_DB}','+FLASH/${TARGET_DB}'" >> $RMANDUPLICATECMDFILE
449451
fi
452+
[[ "${LEGACY_OPTION}" == "restore" ]] && echo " set db_unique_name='${TARGET_DB}'" >> $RMANDUPLICATECMDFILE
450453
echo " set fal_server=''" >> $RMANDUPLICATECMDFILE
451454
echo " set log_archive_config=''" >> $RMANDUPLICATECMDFILE
452455
echo " set log_archive_dest_2=''" >> $RMANDUPLICATECMDFILE
@@ -469,7 +472,11 @@ EOF
469472
else
470473
echo " until scn ${SCN};" >> $RMANDUPLICATECMDFILE
471474
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
473480
echo "}" >>$RMANDUPLICATECMDFILE
474481
echo "exit" >>$RMANDUPLICATECMDFILE
475482
}
@@ -759,6 +766,7 @@ if [[ ! -z "$JSON_INPUTS" ]]; then
759766
JSON_INPUTS=$(echo $JSON_INPUTS | base64 --decode )
760767
fi
761768

769+
762770
if [ "${SPFILE_PARAMETERS}" != "UNSPECIFIED" ]
763771
then
764772
for PARAM in ${SPFILE_PARAMETERS[@]}
@@ -770,47 +778,50 @@ then
770778
done
771779
fi
772780

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;
776786
EOF
777787

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"
780790

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}
785795

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}
788798

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}
791801

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
801811

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}
806816

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}
811821
EOF
812-
then
813-
error "Placing ${TARGET_DB} in nomount mode"
822+
then
823+
error "Placing ${TARGET_DB} in nomount mode"
824+
fi
814825
fi
815826

816827
info "Generating rman command file"

0 commit comments

Comments
 (0)