PRIMARY DBNAME: DBTST UNIQUE NAME: DBTST HOST : DEVPRMRY
STANDBY DBNAME: DBTST UNIQUE NAME: DBSTY HOST : DEVSTDBY
PRIMARY
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/u02/oradata/DBTST/system01.dbf
/u02/oradata/DBTST/sysaux01.dbf
/u02/oradata/DBTST/undotbs01.dbf
/u02/oradata/DBTST/users01.dbf
SQL> select name from v$controlfile ;
NAME
--------------------------------------------------------------------------------
/u02/oradata/DBTST/control01.ctl
/u03/fast_recovery_area/DBTST/control02.ctl
SQL> column SUBSTR(MEMBER,1,60) format A50
select group#, status, type, substr(member,1, 60) from v$logfile order by group#, member;
SQL>
GROUP# STATUS TYPE SUBSTR(MEMBER,1,60)
---------- ------- ------- --------------------------------------------------
1 ONLINE /u02/oradata/DBTST/redo01.log
2 ONLINE /u02/oradata/DBTST/redo02.log
3 ONLINE /u02/oradata/DBTST/redo03.log
SQL> SELECT log_mode FROM v$database;
LOG_MODE
------------
ARCHIVELOG
SQL> ALTER DATABASE FORCE LOGGING;
Database altered.
SQL> show parameter db_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string DBTST
SQL> show parameter db_unique_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_unique_name string DBTST
SQL>
SQL> ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(DBTST,DBSTY)';
System altered.
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=DBSTY NOAFFIRM ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DBSTY';
System altered.
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;
System altered.
SQL> ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='%t_%s_%r.arc' SCOPE=SPFILE;
System altered.
SQL> ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=30;
System altered.
SQL> ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SCOPE=SPFILE;
System altered.
In addition to the previous setting, it is recommended to make sure the primary is ready to switch roles to become a standby. For that to work properly we need to set the following parameters. Adjust the *_CONVERT parameters to account for your filename and path differences between the servers.
SQL> ALTER SYSTEM SET FAL_SERVER=DBSTY;
System altered.
SQL> ALTER SYSTEM SET DB_FILE_NAME_CONVERT='DBSTY','DBTST' SCOPE=SPFILE;
System altered.
SQL> ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='DBSTY','DBTST' SCOPE=SPFILE;
System altered.
SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
System altered.
TNSNAMES.ORA****
DBTST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DEVPRMRY.fcicanada.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DBTST)
)
)
DBSTY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DEVSTDBY.fcicanada.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DBTST)
)
)
BACKUP PRIMARY DATABASE
-----------------------
run
{
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO COMPRESSED BACKUPSET;
allocate channel c1 DEVICE TYPE DISK MAXPIECESIZE = 5G;
backup full format "/home/oracle/%d_DB_%u_%s_%p" database plus archivelog ;
copy current controlfile to "/home/oracle/STDBY_control.ctl";
}
SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/home/oracle/DBTST.ctl';
Database altered.
SQL> CREATE PFILE='/home/oracle/initDBSTY.ora' from spfile;
File created.
CREATE PASSWORD FILE
--------------------
[oracle@DEVPRMRY dbs]$ orapwd file=$ORACLE_HOME/dbs/orapwDBTST password=oracle
******scp $ORACLE_HOME/dbs/orapwDBTST oracle@192.168.1.171:$ORACLE_HOME/dbs/orapwDBSTY
restart database standby
Amend the PFILE making the entries relevant for the standby database
---------------------------------------------------------------------
*.db_unique_name='DBSTY'
*.fal_server='DBTST'
*.log_archive_dest_2='SERVICE=DBTST ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DBTST'
Create the necessary directories on the standby server *****
[oracle@DEVSTDBY ~]$ mkdir -p /u01/app/oracle/admin/DBTST/adump
[oracle@DEVSTDBY ~]$ mkdir -p /u02/oradata/DBTST/
[oracle@DEVSTDBY ~]$ mkdir -p /u03/fast_recovery_area
[oracle@DEVSTDBY ~]$ mkdir -p /u03/fast_recovery_area/DBTST/
# Standby controlfile to all locations.
[oracle@DEVPRMRY ~]$ scp /home/oracle/DBTST.ctl oracle@192.168.1.171:/u02/oradata/DBTST/control01.ctl
STDBY_control.ctl 100% 9520KB 9.3MB/s 00:00
[oracle@DEVPRMRY ~]$ scp /home/oracle/DBTST.ctl oracle@192.168.1.171:/u03/flash_recovery_area/DBTST/control02.ctl
STDBY_control.ctl 100% 9520KB 9.3MB/s 00:00
# Archivelogs and backups
[oracle@DEVPRMRY ~]$ scp DBTST_DB_01qm8m5e_1_1 oracle@192.168.1.171:/u03/flash_recovery_area/DBTST/
DBTST_DB_01qm8m5e_1_1 100% 268MB 29.8MB/s 00:09
[oracle@DEVPRMRY ~]$ scp DBTST_DB_02qm8m75_2_1 oracle@192.168.1.171:/u03/fast_recovery_area/DBTST/
DBTST_DB_02qm8m75_2_1 100% 1072KB 1.1MB/s 00:00
# Parameter file.
[oracle@DEVPRMRY ~]$ !
initDBTY.ora 100% 969 1.0KB/s 00:00
# Remote login password file.
[oracle@DEVPRMRY ~]$ scp $ORACLE_HOME/dbs/orapwDBTST oracle@192.168.1.171:$ORACLE_HOME/dbs/
orapwDBTST 100% 1536 1.5KB/s 00:00
[oracle@DEVSTDBY ~]$ export ORACLE_SID=DBSTY
[oracle@DEVSTDBY ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Sat Nov 14 16:52:43 2015
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to an idle instance.
SQL> CREATE SPFILE FROM PFILE='$ORACLE_HOME/dbs/initDBSTY.ora';
File created.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 768294912 bytes
Fixed Size 2257192 bytes
Variable Size 503320280 bytes
Database Buffers 260046848 bytes
Redo Buffers 2670592 bytes
Database mounted.
SQL> exit
Disconnected from Oracle Database 11g Release 11.2.0.4.0 - 64bit Production
[oracle@DEVSTDBY ~]$ rman target /
Recovery Manager: Release 11.2.0.4.0 - Production on Sat Nov 14 16:54:02 2015
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: DBTST (DBID=3112393672, not open)
RMAN> restore database;
Starting restore at 14-NOV-15
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00001 to /u02/oradata/DBTST/system01.dbf
channel ORA_DISK_1: restoring datafile 00002 to /u02/oradata/DBTST/sysaux01.dbf
channel ORA_DISK_1: restoring datafile 00003 to /u02/oradata/DBTST/undotbs01.dbf
channel ORA_DISK_1: restoring datafile 00004 to /u02/oradata/DBTST/users01.dbf
channel ORA_DISK_1: reading from backup piece /u03/fast_recovery_area/DBTST/DBTST_DB_01qm8m5e_1_1
channel ORA_DISK_1: piece handle=/u03/fast_recovery_area/DBTST/DBTST_DB_01qm8m5e_1_1 tag=TAG20151114T163910
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:02:19
Finished restore at 14-NOV-15
RMAN>recover database;
sql>
Create online redo logs for the standby
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=MANUAL;
ALTER DATABASE ADD LOGFILE ('/u02/oradata/DBTST/redo01.log') SIZE 50M;
ALTER DATABASE ADD LOGFILE ('/u02/oradata/DBTST/redo02.log') SIZE 50M;
ALTER DATABASE ADD LOGFILE ('/u02/oradata/DBTST/redo03.log') SIZE 50M;
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
In addition to the online redo logs, you should create standby redo logs on both the standby and the primary database
ALTER DATABASE ADD STANDBY LOGFILE ('/u02/oradata/DBTST/standby_redo01.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE ('/u02/oradata/DBTST/standby_redo02.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE ('/u02/oradata/DBTST/standby_redo03.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE ('/u02/oradata/DBTST/standby_redo04.log') SIZE 50M;
Start Apply Process
-------------------
Start the apply process on standby server.
>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
If you need to cancel the apply process, issue the following command.
>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
ALTER DATABASE ADD STANDBY LOGFILE ('/u02/oradata/DBTST/standby_redo01.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE ('/u02/oradata/DBTST/standby_redo02.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE ('/u02/oradata/DBTST/standby_redo03.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE ('/u02/oradata/DBTST/standby_redo04.log') SIZE 50M;
rm /u02/oradata/DBTST/standby_redo01.log
rm /u02/oradata/DBTST/standby_redo02.log
rm /u02/oradata/DBTST/standby_redo03.log
rm /u02/oradata/DBTST/standby_redo04.log
NOTES:
check trace files
check alertlog
check listenerlog
above example:
*****************************************************************
.BASH_PROFILE -DBSTY
-------------
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
export ORACLE_HOSTNAME=DEVSTDBY.FCICANADA.COM
export ORACLE_UNQNAME=DBSTY
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=DBSTY
PATH=/usr/sbin:$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;
alias cd2b='cd $ORACLE_BASE'
alias cd2h='cd $ORACLE_HOME'
alias tns='cd $ORACLE_HOME/network/admin'
alias envo='env | grep ORACLE'
umask 022
.BASH_PROFILE -DBTST
-------------
[oracle@DEVPRMRY ~]$ more .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
export ORACLE_HOSTNAME=DEVPRMRY.FCICANADA.COM
export ORACLE_UNQNAME=DBTST
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=DBTST
PATH=/usr/sbin:$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;
alias cd2b='cd $ORACLE_BASE'
alias cd2h='cd $ORACLE_HOME'
alias tns='cd $ORACLE_HOME/network/admin'
alias envo='env | grep ORACLE'
umask 022
*********************************************************************
listener.ora
-------------
[oracle@DEVPRMRY dbs]$ more /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = DBTST)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME = DBTST)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DEVPRMRY.fcicanada.com)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /u01/app/oracle
[oracle@DEVPRMRY dbs]$
[oracle@DEVSTDBY DBTST]$ more /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
INBOUND_CONNECT_TIMEOUT_LISTENER = 0
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = DBSTY)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME = DBTST)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DEVSTDBY.fcicanada.com)(PORT = 1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
ADR_BASE_LISTENER = /u01/app/oracle
[oracle@DEVSTDBY DBTST]$
---------------------------------------------------------------------------------
TNSNAMES.ORA
-------------
[oracle@DEVSTDBY DBTST]$ more /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
DBTST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DEVPRMRY.fcicanada.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DBTST)
)
)
DBSTY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DEVSTDBY.fcicanada.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DBTST)
)
)
[oracle@DEVSTDBY DBTST]$
[oracle@DEVPRMRY dbs]$ more /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
DBTST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DEVPRMRY.fcicanada.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DBTST)
)
)
DBSTY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DEVSTDBY.fcicanada.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DBTST)
)
)
[oracle@DEVPRMRY dbs]$
------------------------------------------------------------------------------------------------------
PROTECTION MODE
---------------
SELECT protection_mode FROM v$database;
PROTECTION_MODE
--------------------
MAXIMUM PERFORMANCE
SQL>
-- Maximum Availability.
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=db11g_stby AFFIRM SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB11G_STBY';
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE AVAILABILITY;
-- Maximum Performance.
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=db11g_stby NOAFFIRM ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB11G_STBY';
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;
-- Maximum Protection.
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=DBSTY AFFIRM SYNC mandatory REOPEN=5 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DBSTY';
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PROTECTION;
ALTER DATABASE OPEN;
*****************DGMGRL SETUP STEPS ******************************************
------------------------------------------------------------------------------
1. PRIMARY
SQL> alter system set dg_broker_config_file1='/u01/app/oracle/product/11.2.0/dbhome_1/dbs/dr1dbtst.dat' sid='*';
System altered.
SQL> alter system set dg_broker_config_file2='/u01/app/oracle/product/11.2.0/dbhome_1/dbs/dr2dbtst.dat' sid='*';
System altered.
SQL> alter system set dg_broker_start=true sid='*';
System altered.
Add to primary listener
(SID_DESC =
(GLOBAL_DBNAME = DBTST_DGMGRL)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME = DBTST)
)
2 . standby
SQL> alter system set dg_broker_start=false sid='*';
System altered.
SQL> alter system set dg_broker_config_file1='/u01/app/oracle/product/11.2.0/dbhome_1/dbs/dr1dbsty.dat' sid='*';
System altered.
SQL> alter system set dg_broker_config_file2='/u01/app/oracle/product/11.2.0/dbhome_1/dbs/dr2dbsty.dat' sid='*';
System altered.
SQL> alter system set dg_broker_start=true sid='*';
System altered.
SQL>
Add to standby listener
(SID_DESC =
(GLOBAL_DBNAME = DBSTY_DGMGRL)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME = DBTST)
)
3. Create the broker configuration including a profile for the primary database.
DGMGRL> CREATE CONFIGURATION 'DGCONFIG' AS Primary Database is 'DBTST' Connect identifier is DBTST;
Configuration "DGCONFIG" created with primary database "DBTST"
DGMGRL> SHOW CONFIGURATION;
Configuration - DGCONFIG
Protection Mode: MaxPerformance
Databases:
DBTST - Primary database
Fast-Start Failover: DISABLED
Configuration Status:
DISABLED
DGMGRL> show database DBTST
Object "dbtst" was not found
DGMGRL> show database 'DBTST'
Database - DBTST
Role: PRIMARY
Intended State: OFFLINE
Instance(s):
DBTST
Database Status:
DISABLED
DGMGRL>
4. DGMGRL> add database 'DBSTY' as connect identifier is DBSTY;
Database "DBSTY" added
DGMGRL> ENABLE CONFIGURATION;
Enabled.
DGMGRL> SHOW CONFIGURATION;
Configuration - DGCONFIG
Protection Mode: MaxPerformance
Databases:
DBTST - Primary database
Warning: ORA-16789: standby redo logs not configured
DBSTY - Physical standby database
Warning: ORA-16789: standby redo logs not configured
Fast-Start Failover: DISABLED
Configuration Status:
WARNING
DGMGRL>
----------------------------------------------------
Warning: ORA-16789: standby redo logs not configured
----------------------------------------------------
add standby redo logs to primary
ALTER DATABASE ADD STANDBY LOGFILE ('/u02/oradata/DBTST/standby_redo01.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE ('/u02/oradata/DBTST/standby_redo02.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE ('/u02/oradata/DBTST/standby_redo03.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE ('/u02/oradata/DBTST/standby_redo04.log') SIZE 50M;