export ORACLE_OLD_SID=testdb export ORACLE_SID=tstdb1 read -s -p "Enter DB password: " pass
sqlplus -S '/ as sysdba' << EOF shutdown immediate; EOF
rm -Rf ${ORACLE_BASE}/admin/${ORACLE_SID} rm -Rf ${ORACLE_BASE}/fast_recovery_area/${ORACLE_SID} rm -Rf ${ORACLE_BASE}/oradata/${ORACLE_SID} rm -Rf ${ORACLE_BASE}/diag/rdbms/${ORACLE_SID} find ${ORACLE_HOME}/dbs/ -type f -iname "*${ORACLE_SID}*" -print0 | xargs -0 rm -f
mkdir -p ${ORACLE_BASE}/admin/${ORACLE_SID}/adump mkdir -p ${ORACLE_BASE}/fast_recovery_area/${ORACLE_SID} mkdir -p ${ORACLE_BASE}/oradata/${ORACLE_SID} mkdir -p ${ORACLE_BASE}/diag/rdbms/${ORACLE_SID}
orapwd file=$ORACLE_HOME/dbs/orapw${ORACLE_SID} entries=10 password=${pass}
echo "db_name='${ORACLE_SID}'" > $ORACLE_HOME/dbs/init${ORACLE_SID}.ora
nomount
":sqlplus -S '/ as sysdba' << EOF startup nomount; EOF
$ORACLE_HOME/network/admin/listener.ora
" и $ORACLE_HOME/network/admin/tnsnames.oralistener.ora
", перегружаем listener:lsnrctl reload
echo "duplicate target database to ${ORACLE_SID} from active database db_file_name_convert '/opt/oracle/oradata/${ORACLE_OLD_SID}/','/opt/oracle/oradata/${ORACLE_SID}/' spfile parameter_value_convert '/opt/oracle/oradata/${ORACLE_OLD_SID}/','/opt/oracle/oradata/${ORACLE_SID}/' , '/opt/oracle/fast_recovery_area/${ORACLE_OLD_SID}/','/opt/oracle/fast_recovery_area/${ORACLE_SID}/' set log_file_name_convert '/opt/oracle/oradata/${ORACLE_OLD_SID}/','/opt/oracle/oradata/${ORACLE_SID}/' ;" | rman target sys/${pass}@${ORACLE_OLD_SID} auxiliary sys/${pass}@${ORACLE_SID}
В "parameter_value_convert
" должны быть перечислены все пары "исходный путь-новый путь", особенно это касается групп control-файлов.