With GDS, you can choose to configure client connections to be routed among a set of replicated databases in a local region. This capability allows you to maximize application performance by avoiding the network latency overhead of accessing databases in remote areas.

The diagram shows SALES GDS Pool in two different deployments setups:

Deployment 1: Geo-Aware Workload Routing for Active-Active Oracle GoldenGate

GDSCTL>add service -service order_entry_srvc -gdspool sales -preferred_all -locality LOCAL_ONLY -region_failover

In an active-active setup, regional RW workloads may be serviced by local (regional) database replicas.  Alternatively, both RW and RO regional workloads can be processed locally or uniformly across replicas. The regional RO workloads may be serviced by local (regional) database replicas.  Alternatively, both RW and RO regional workloads can be processed locally or uniformly across replicas.

Deployment 2: Geo-Aware Workload Routing for Active-Passive Oracle Data Guard Standby

GDSCTL>add service -service reporting_srvc -gdspool sales -preferred_all -role PHYSICAL_STANDBY -locality LOCAL_ONLY -region_failover

Regional affinity does not apply to RW workloads in an active-passive setup. RW workloads are always processed on the primary database, regardless of its region. In a multi-standby environment (e.g., reader farm), RO workloads can be processed on a regional standby database to optimize performance and reduce latency.


Example TNS Entry in Client A and Client B tnsnames.ora:

order_entry_srvc =

(DESCRIPTION=(CONNECT_TIMEOUT=90)(RETRY_COUNT=30)(RETRY_DELAY=3)(TRANSPORT_CONNECT_TIMEOUT=3)

 (FAILOVER=ON)

  (ADDRESS_LIST=

    (LOAD_BALANCE=ON)         

    (ADDRESS=(PROTOCOL=TCP)(HOST=GSM-EAST)(PORT=1522))

    (ADDRESS=(PROTOCOL=TCP)(HOST= GSM-EAST2)(PORT= 1522))

    (ADDRESS=(PROTOCOL = TCP)(HOST=GSM-EAST3)(PORT=1522))

)

  (ADDRESS_LIST=

    (LOAD_BALANCE=ON)    

    (ADDRESS=(PROTOCOL=TCP)(HOST=GSM-WEST)(PORT=1522))

    (ADDRESS=(PROTOCOL=TCP)(HOST= GSM-WEST2)(PORT= 1522))

    (ADDRESS=(PROTOCOL = TCP)(HOST=GSM-WEST3)(PORT=1522))

 )

 (CONNECT_DATA=

   (SERVICE_NAME=order_entry_srvc.sales.oradbcloud) (REGION=EAST)

)

Example TNS Entry in Client C and Client D tnsnames.ora:

reporting_srvc =

(DESCRIPTION=(CONNECT_TIMEOUT=90)(RETRY_COUNT=30)(RETRY_DELAY=3)(TRANSPORT_CONNECT_TIMEOUT=3)

 (FAILOVER=ON)

  (ADDRESS_LIST=

    (LOAD_BALANCE=ON)         

    (ADDRESS=(PROTOCOL=TCP)(HOST=GSM-EAST)(PORT=1522))

    (ADDRESS=(PROTOCOL=TCP)(HOST= GSM-EAST2)(PORT= 1522))

    (ADDRESS=(PROTOCOL = TCP)(HOST=GSM-EAST3)(PORT=1522))

)

  (ADDRESS_LIST=

    (LOAD_BALANCE=ON)    

    (ADDRESS=(PROTOCOL=TCP)(HOST=GSM-WEST)(PORT=1522))

    (ADDRESS=(PROTOCOL=TCP)(HOST= GSM-WEST2)(PORT= 1522))

    (ADDRESS=(PROTOCOL = TCP)(HOST=GSM-WEST3)(PORT=1522))

 )

 (CONNECT_DATA=

   (SERVICE_NAME=reporting_srvc.sales.oradbcloud) (REGION=WEST)

)