Standby Database Changes: OMF
ORACLE_SID
Ensure oracle user .bashrc has ORACLE_SID=oradb_sb
.
Pfile Actions
cp /u01/rman/oradb_sb.pfile /tmp/oradb_sb.pfile gedit /tmp/oradb_sb.pfile -- Remove oradb1.__ header entries. -- Add *.db_unique_name=oradb_sb -- Change *.audit_file_dest=/u01/app/oracle/admin/oradb_sb/adump *.control_files= '/u01/oradata/ORADB_SB/controlfile/o1_mf_dxt66yjq_.ctl', '/u02/oradata/ORADB_SB/controlfile/o1_mf_dxt66ykb_.ctl *.local_listener='' *.log_archive_dest_1='LOCATION=/u01/oradata/ORADB_SB/onlinelog/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=oradb_sb' *.log_archive_dest_2='SERVICE=oradb ASYNC NOAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=oradb' *.fal_client=oradb_sb *.fal_server=oradb *.db_file_name_convert='ORADB','ORADB_SB' *.log_file_name_convert='ORADB','ORADB_SB'
Example Pfile if Primary is RAC\ASM and Standby is a Standalone database.
If Primary is a RAC and SB will be a Standalone, remove these type entries:
*family:dw_helper.instance_mode='read-only' *.cluster_database=true oradb1.instance_number=1 oradb2.instance_number=2 oradb2.thread=2 oradb1.thread=1 oradb1.undo_tablespace='UNDOTBS1' oradb2.undo_tablespace='UNDOTBS2'
Copy Password File
cp /u01/rman/orapworadb $ORACLE_HOME/dbs/ cp /u01/rman/orapworadb $ORACLE_HOME/dbs/orapworadb_sb
- Note the destination name is changed to the SB's DB_UNIQUE_NAME for 2nd copy.
Startup Nomount SB
With ORACLE_SID set to primary SID:
sqlplus / as sysdba SQLPlus> startup nomount pfile='/tmp/oradb_sb.pfile';
Start Listener on SB
oracle> lsnrctl start
Test Connectivity
sqlplus sys/go@oradb as sysdba SQL> SELECT instance_name FROM v$instance; sqlplus sys/go@oradb_sb as sysdba SQL> SELECT instance_name FROM v$instance;
RMAN Restore to Create Standby DB
rman target=sys/go@oradb auxiliary=/ connected to target database: ORADB (DBID=nnnnnnnnnn) connected to auxiliary database: ORADB (not mounted) RMAN> DUPLICATE TARGET DATABASE FOR STANDBY NOFILENAMECHECK; sqlplus sys/go@oradb_sb as sysdba SQLPlus> alter database recover managed standby database disconnect from session;
Mount DB
create spfile from pfile='/tmp/oradb_sb.pfile'; startup mount force; alter database recover managed standby database disconnect from session;
The recover managed standby command will have to be issued manually each SB database start\mount until you have configured the broker.
Enable Log Transmission
Primary alter system set log_archive_dest_state_2=ENABLE;
QC
SB tail -f /u01/app/oracle/diag/rdbms/oradb_sb/oradb_sb/trace/alert_oradb_sb.log Both COL database_role FORMAT a20 COL db_unique_name FORMAT a15 COL instance FORMAT a15 COL open_mode FORMAT a15 COL protection_level FORMAT a25 COL switchover_status FORMAT a15 SELECT database_role, db_unique_name Instance, open_mode, protection_level, switchover_status FROM V$DATABASE; Primary archive log list SB SELECT process,thread#,sequence#,status FROM v$managed_standby WHERE process='MRP0'; PROCESS THREAD# SEQUENCE# STATUS --------- ---------- ---------- ------------ MRP0 1 233 WAIT_FOR_LOG Issue Cmds from Primary but Monitor log on SB alter system switch logfile; archive log list Both (MAX(SEQUENCE#)) Should Match SELECT MAX(SEQUENCE#), THREAD# FROM V$ARCHIVED_LOG WHERE RESETLOGS_CHANGE# = (SELECT MAX(RESETLOGS_CHANGE#) FROM V$ARCHIVED_LOG) GROUP BY THREAD#; If you do not see headings\values for SEQUENCE# & THREAD# your password file on SB may not be right.
APPENDIX
Pfile Example for SB: Primary RAC\ASM & SB Standalone Database
Some lines split to make them easier to read.
- cp /u01/rman/oradb_sb.pfile /tmp/oradb_sb.pfile
- gedit /tmp/oradb_sb.pfile
*.audit_file_dest='/u01/app/oracle/admin/oradb_sb/adump' *.audit_trail='db' *.compatible='12.1.0.2.0' *.control_files= '/u01/oradata/oradb_sb/controlfile/current.257.979813477', '/u02/oradata/oradb_sb/controlfile/current.258.979813477' *.db_block_size=8192 *.db_domain='' *.db_name='oradb' *.db_recovery_file_dest_size=10g *.db_unique_name=oradb_sb *.diagnostic_dest='/u01/app/oracle' *.dispatchers='(PROTOCOL=TCP) (SERVICE=oradbXDB)' *.fal_client='oradb_sb' *.fal_server='oradb' *.local_listener='' *.log_archive_config='DG_CONFIG=(oradb,oradb_sb)' *.log_archive_dest_1='LOCATION=/u01/oradata/ORADB_SB/onlinelog/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=oradb_sb' *.log_archive_dest_2='SERVICE=oradb ASYNC NOAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=oradb' *.log_archive_format='%t_%s_%r.arc' *.open_cursors=300 *.pga_aggregate_target=256m *.processes=300 *.remote_login_passwordfile='EXCLUSIVE' *.sga_target=1580m *.standby_file_management='AUTO' *.undo_tablespace='UNDOTBS1' # *.db_create_file_dest='/u01/oradata/' *.db_recovery_file_dest='/u02/oradata/' *.db_file_name_convert='+DATA/ORADB/DATAFILE/','/u01/oradata/ORADB_SB/datafile/', '+DATA/ORADB/TEMPFILE/','/u01/oradata/ORADB_SB/datafile/' *.log_file_name_convert= '+FRA/ORADB/ONLINELOG/','/u02/oradata/ORADB_SB/onlinelog/'
Sweep $ORACLE_HOME/dbs
rm -f $ORACLE_HOME/dbs/*.dat