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.
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.