Primary Database 192.168.10.180 Standby Database 192.168.10.13 1) Creating parameter file for the standby server. 1.1) On primary execute sql>create pfile='/tmp/init.ora' from spfile; 1.2) Edit the /tmp/init.ora for the following *.db_unique_name='phildupstd' *.db_file_name_convert='/<path of datafiles on old server>', ' new datafile directory on newserver' *.log_file_name_conver='/<path of logfile on old server>', ' new logfile directory on newserver' *.control_files='<path to control file location>' etc 2) Start the standby server instance in no-mount mode. Keep the same password for the both the service, using orapwd utility, or copy the password file from primary to standby server. sql>startup nomount pfile='location to the modified pfile i.e init.ora' 3) Configure the listeners and tnsnames.ora as following. Listener Config on Primary SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = phildup) (GLOBAL_DBNAME = phildup_DGMRGL ) (ORACLE_HOME = G:\app\CW.D\product\11.2.0\dbhome_1) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.180)(PORT = 1521)) ) ) tnsname.ora on primay phildup = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.180)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = phildup) ) ) phildupstd = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.13)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = phildup) ) ) Listener on Standby SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = phildup) (ORACLE_HOME = D:\app\one\product\11.2.0\dbhome_2) ) (SID_DESC = (SID_NAME = phildup) (GLOBAL_DBNAME = phildupstd_DGMGRL) (ORACLE_HOME = D:\app\one\product\11.2.0\dbhome_2) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.13)(PORT = 1521)) ) ) tnsnames.ora on standby phildup = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.180)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = phildup) ) ) phildupstd = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.13)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = phildup) ) ) 4) Connect using rman as following cmd>rman target sys/phildup@phildup auxiliary sys/phildup@phildupstd Recovery Manager: Release 11.2.0.1.0 - Production on Fri Nov 5 15:38:56 2010 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. connected to target database: phildup (DBID=12352317) connected to auxiliary database: phildup (not mounted) execute command as follows RMAN> run { 2> allocate channel primary type disk; 3> allocate auxiliary channel standby type disk; 4> duplicate target database for standby from active database 5> ; 6> } Thats it, duplication of standby is done. Now we will configure the dataguard setup. On primary sql>alter system set log_archive_dest_2='service=phildupstd'; sql>alter system set log_archive_dest_2_state=enable; check the latest log archive on standby. sql> select max(sequence#) from v$archived_log; Now Broker configuration. On primary and standy enable broker configuration sql>alter system set dg_broker_start=true scope=both; Modify the listener config file to include the GLOBAL_DBNAME, as seen in above listener config file. # dgmgrl sys/oracle DGMGRL for Linux: Version 11.2.0.1.0 - Production Copyright (c) 2000, 2009, Oracle. All rights reserved. Welcome to DGMGRL, type "help" for information. Connected. DGMGRL> create configuration dgphildup as primary database is phildup connect identifier is phildup; Configuration "dgphildup" created with primary database "phildup" DGMGRL> add database phildup as connect identifier is phildupstd maintained as physical; Database "phildup" added DGMGRL> show configuration; Configuration - dgphildup Protection Mode: MaxPerformance Databases: phildup - Primary database phildupstd - Physical standby database Fast-Start Failover: DISABLED Configuration Status: DISABLED DGMGRL> enable configuration; Enabled DGMGRL> enable database neo; Enabled. After enable the broker you could just issue following command to do the switchover. >dgmgrl sys/phildup DGMGRL for Linux: Version 11.2.0.1.0 - Production Copyright (c) 2000, 2009, Oracle. All rights reserved. Welcome to DGMGRL, type "help" for information. Connected. DGMGRL> switchover to phildupstd DGMGRL>switchover to phildup Performing switchover NOW, please wait... New primary database "phildup" is opening... Operation requires shutdown of instance "phildup" on database "phildup" Shutting down instance "phildup"... ORA-01109: database not open Database dismounted. ORACLE instance shut down. Operation requires startup of instance "phildup" on database "phildup" Starting instance "phildup"... ORACLE instance started. Database mounted. Switchover succeeded, new primary is "phildupstd. ===================Another Straight Forward Command==================== RMAN>DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE 1>NOFILENAMECHECK 2>DORECOVER 3>SPFILE 4>SET DB_UNIQUE_NAME='phildupstd' 5>SET LOG_ARCHIVE_DEST_2='SERVICE=phildup LGWR SYNC REGISTER VALID_FOR=(online_logfile,primary_role)' 6>SET STANDBY_FILE_MANAGEMENT='AUTO' 7>SET CONTROL_FILES='~/path to control files locatin' 8>SET DB_FILE_NAME_CONVERT '~\new path to datafiles' 9>SET LOG_FILE_NAME_CONVERT '~\new path to logfiles' ; DORECOVER – This commands starts
recovery after restoration NOFILENAMECHECK – RMAN does
not validate the filenames during restoration. |