Skip to main content

Implementing DataGuard On Same Machine

Here I use:
Primary database name: primary
Standby database name: standby
Requirements:

1. Primary database should be in archive log mode:

-----------------------------------------------------------------------------------------------
2 Priamry database should be in force logging.

-----------------------------------------------------------------------------------------------
3. Create Password file for primary database.
orapwd file=/u01/app/oracle/product/10.2.0/db_1/dbs/orapw$ORACLE_SID.ora password=oracle entries=5
-----------------------------------------------------------------------------------------------
4. Ensure that the MAXLOGFILES value for the primary database is one more than twice the actual number of redo log groups in the primary database.
To check this run this sql query on primary database.
select records_used "Current Groups",records_total "Max Groups",
decode(sign(records_total-(records_used*2+1)),-1,LPAD('YES',21),LPAD('NO',21))
"Recreate MAXLOGFILES?"
from v$controlfile_record_section where type = 'REDO LOG';
If MAXLOGFILES value set as low we need to recreate control file to change this maxlogfiles value.
--------------------------------------------------------------------------------------------
5.Configuring Physical standby database:
Put primary database in mount stage. Create standby controlfile for physical standby database.
$ORACLE_SID=primary
$sqlplus “/as sysdba”
Sql>startup mount
Sql>alter database create standby controlfile as ‘/u01/app/oracle/oradata/standby/standby.ctl’
Sql>exit
Copy all primary database datafile,redologfiles,archive logfiles if any to standby database destination.
If primary database using spfile convert this spfile into pfile.
Sql>create pfile from spfile;
-----------------------------------------------------------------------------------------------
6.To configure physical standby database we have to edit the init file. What are all the parameters should be included in both primary and standby database init file listed below
Db_name=primary
db_unique_name=primary
LOG_ARCHIVE_CONFIG='DG_CONFIG=(primary, standby)'
LOG_ARCHIVE_DEST_1='location=/u01/app/oracle/oradata/primary/archive valid for=(ALL_LOGFILES,ALL_ROLES) db_unique_name=primary'
LOG_ARCHIVE_DEST_2='service=standby lgwr async affirm net_timeout=30valid_for=(ONLINE_LOGFILES,ALL_ROLES) db_unique_name=standby'
standby_archive_dest=/u01/app/oracle/oradata/primary/archive
log_archive_dest_state_1='ENABLE'
log_archive_dest_state_2='ENABLE'
fal_server=standby
fal_client=primary
db_file_name_convert='/u01/app/oracle/oradata/standby','/u01/app/oracle/oradata/primary/' log_file_name_convert='/u01/app/oracle/oradata/standby','/u01/app/oracle/oradata/primary/' STANDBY_FILE_MANAGEMENT=AUTO
Note: These are all the parameters should be included on primary and standby database while implementing the physical standby database.
-----------------------------------------------------------------------------------------------
7.This is the primary database init file:
db_name=primary
instance_name=primary
background_dump_dest='/u01/app/oracle/admin/primary/bdump'
user_dump_dest='/u01/app/oracle/admin/primary/udump'
control_files='/u01/app/oracle/oradata/primary/ctl1.dbf'
undo_management='auto'
sga_target=581506668
db_unique_name='primary'
LOG_ARCHIVE_CONFIG='DG_CONFIG=(primary,standby)'LOG_ARCHIVE_DEST_1='location=/u01/app/oracle/oradata/primary/archive valid_for=(ALL_LOGFILES,ALL_ROLES) db_unique_name=primary'
LOG_ARCHIVE_DEST_2='service=standby lgwr async affirm net_timeout=30valid_for=(ONLINE_LOGFILES,ALL_ROLES) db_unique_name=standby'
standby_archive_dest='/u01/app/oracle/oradata/primary/archive'
log_archive_dest_state_1='ENABLE'
log_archive_dest_state_2='ENABLE'
fal_server=standby
fal_client=primary
db_file_name_convert='/u01/app/oracle/oradata/standby','/u01/app/oracle/oradata/primary/'
log_file_name_convert='/u01/app/oracle/oradata/standby','/u01/app/oracle/oradata/primary/'
STANDBY_FILE_MANAGEMENT=AUTO
-----------------------------------------------------------------------------------------------
Here I marked as a red these parameter should be changed on standby init file and save like initstandby.ora in $ORACLE_HOME/dbs/ location.
db_name=primary
background_dump_dest='/u01/app/oracle/admin/standby/bdump'
user_dump_dest='/u01/app/oracle/admin/standby/udump'
control_files='/u01/app/oracle/oradata/standby/standby.ctl'
undo_management='auto'
sga_target=581506668
db_unique_name='standby'
LOG_ARCHIVE_CONFIG='DG_CONFIG=(primary,standby)'
LOG_ARCHIVE_DEST_1='location=/u01/app/oracle/oradata/standby/archive arch mandatoryvalid_for=(ONLINE_LOGFILES,ALL_ROLES) db_unique_name=standby'
LOG_ARCHIVE_DEST_2='service=standby lgwr sync affirm net_timeout=30valid_for=(ONLINE_LOGFILES,ALL_ROLES) db_unique_name=primary'
log_archive_dest_state_1='ENABLE'
log_archive_dest_state_2='ENABLE'
standby_archive_dest =/u01/app/oracle/oradata/standby/archive
fal_server=primary
fal_client=standby
db_file_name_convert='/u01/app/oracle/oradata/primary','/u01/app/oracle/oradata/standby/'
log_file_name_convert='/u01/app/oracle/oradata/primary','/u01/app/oracle/oradata/standby/' STANDBY_FILE_MANAGEMENT=AUTO
-----------------------------------------------------------------------------------------------
Configure tnsnames.ora and listener.ora file in $ORACLE_HOME/network/admin
Include the service name of standby database in tnsnames.ora file.


