Create 11g Standby (single node or RAC primary, single node standby) Example node names: prmdb[ab] as primary, stbdb as standby. Assume both have +DATA and +FRA diskgroups. 1. Make sure primary can connect to standby as sys sqlplus sys/password@oracpsb as sysdba and standby can connect to primary as sys sqlplus sys/password@oracp as sysdba To do that, on primary, add ORACP10SB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = stbdb.example.com)(PORT = 1521)) (CONNECT_DATA = (SID = oracpsb) ) ) to /network/admin/admin/tnsnames.ora, on all nodes if RAC. On standby, add ORACP10 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = d1prvscan10.example.com)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = oracp) ) ) both ASM (i.e. grid) home and DB home network/admin/tnsnames.ora. On standby, add SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db) (SID_NAME = oracpsb) ) ) to /network/admin/listener.ora and bounce listener (using +ASM, not DB, as environment). On primary, scp /dbs/orapw$ORACLE_SID :/dbs On standby, mv the password file to match standby SID, e.g., mv orapworacp1 orapworacpsb. (If standby is RAC, you can choose to have the same SID as primary and no need to mv.) 2. Prepare primary alter system set fal_client = 'oracp'; alter system set fal_server = 'oracpsb'; alter system set log_archive_config = 'dg_config=(oracp,oracpsb)'; alter system set log_archive_dest_2 = 'service=oracpsb valid_for=(online_logfiles,primary_role) db_unique_name=oracpsb'; alter system set log_archive_dest_state_2 = defer; <-- just for now alter system set standby_file_management = auto; show parameter spfile create pfile='/tmp/init.ora' from spfile=''; scp /tmp/init.ora 3. Prepare standby cd $ORACLE_HOME/dbs mv init.ora init.ora Edit the file (prepend *. to param names if RAC): remove cluster_database=true (unless it's RAC) reduce SGA and db_cache_size add db_unique_name='oracpsb' change fal_client and fal_server, e.g.: fal_client='oracpsb', fal_server='oracp' change log_archive_dest_[12], e.g.: log_archive_dest_1='LOCATION=+FRA' log_archive_dest_2='service=oracp async valid_for=(online_logfile,primary_role) db_unique_name=oracp' sqlplus / as sysdba startup nomount 4. Create standby On primary rman target / auxiliary sys/password@oracpsb RMAN> duplicate target database for standby from active database nofilenamecheck; If it complains about tape channel, force to use disk channel. If it complains about missing a regular channel, add a disk channel: run { allocate channel disk1 device type disk; allocate auxiliary channel disk2 device type disk; duplicate target database for standby from active database nofilenamecheck; } Can add more channels if the server has many CPUs. If there's error not resolving the TNS name or invalid username/password, after checking anything obvious, try * changing the single / to sys/password@ * explicitly specifying nocatalog (even though it's default) * making sure sys account is open. 5. Finish up On standby: alter database recover managed standby database disconnect; On primary: alter system set log_archive_dest_state_2 = enable; alter system switch logfile; <-- if RAC, do it on the instance the standby is waiting for, shown in standby alert.log or v$managed_standby Standby alert.log should show a line beginning like 'Media Recovery Log +FRA/oracpsb/archivelog/...' On primary and standby: alter database add standby logfile ('+DATA','+FRA') size ; Run it multiple times so the count matches regular logfile groups On primary: alter database force logging;