You are on page 1of 9

Bookmark

Fixed font

Doc ID: Note:201669.1


Subject:Setup and maintenance of Data
Guard Broker using DGMGRL
Type: BULLETIN
Status: PUBLISHED

Go to End
Content
Type:
Creation
Date:
Last
Revision
Date:

TEXT/PLAIN
01-JUL-2002
27-OCT-2004

There is currently no automate way to invoke the Failover Procedure. The Problem is that
there is no exact Definition at which Point we should invoke the Failover. For example if
there is a Network outage between Primary and Standby Database, the Standby may consider
the Primary as down and invoke Failover by Fault. Using DGMGRL or DG Manager Failover is
simplyfied down to a single Command, but the start of this Procedure needs to be exec
uted
manually.

PURPOSE
------Oracle9i Data Guard Broker documentation explains how to set up
a Disaster Recovery Configuration (DRC) by using Oracle Enterprise
Manager (OEM).
This paper is intended to provide the following:
1. a brief overview of Oracle9i Data Guard Broker.
2. instructions on implementing DRC by using a command line utility,
called DGMRGL.
3. an overview of common maintenance operations
4. an example on debugging a typical erroneous situation
The examples are from a Windows environment but are also applicable
for UNIX.
SCOPE & APPLICATION
------------------Oracle9i DBA community

1. OVERVIEW OF ORACLE9i DATA GUARD BROKER


----------------------------------------Oracle9i Data Guard Broker is composed of following components:
[a] A graphical Data Guard Manager utility that supports managing
or monitoring the databases in a DRC. This GUI is part of OEM and
requires an Intelligent Agent (IA). The GUI tool provides a wizard
that can create a standby database with minimum user interaction.
[b] A command line utility, called DGMGRL, that provides similar
functionality (except the wizard) to create standby databases.
[c] One background process, called Data Guard Broker or DMON, per
database in a DRC.
All DMON processes in a DRC communicate with each other and act as
executors of the Data Guard Manager commands. The following dynamic
init.ora parameters should be set to TRUE in order to start the
DMON process:
- DRS_START (Oracle8i, 9.0.1)
- DG_BROKER_START (Oracle 9.2)
Like other background processes, DMON process maintains a log file,
named drc$ORACLE_SID.log, in BACKGROUND_DUMP_DEST.
[d] A DRC repository used by all DMON processes. The repository
is made up of following two files:
- UNIX: $ORACLE_HOME/dbs/dr1$ORACLE_SID.dat and
$ORACLE_HOME/dbs/dr2$ORACLE_SID.dat
- Windows: %ORACLE_HOME%\DATABASE\DR1%ORACLE_SID%.DAT and
%ORACLE_HOME%\DATABASE\DR2%ORACLE_SID%.DAT
In Oracle 9.2, it is possible to reposition these files via init.ora
parameters DG_BROKER_CONFIG_FILE1 and DG_BROKER_CONFIG_FILE2.
2. COMMAND LINE SETUP OF ORACLE DATA GUARD BROKER 9i
---------------------------------------------------2.1. Pre-requisites
------------------In order to use DGMGRL, the following should be done manually:

[a] Create standby databases manually as per [NOTE:180031.1]


Creating a Data Guard Configuration.
[b] Use SPFILE instead of PFILE for all databases. This is required
since all necessary init.ora parameters are dynamically changed via
command 'ALTER SYSTEM SET'.
[c] Use remote password files. This is required since DGMGRL needs
to connect remotely as SYSDBA in order to perform certain actions.
[d] Add standby redo logs in case you want to put the DRC in
MaxProtection or MaxAvailability mode.
Create at least one standby redo log on the standby database with
the same size as on the primary database by using the following
command:
ALTER DATABASE ADD STANDBY LOGFILE
'<Full path of standby redo log file>' SIZE <size>;
[e] Start all databases in a DRC in nomount state. Also, start the
listeners needed for the log archive transport.
[f] Start the DMON process on each database by setting dynamic
init.ora DRS_START (Oracle8i, 9.0.1) or DG_BROKER_START (Oracle9.2)
to TRUE.
2.2. Setup of the DRC configuration
----------------------------------=> Set ORACLE_SID to the primary database and connect via DGMGRL
C:\>dgmgrl
DGMGRL for 32-bit Windows: Version 9.2.0.1.0 - Production.
(c) Copyright 2002 Oracle Corporation. All rights reserved.
Welcome to DGMGRL, type "help" for information.
DGMGRL> connect sys/oracle
Connected.
=> Create a new DRC and define a primary site
DGMGRL> create configuration 'V920_DRC' as
> Primary site is 'prim_site'