-------------------------------------------------------------------------------------------
Include the standby SID value in listener.ora file.

Now we configure everything to implement physical standby database.
-----------------------------------------------------------------------------------------------
9.Set ORACLE_SID in linux prompt
$ORACLE_SID=standby
-----------------------------------------------------------------------------------------------
10.Invoke sqlplus and connect to the standby database.
Sqlplus “/as sysdba”
Sql>startup nomount
Sql>alter database mount standby database;
Database altered.
Now standby database mounted and physical standby database is ready.
----------------------------------------------------------------------------------------------
Check the physical standby database is working or not:
On primary database switch the logfile.
On standby database execute this sql query to check whether it is archiving are not
select sequence#,first_time,next_time
from v$archived_log
order by sequence#
Now its working, redo is transferred on standby database. It will not apply to redo on standby database
----------------------------------------------------------------------------------------------
for this we need to run another command
Sql>recover managed standby database disconnect from session;
----------------------------------------------------------------------------------------------

If we want to stop redo apply run this commands
Sql>recover managed standby database cancel;
Sql>recover managed standby database cancel immediate;
Now successfully configure physical standby database.
------------------------------------End------------------------------------------------------




Comments

Unknown said…
Hi,

This is Really "Good Document" !!!

REgards,

NewBee to Dataguard.
Unknown said…
Hi Anna,

This document really helpful for implementing Data Guard on a same machine, I implementing from yours documents. thanks

Regards,

Jeevanandan.Chinnappan

Popular posts from this blog

ORA-20200 Error while running AWR report from PDB level

Issue: In 19c database, while generating AWR report from PDB level, got the below error.  In 12cR1 - We can only generate statistics and run the Workload Repository (AWR) report from CDB level.  Since 12.2, if we want to generate statistics and run AWR report from PDB level, we have to change  awr_pdb_autoflush_enabled parameter to TRUE. Error: ERROR at line 1: ORA-20200: Database/Instance 2832289441/1 does not exist in AWR_PDB_DATABASE_INSTANCE ORA-06512: at line 27 Solution: alter session set container=ORCL; >>>>   Set the container Name alter system set awr_pdb_autoflush_enabled=true; conn system/<pwd>@orclcdb     >>>> Login into PDB database alter system set AWR_SNAPSHOT_TIME_OFFSET=1000000 scope=both;   >>> Set the arameter to avoid performance issue while generating snapshot at the same time in CDB and PDB level. exec dbms_workload_repository.create_snapshot(); SQL> @?/rdbms/admin/awrrpt.sql Console Log: SQL> show pdbs       CON_ID CON

EBS 12.2 - Script to monitor JVM Heap Memory for the weblogic managed servers

#!/bin/sh # Script to monitor JVM Heap Memory for the managed servers # Author : Ramasubbu Sunadaravel # Date   : 23-Aug-2016 # Usage  : sh jvm_heap_mem_mon.sh run  ## VARIABLES save_date=`date +%d_%b_%y` LOGFILE=/export/home/applmgr/oraprocs/logs HISTFILE=/export/home/applmgr/oraprocs/histfile threshold=10 MAIL_LIST=rsundaravel@yahoo.com SCRIPT=/export/home/applmgr/oraprocs/.jvm_check.py ## SCRIPTS STARTS HERE . /r11/app/FLRPRD/R12apps/EBSapps.env . $FMW_HOME/wlserver_10.3/server/bin/setWLSEnv.sh java weblogic.WLST $SCRIPT > $LOGFILE/jvm_heap_monitoring.log date '+Start Time: %m/%d/%y %H:%M:%S' >> $HISTFILE/jvm_heap_monitoring_$save_date.log cat $LOGFILE/jvm_heap_monitoring.log|grep "%" >> $HISTFILE/jvm_heap_monitoring_$save_date.log date '+End Time: %m/%d/%y %H:%M:%S' >> $HISTFILE/jvm_heap_monitoring_$save_date.log #Alert DBA's if any of the managed server heap size reached more than $threshold value current=`

EBS 12.2 - Script to monitor Weblogic Managed servers

#!/bin/sh # Script to monitor Weblogic managed server status # Author : Ramasubbu Sunadaravel # Date   : 23-Aug-2016 . /r11/app/FLRPRD/R12apps/EBSapps.env ## VARIABLES ### LOGFILE=/export/home/applmgr/oraprocs/logs MAIL_LIST=rsundaravel@yahoo.com ADMIN_URL=http://test.domain.int:7014/console PARFILE=/export/home/applmgr/oraprocs/mgd_server_list.par ## - place all the managed servers name. WEBLOGIC_PWD = /export/home/applmgr/oraprocs/.weblogicpwd ## SCRIPT STARTS cat $PARFILE |while read line do managed_server=`echo $line | awk '{print $1}'` LOGFILE=/export/home/applmgr/oraprocs/logs echo $managed_server echo `cat $WEBLOGIC_PWD`|$ADMIN_SCRIPTS_HOME/admanagedsrvctl.sh status $managed_server|grep $managed_server|grep -v logs > $LOGFILE/$managed_server.log status=`cat $LOGFILE/$managed_server.log|grep "is running"|wc -l` if test $status -eq 1 then echo "$managed_server is Running" else echo "$managed