Oracle DuplicateDB

Da Emigar.
Jump to navigation Jump to search
#!/bin/bash

ORACLE_SID=DBCLONE
ORAENV_ASK=NO
export ORACLE_SID ORAENV_ASK
. oraenv
unset ORAENV_ASK

HOST_PROD=10.1.1.1
HOST_TEST=10.1.1.2


## salvare le password
sqlplus '/ as sysdba' << EOF
@save_password SYS
@save_password SYSTEM
shutdown abort;
EOF

rm -rf /oradata/${ORACLE_SID}
rm -rf /oralog/${ORACLE_SID}

rm -f ${ORACLE_HOME}/dbs/spfile${ORACLE_SID}.ora
rm -f ${ORACLE_HOME}/dbs/orapw${ORACLE_SID}
orapwd file=${ORACLE_HOME}/dbs/orapw${ORACLE_SID} password="xxxxxxxxxxxxxxxxxxxxxxxxxx" entries=16

rman target / nocatalog << EOF
startup nomount force;
EOF

rman target sys/"xxxxxxxxxxxxxxxxxxxxxxxxxx"@${HOST_PROD}:1521/SID_SRC auxiliary sys/"xxxxxxxxxxxxxxxxxxxxxxxxxx"@${HOST_TEST}:1521/${ORACLE_SID} trace refresh_trintest_from_prod.log << EOF
DUPLICATE DATABASE TO TRINTEST
  FROM ACTIVE DATABASE
  SPFILE
   parameter_value_convert ('YYYY','XXXX')
    set db_create_file_dest='/oradata'
    set db_create_online_log_dest_1='/oralog'
    set db_name='XXXX'
    set db_unique_name='XXXX'
    set diagnostic_dest='/orabin/oracle/12.2'
    set local_listener='LISTENER'
    set sga_target='1700M'
    set pga_aggregate_target='512M'
    set db_recovery_file_dest='/oradata'
    set db_recovery_file_dest_size='40G'
    set audit_file_dest='/orabin/oracle/12.2/admin/XXXX/adump'
    set audit_sys_operations='TRUE'
    reset log_archive_dest_1
  NOFILENAMECHECK;

EOF

#set log_archive_dest_1='location=/oradata reopen=10'

rman target / nocatalog << EOF
delete noprompt archivelog all;
EOF

sqlplus '/ as sysdba' << EOF
shutdown immediate
startup mount
alter database noarchivelog;
alter database open;
EOF


 -- save password.sql &1

 set pagesize 0
 set linesize 800
 set trim on trims on verify off
 spool password_&1..sql

 select 'alter user ' || t1.username || ' identified by values ''' || t2.password || ';' || t2.spare4 || ''';'
   from dba_users t1 inner join sys.user$ t2 on t2.name=t1.username
  where t1.username='&1'; 

 spool off