> Resource is 'prim_db'


> Hostname is 'HOST1'
> Instance name is 'V920'
> Service name is 'R920'
> Site is maintained as physical;
Configuration "V920_DRC" added with primary site "prim_site"
Database resource "prim_db" added.
=> Define one or more standby sites
DGMGRL> create site 'standby_site'
> Resource is 'standby_db'
> Hostname is 'HOST2'
> Instance name is 'V920STBY'
> Service name is 'R920STBY'
> Site is maintained as PHYSICAL;
Site "standby_site" added to configuration.
Database resource "standby_db" added.
NOTE: The following must be observed when setting up the
configuration:
* The Hostname and Instance name values must be the
same as values displayed in v$instance on the respective
primary and standby instances.
* The Service name should be the Net alias defined in the
tnsnames.ora. This will then be used to configure the
fal_server, fal_client, and log_archive_dest_n parameters
and provides the communication path between the primary
broker and standby broker processes (DMON). This alias
should exist on both standby and primary tnsnames.ora files.
=> View DRC
DGMGRL> show configuration
Configuration 'V920_DRC' is
Primary Site is 'prim_site'
Standby Site is 'standby_site'
Current status for "V920_DRC":
DISABLED
=> Enable DRC. Review alert.log files of all databases as well as
the log file for DMON processes. The databases are opened or mounted
as needed.

DGMGRL> enable configuration;


Enabled.
DGMGRL> show configuration
Configuration 'V920_DRC' is
Primary Site is 'prim_site'
Standby Site is 'standby_site'
Current status for "V920_DRC":
SUCCESS
=> View information about all sites in DRC
DGMGRL> show site verbose 'prim_site';
Site
Name:
'prim_site'
Hostname:
'HOST1'
Instance name:
'V920'
Service Name:
'R920'
Standby Type:
'physical'
Number Built-in Processes: '2'
Number Generic Processes: '0'
Enabled:
'yes'
Required:
'yes'
Default state:
'PRIMARY'
Intended state:
'PRIMARY'
PFILE:
''
Number of resources: 1
Resources:
Name: prim_db (default) (verbose name='prim_db')
Current status for "prim_site":
SUCCESS
=> View information about all resources in DRC
DGMGRL> show resource verbose 'prim_db';
Resource
Name:
prim_db
Manager Type: internal
Standby Type: PHYSICAL
Online States:
ONLINE
PHYSICAL-APPLY-READY
PHYSICAL-APPLY-ON
READ-ONLY
LOGICAL-APPLY-READY
LOGICAL-APPLY-ON

READ-WRITE
READ-WRITE-XPTON
Properties:
INTENDED_STATE
= 'READ-WRITE-XPTON'
ENABLED
= 'yes'
IGNORE_STATUS
= 'no'
LogXptMode
= 'ARCH'
Dependency
= ''
Alternate
= ''
DelayMins
= '0'
Binding
= 'OPTIONAL'
MaxFailure
= '0'
ReopenSecs
= '300'
AsyncBlocks
= '2048'
LogShipping
= 'ON'
ApplyNext
= '0'
ApplyNoDelay
= 'NO'
ApplyParallel
= '1'
StandbyArchiveDest
= 'd:\oracle\oradata\V920\standby'
LogArchiveTrace
= '0'
StandbyFileManagement
= 'AUTO'
ArchiveLagTarget
= '0'
LogArchiveMaxProcesses
= '2'
LogArchiveMinSucceedDest
= '1'
DbFileNameConvert
= 'stby , v920 '
LogFileNameConvert
= 'stby , v920 '
LogArchiveFormat
= 'ARC%S.%T'
InconsistentProperties
= '(monitor)'
InconsistentLogXptProps
= '(monitor)'
SendQEntries
= '(monitor)'
LogXptStatus
= '(monitor)'
SbyLogQueue
= '(monitor)'
Properties for 'PRIMARY' state:
DEFAULT_STATE = 'READ-WRITE-XPTON'
EXPLICIT_DISABLE = 'no'
REQUIRED
= 'yes'
Properties for 'STANDBY' state:
DEFAULT_STATE = 'PHYSICAL-APPLY-ON'
EXPLICIT_DISABLE = 'no'
REQUIRED
= 'yes'
Current status for "prim_db":
SUCCESS
3. MAINTENANCE OPERATIONS IN A DRC
----------------------------------

