See RMAN effective use, How to duplicate a database.htm
p>
#drop any existing standby logfile using:
select 'alter database drop standby logfile ''' || member || ''';'
from v$logfile where type = 'STANDBY'
alter database force logging;
#too many bugs with compress
ALTER DATABASE ARCHIVELOG COMPRESS disable;
select protection_mode from v$database;
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;
rman target sys/oracle@pro catalog pro/pro@rman auxiliary sys/oracle@prostdby
CONFIGURE ARCHIVELOG DELETION POLICY TO applied on standby;
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/data03/oradata/MPD/DB1/ITADRT/backup/backup/snapcf_ITADRT.f';
#This is the full backup
run {
resync catalog;
#set command id to 'backup_db';
allocate channel t1 type DISK format '/BackupNFS/%d_%s_%p_%U_DB';
backup as compressed backupset filesperset 8 database;
release channel t1;
}
#And this is the archive logs backup
run{
resync catalog;
#set command id to 'backup_arch';
allocate channel t1 type DISK format '/BackupNFS/%d_%s_%p_%U_ARCH';
change archivelog all crosscheck;
#This is not for spamming...
sql "alter system archive log current";
backup as compressed backupset ARCHIVELOG ALL NOT BACKED UP 1 TIMES filesperset 8;
release channel t1;
}
run {
resync catalog;
allocate channel t1 type DISK format '/BackupNFS/%d_%s_%p_%U_ARCH';
backup as compressed backupset ARCHIVELOG ALL NOT BACKED UP 1 TIMES filesperset 8;
BACKUP CURRENT CONTROLFILE FOR STANDBY;
release channel t1;
#you may use:
#select next_change# from v$archived_log where sequence# = (select max(sequence#) from v$archived_log)
set until scn 517764;
duplicate target database for standby NOFILENAMECHECK dorecover;
}
p>
#If you want to apply immediately at runtime then you need standby logfiles
alter database backup controlfile to trace;
#now copy the part relative the standby controlfile creation and run to q
q>
ALTER DATABASE ADD STANDBY LOGFILE '/opt/oracle/data/PROSTDBY/redostdby/redostdby01a.rdo' SIZE 10M REUSE;
ALTER DATABASE ADD STANDBY LOGFILE '/opt/oracle/data/PROSTDBY/redostdby/redostdby02a.rdo' SIZE 10M REUSE;
ALTER DATABASE ADD STANDBY LOGFILE '/opt/oracle/data/PROSTDBY/redostdby/redostdby03a.rdo' SIZE 10M REUSE;
ALTER DATABASE ADD STANDBY LOGFILE '/opt/oracle/data/PROSTDBY/redostdby/redostdby04a.rdo' SIZE 10M REUSE;
p>
ALTER DATABASE ADD STANDBY LOGFILE '/opt/oracle/data/PROSTDBY/redostdby/redostdby01a.rdo' SIZE 10M REUSE;
ALTER DATABASE ADD STANDBY LOGFILE '/opt/oracle/data/PROSTDBY/redostdby/redostdby02a.rdo' SIZE 10M REUSE;
ALTER DATABASE ADD STANDBY LOGFILE '/opt/oracle/data/PROSTDBY/redostdby/redostdby03a.rdo' SIZE 10M REUSE;
ALTER DATABASE ADD STANDBY LOGFILE '/opt/oracle/data/PROSTDBY/redostdby/redostdby04a.rdo' SIZE 10M REUSE;
p>
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE [PROTECTION | AVAILABILITY];
q>
#Change the standby to mount and start apply
alter database close;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
#realtime
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
#Oracle Standard compatible
RECOVER STANDBY DATABASE UNTIL CANCEL;
#Change the standby to read/only
#this does not stop primary even if in MAXIMUM PROTECTION
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
alter database open; |
Switchover p> I recommend to switch in "MAXIMUM PROTECTION" before switching over SELECT SWITCHOVER_STATUS FROM V$DATABASE; SWITCHOVER_STATUS -------------------- TO STANDBY ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY; shutdown immediate; startup mount; #startup nomount; alter database mount standby database; q> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY; Failover q> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE; ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY; ALTER DATABASE OPEN; |
Manually align up to now the standby database
rman target sys/oracle@pro catalog pro/pro@rman auxiliary sys/oracle@prostdby
run {
resync catalog;
change archivelog all crosscheck;
set until sequence $NEXT_SEQUENCE;
allocate channel t1 type DISK format '/data03/oradata/MPD/DB1/ITADRT/backup/backup/%d_%s_%p_%U_ARCH';
change archivelog all crosscheck;
sql "alter system archive log current";
backup as backupset filesperset 8 archivelog all delete input;
release channel t1;
}
run {
resync catalog;
change archivelog all crosscheck;
set until sequence $SEQUENCE;
#the 'delete archivelog' deletes the archivelogs from standby site after apply
recover standby clone database delete archivelog;
}
|
init.ora p (primary instance)
db_name=PRO
###########
# STANDBY #
###########
db_unique_name=PRO
log_archive_config='DG_CONFIG=(PRO,PROSTDBY)'
log_archive_dest_2='LOCATION=/opt/oracle/data/PRO/archive MANDATORY VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=PRO'
log_archive_dest_state_1=enable
log_archive_dest_1='SERVICE=PROSTDBY LGWR SYNC AFFIRM REOPEN=5 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=PROSTDBY'
log_archive_dest_state_2=enable
log_archive_format=%t_%s_%r.arc
log_archive_max_processes=4
########################
# STANDBY WHEN STANDBY #
########################
fal_server=PROSTDBY
fal_client=PRO
db_file_name_convert='PROSTDBY','PRO'
log_file_name_convert='PROSTDBY','PRO'
standby_file_management=AUTO
###########################################
# Diagnostics and Statistics
###########################################
background_dump_dest=/opt/oracle/admin/PRO/bdump
core_dump_dest=/opt/oracle/admin/PRO/cdump
user_dump_dest=/opt/oracle/admin/PRO/udump
###########################################
# File Configuration
###########################################
control_files=("/opt/oracle/data/PRO/ctl/control01.ctl")
db_recovery_file_dest=/opt/oracle/data/PRO/recovery
db_recovery_file_dest_size=200M
###########################################
# Miscellaneous
###########################################
compatible=10.2.0.4.0
###########################################
# SGA Memory
###########################################
sga_target=300M
###########################################
# Security and Auditing
###########################################
remote_login_passwordfile=EXCLUSIVE |
Init.ora q (standby instance)
db_name=PRO
###########
# STANDBY #
###########
db_unique_name=PROSTDBY
log_archive_config='DG_CONFIG=(PRO,PROSTDBY)'
log_archive_dest_2='LOCATION=/opt/oracle/data/PROSTDBY/archive MANDATORY VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=PROSTDBY'
log_archive_dest_state_1=enable
log_archive_dest_1='SERVICE=PRO LGWR SYNC AFFIRM REOPEN=5 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=PRO'
log_archive_dest_state_2=enable
log_archive_format=%t_%s_%r.arc
log_archive_max_processes=4
########################
# STANDBY WHEN STANDBY #
########################
fal_server=PRO
fal_client=PROSTDBY
db_file_name_convert='PRO','PROSTDBY'
log_file_name_convert='PRO','PROSTDBY'
standby_file_management=AUTO
###########################################
# Diagnostics and Statistics
###########################################
background_dump_dest=/opt/oracle/admin/PROSTDBY/bdump
core_dump_dest=/opt/oracle/admin/PROSTDBY/cdump
user_dump_dest=/opt/oracle/admin/PROSTDBY/udump
###########################################
# File Configuration
###########################################
control_files=("/opt/oracle/data/PROSTDBY/ctl/control01.ctl")
db_recovery_file_dest=/opt/oracle/data/PROSTDBY/recovery
db_recovery_file_dest_size=200M
###########################################
# Miscellaneous
###########################################
compatible=10.2.0.4.0
###########################################
# SGA Memory
###########################################
sga_target=300M
###########################################
# Security and Auditing
###########################################
remote_login_passwordfile=EXCLUSIVE
###########################################
# System Managed Undo and Rollback Segments
###########################################
undo_management=AUTO
undo_tablespace=UNDOTBS1 |