Skip to Main Content
  • Questions
  • Difference between GDS and standard Oracle Services

Breadcrumb

Question and Answer

Connor McDonald

Thanks for the question, Diego.

Asked: January 17, 2020 - 9:22 am UTC

Last updated: January 21, 2020 - 1:26 am UTC

Version: Oracle 12.2

Viewed 1000+ times

You Asked

Hi,
I have to implement an HA DBMs system.

In order to allow clients to have near-zero downtime, the Production (Primary DB) environment and Disaster Recovery (Standby DB) should have the same service name.

The Primary and the Standby Database are in sync with the Active Data Guard and the services registered are:

- Local service in Primary Database called ha_prv
- Local service in Standby Database called ha_prv
- Global Database service (registered under GSM in the DGPOOL that contains the brokerconfiguration) called dgtst_ha.dgpool.oradbcloud. This Global DB Service has been defined in the following way under gdsctl:

add service -service DGTST_HA -gdspool DGPOOL -preferred_all -failovermethod BASIC -failovertype SELECT -notification TRUE -role PRIMARY 


The primary server is called PRIMHOST and the standby is STBYHOST.

So, which is the difference between the following tnsnames:

GSM_HA=
(DESCRIPTION_LIST=
 (LOAD_BALANCE=off)
 (FAILOVER=on)
 (DESCRIPTION =
 (CONNECT_TIMEOUT=10)(RETRY_COUNT=3)
 (ADDRESS_LIST=
 (ADDRESS=(PROTOCOL=tcp)(HOST=PRIMHOST)(PORT=1571))
 (ADDRESS=(PROTOCOL=tcp)(HOST=STBYHOST)(PORT=1572)))
 (CONNECT_DATA=(SERVICE_NAME = dgtst_ha.dgpool.oradbcloud))
 )
)


HA_PRV=
(DESCRIPTION_LIST=
 (LOAD_BALANCE=off)
 (FAILOVER=on)
 (DESCRIPTION =
 (CONNECT_TIMEOUT=10)(RETRY_COUNT=3)
 (ADDRESS_LIST=
 (ADDRESS=(PROTOCOL=tcp)(HOST=PRIMHOST)(PORT=1521))
 (ADDRESS=(PROTOCOL=tcp)(HOST=STBYHOST)(PORT=1521)))
 (CONNECT_DATA=(SERVICE_NAME = ha_prv))
 )
)


I there some way, with GDS, to define only a VIP in order to give directly one host name to clients?

Thanks.

and Connor said...

Personally I think GDS might be a little bit of overkill for your setup, unless you are planning on running core parts of your application against the data guard node as well, but anyway, the difference is that your GDS tnsnames points to the GDS servers not your database servers.

So your second tnsnames would normally be something like:

GSM_HA=
(DESCRIPTION_LIST=
(LOAD_BALANCE=off)
(FAILOVER=on)
(DESCRIPTION =
(CONNECT_TIMEOUT=10)(RETRY_COUNT=3)
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=gsmhost1)(PORT=1571))
(ADDRESS=(PROTOCOL=tcp)(HOST=gsmhost2)(PORT=1572)))
(CONNECT_DATA=(SERVICE_NAME = dgtst_ha.dgpool.oradbcloud))
)
)

where your GDS servers are *different* machines to your database. (The point of GDS is that it sits "outside" the databases so it can direct traffic to those databases which are either available or best suited for a particular request).

Then "dgtst_ha.dgpool.oradbcloud)" could be a service that is provided by 1 or 2 or *dozens* of different databases in different data centres each providing a primary of replica of your database.

There is a good white paper on this here

https://www.oracle.com/technetwork/database/availability/maa-globaldataservices-3413211.pdf

I'm not sure I see the need for VIP for the GDS hosts because they are redundant copies of each other and we simply try them in turn.

Is this answer out of date? If it is, please let us know via a Comment