=> Switch the standby database between read-only and recovery mode:
DGMGRL> alter resource 'standby_db' on site 'standby_site'
set state = 'READ-ONLY';
Succeeded.
DGMGRL> alter resource 'standby_db' on site 'standby_site'
set state = 'PHYSICAL-APPLY-ON';
Succeeded.
=> Put the DRC in MaxProtection mode (Oracle9.2 onwards)
DGMGRL> alter resource 'prim_db' set property LogXptMode = 'SYNC';
Property "logxptmode" updated.
DGMGRL> alter resource 'standby_db' set property LogXptMode = 'SYNC';
Property "logxptmode" updated.
DGMGRL> alter configuration set protection mode as 'MaxProtection';
Operation requires restart of site "prim_site"
Shutting down site prim_site...
Database closed.
Database dismounted.
ORACLE instance shut down.
Restarting site prim_site...
Started "prim_site" as new primary
=> Graceful switchover from primary to standby (Oracle 9.2 onwards)
(takes around 3 minutes on a laptop)
DGMGRL> switchover to 'standby_site';
Performing switchover NOW. Please wait...
Operation requires restart of site "prim_site"
Operation requires restart of site "standby_site"
Shutting down site prim_site...
database not mounted
ORACLE instance shut down.
Shutting down site standby_site...
database not mounted
ORACLE instance shut down.
Restarting site prim_site...
Restarting site standby_site...
Started "prim_site" as standby
Started "standby_site" as new primary
Switchover succeeded. New primary is "standby_site"

4. DEBUG AN ERRONEOUS SITUATION IN A DRC


---------------------------------------=> View configuration status
DGMGRL> show configuration;
Configuration 'V920_DRC' is
Primary Site is 'prim_site'
Standby Site is 'standby_site'
Current status for "V920_DRC":
Warning: ORA-16608: one or more sites have warnings
=> ORA-16608 indicates that one or more sites have warnings.
Find out which site has a warning.
DGMGRL> show site 'prim_site';
Site 'prim_site' is
Hostname is 'BEL716'
Instance name is 'V920'
Service name is 'R920'
Standby is maintained as 'physical'
Site has 1 resource
Resource is 'prim_db'
Current status for "prim_site":
Warning: ORA-16609: one or more resources have failed
=> Primary site has a problem because its only resource 'prim_db'
is not working (as indicated by ORA-16609)
DGMGRL> show resource 'prim_db';
Resource 'prim_db' on site 'prim_site'
depends on 'prim_site'
Current status for "prim_db":
Error: ORA-16778: The log transport service for some site has an error
=> Resource 'prim_db' is not working because the redo/archive logs
cannot be transported to the standby site
DGMGRL> show site 'standby_site';
Site 'standby_site' is
Hostname is 'BEL716'
Instance name is 'V920STBY'
Service name is 'R920STBY'
Standby is maintained as 'physical'

Site has 1 resource


Resource is 'standby_db'
Current status for "standby_site":
Warning: ORA-12541: TNS:no listener
=> We can not transport the logs because the listener on the standby
site is down.
=> ACTION: Start the listener on the standby database
DGMGRL> show site 'standby_site';
Site 'standby_site' is
Hostname is 'BEL716'
Instance name is 'V920STBY'
Service name is 'R920STBY'
Standby is maintained as 'physical'
Site has 1 resource
Resource is 'standby_db'
Current status for "standby_site":
Warning: ORA-01034: ORACLE not available
=> We can not connect to the DMON process of the standby database
because the database is down.
=> ACTION: Start the standby database in nomount state
DGMGRL> show configuration;
Configuration 'V920_DRC' is
Primary Site is 'prim_site'
Standby Site is 'standby_site'
Current status for "V920_DRC":
SUCCESS
=> The standby database has been successfully mounted in recovery
mode by the Data Guard Broker.
RELATED DOCUMENTS
----------------[NOTE:180031.1] Creating a Data Guard Configuration.
.
Copyright 2005, Oracle. All rights reserved. Legal Notices and Terms of
Use.

You might also like